欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

函数

程序员文章站 2022-07-12 10:02:14
...

一、匿名函数

匿名函数lambda:没有名字的函数
特点:
临时存在,用完就销毁
匿名函数通常不会单独使用,配合内置函数一起使用

lambda x,y : x+y

解释:左边的相当于函数的形参,右边相当于函数的返回值

1.求和普通方法

def my_sum(x, y):
    return print(x+y)
my_sum(1, 2)

函数

2.匿名函数配合内置求和:

res = (lambda x, y: x+y)(11, 20)
print(res)

函数

二:比较薪资,返回人名:

k = {'jeff': 8000,
     'nick': 1000,
     'tank': 3000,
     'mary': 10000,
def index(name):

  return k[name]
  print(max(k, key=index)) # 函数返回什么比较什么


# max内置函数,第一步:拿到字典key(jeff)
                第二步,把key传给index函数
                第三步,执行index(jeff),返回字典k[jeff],5000
                第四步,依次拿到5000,1000,3000,10000,进行比较
                第五步,返回最大值对应的人名
"""
 

函数

2.把index写成匿名函数:

print(max(k, key=lambda name: k[name]))
print(min(k, key=lambda name: k[name]))

函数

三、补充ascll码表:

"""
A-Z 65-90
a-z 97-122
"""
print(chr(122)) #查看ascll码对应的值

函数

二、函数的递归

1.特点

1.函数在调用阶段直接或间接的又调用自己

2.递归函数不需要考虑循环的次数,只需把握结束的条件

# 查看递归深度:默认1000

import sys
print(sys.getrecursionlimit())  # 不是很精确

1.递归死循环:

def index():
    print("这是第一个函数")
    login()

def login():
    print("这是第二个函数")
    index()

index()

函数

2.函数的递归分为两个阶段:

  1.回溯:重复的过程,一层层降低难度

  2.递推:一层层往回推导的过程

要求:
第一个人18岁,第二个人比第一个人大两岁,第三个人比第二个人大两岁,第四个人比第三个人大两岁。。。
age(5)=age(4)+2
age(4)=age(3)+2
age(3)=age(2)+2
age(2)=age(1)+2
age(1)=18

函数

def age(n):
    if n == 1:
        return 18
    return age(n-1) + 2
res = age(5)   # 第五个人的年龄
print(res)

3.递归使用的例子:依次打印列表中的数据

复杂度降低:列表越来越短

递归函数:

l = [1 ,[2 ,[3 ,[4 ,]]]]
def main(l):
    for i in l:
        if type(i )is int:  # 判断是否为整型
            print(i)
        else:
            main(i)
main(l)

三、局部全局修改

global:局部修改全局 ,逗号隔开修改全局
nonlocal:局部修改局部,逗号隔开修改全局

1.局部修改全局

关键字 global 申明

# global 局部修改全局
x = 1
def func():
    global x  # 修改全局变量
    x = 2
func()
print(x)

2.局部修改局部

关键字 nonlocal 申明

# nonlocal 局部修改局部

def func():
    x = 1
    def func1():
        nonlocal x   # 声明修改局部
        x = 2
    func1()
    print(x)
func()

四、常用内置函数

1.map 映射 基与for循环

k = [1, 2, 3, 4, 5, 6]
print(list(map(lambda x: x + 1, k)))  # map 基与for循环   每一个数+1

2.zip拉链 基与for循环

  • 取最短的拉
k1 = [1, 2, 3, 4, 5]
k2 = ['jeff', 'tank', 'jason']
k3 = ['a', 'b', 'c']
print(list(zip(k1, k2, k3)))
# 结果:[(1, 'jeff', 'a'), (2, 'tank', 'b'), (3, 'jason', 'c')]

3.filter 过滤 基与for循环

k = [1, 2, 3, 4, 5]
print(list(filter(lambda x: x != 3, k)))   # 后面可以加条件

4.sorted 排序

k = ['jeff', 'tank', 'jason']
k.sort()   # 升序
k.sort(reverse=True)  # 降序
print(k)
print(sorted(k))  # 升序
print(sorted(k, reverse=True))  # 降序
k.reverse()              #逆序

5.reduce 额外的

from functools import reduce

from functools import reduce
k = [1, 2, 3]
print(reduce(lambda x, y: x+y, k, 10))   # 1+2+3+10   ,10是额外的
# 结果: 16

# 当初始值不存在的时候,按照下面的规律
# 第一次先获取两个元素 相加
# 之后每次获取一个与上一次相加的结果再相加

上一篇: 函数

下一篇: 函数