python3 中函数的相关问题

1、不定参数

2、默认参数

默认参数的值仅仅在函数定义的时候赋值一次

x = 42
def spam(a, b=x):
    print(a, b)

spam(1) # 1 42
x = 23 # 改变 x 的值的时候对默认参数值并没有影响
spam(1) # 1 42

默认参数的值应该是不可变的对象,比如 None、True、False、数字或字符串

def spam(a, b=[]): # error []、{} 等为可变对象

此时,可以试用None作为默认值,然后在函数里面检查它,给予相应的默认值

def spam(a, b=None):
    if b is None:
        b = []

 3、匿名函数

x = 10
func1 = lamda y: x + y
x = 20
func2 = lamda y: x + y

func(10) # 30 
func2(10) # 30

 lambda 表达式中的 x 是一个自由变量,在运行时绑定值,而不是定义时就绑定,与函数的默认参数定义是不同的,如下所示

funcs = [lambda x: x + n for n in range(5)]
for f in funcs:
  print(f(0)) # 结果全是4,因为n的值在函数运行时为4
在孤独中思考,在思考中成熟,在成熟中升华
原文地址:https://www.cnblogs.com/laogaoyang/p/7228197.html