前言
这次主要讲的内容是默认函数作用域值(缺省值)
一、默认函数作用域的介绍
1.先来在一串代码,分析一波:
def foo(x=1): # 形参都是局部变量
x += 1 # 有问题吗?没有,x=出现了,x就是foo函数的局部变量
print(x) #结果为:2
print(foo()) #结果为None
1.__defaults__用法:
def foo1(y=[]): # 如果没有缺省值
y.append(1) # y是局部变量,y参数不提供就使用缺省值,缺省值在哪里?保存在函数对象上
print(y)
print(foo1(), foo1())
print(foo1([]), foo1([]))
print(foo1.__defaults__) # 缺省值保存在了元组中,元组1个元素,是列表 #默认用元组保存的
#结果为:
None
[1,1]
None,None
[1]
[1]
None None
([1, 1],)
# 小白解释:由于重点---打印[1,1]后,[1,1]转变为[]在进行执行第二次的(print(foo1([]),foo1([]))
#这里没有return值,所以返会None值
这里为大家提供手写模板(图解代码)
2.keyword - only参数值的缺省值
#keyword - only参数值的缺省值
def foo(xyz, m=123, *, n='abc', t=[1, 2