python函数之_默认值参数总结

1.默认值参数后的所有参数都必须是默认值参数,直到遇到任意参数列表
def f1(a = 2 ,b = 3, *c或**c):默认值参数后的参数必须都是默认值参数,直到遇到*/**(即可变参数)
    print(a, b, c)
f1(4, 6)

输出:
    3 4 ()或3 4 {}
2.默认值参数,传递新参数会覆盖该函数本地符号表中的值,不传递则使用默认值
    
3.默认值在函数定义范围内的函数定义点被评估

i = 5
def f(arg=i):
    print("arg = ", arg)
i = 6
f()
arg = 5
# ***对比自由变量名解析: 自由变量名在运行时解析,不是在编译时期***
i = 10
def f():
    print("i = ", i)
    i = 42
f()
i = 42

4.默认参数仅在函数定义完成后被评估一次

def f(a, L=[]):
    L.append(a)
    return L
print(f(1))
print(f(2))
print(f(3))

输出:
    [1]
    [1, 2]
    [1, 2, 3]
5.使用下面的方法可以避免默认值被后续调用共享

def f(a, L=None):
    if L is None:
       L = []
    L.append(a)
    return L
print(f(1))
print(f(2))
print(f(3))
输出:
    [1]
    [2]
    [3]

更新 2017年11月6日00:09:52

1.默认值参数说的是声明函数时的形参形式

2.关键字参数说的是调用函数时的形参的形式



你可能感兴趣的:(Python)