Python学习笔记(持续更新)

一. 定义函数时,默认参数的问题

1. 默认参数值为不可变对象(例如常量)时:
i = 5

def f(arg=i):
    print(arg)

i = 6
f()

得到的结果将会是输出5.

2.默认参数为可变对象(例如列表、字典或类)时:
def f(a, L=[]):
    L.append(a)
return L

print(f(1))
print(f(2))
print(f(3))

这种情况下,输出的结果为:

[1]
[1, 2]
[1, 2, 3]

在python中默认值在函数定义作用域被解析,在代码运行前需要编译,绑定具体的结果,给这个方法静态分配存储空间(参数也要分配存储空间,而且默认参数的存储空间是不变的)。

如果不想让默认值在后续调用中累积,可以采用如下方法定义函数:

def f(a, L=None):
if L is None:
    L = []
L.append(a)
return L
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值