2025-09-10:仓库迁移
This commit is contained in:
37
7.函数/5.定义带有默认参数的函数.py
Normal file
37
7.函数/5.定义带有默认参数的函数.py
Normal file
@@ -0,0 +1,37 @@
|
||||
# 定义函数时,如果想要传入可选的参数,可以给参数加上默认值
|
||||
def span(a, b=42):
|
||||
print(a, b)
|
||||
|
||||
span(1)
|
||||
span(1, 2)
|
||||
|
||||
# 如果给参数指定默认值为None,那么该参数就可以传入可变容器
|
||||
def span_v2(a, b=None):
|
||||
print(a, b)
|
||||
span_v2(1, [1, 2])
|
||||
|
||||
# 但是如果你不想设置一个默认值,如果b没有传入参数那就提示,那么你需要给一个obj
|
||||
_no_value = object()
|
||||
def span_v3(a, b=_no_value):
|
||||
if b is _no_value:
|
||||
print("no b")
|
||||
|
||||
span_v3(1)
|
||||
|
||||
# 注意,函数的默认参数只会在函数首次被调用的时候绑定一次,函数第一次被调用后默认参数就不可变了
|
||||
x = 3
|
||||
def su_ka(a = x):
|
||||
print(a)
|
||||
su_ka(1)
|
||||
x = 4
|
||||
su_ka()
|
||||
|
||||
# 不要用【】这种地址型数据做默认参数,因为它真的可以在过程中被修改
|
||||
x = []
|
||||
def su_ka(a = x):
|
||||
print(a)
|
||||
su_ka()
|
||||
x.append(1)
|
||||
su_ka()
|
||||
|
||||
# 上面使用object作为空参数传入也有这方面的考量,因为用户的输入是不可预知的,而obj几乎不可能被用户创建
|
Reference in New Issue
Block a user