- 主题:这个Python代码怎么理解?
class A():
def __init__(self):
print('in A')
def f(x=A()):
pass
if __name__ == '__main__':
print('main')
这段代码,虽然在执行时没有调用f(),但是会输出一次'in A',就是为了生成一个默认值x
【 在 ooolinux 的大作中提到: 】
: 不是很明白
--
FROM 221.216.209.62
大概明白了,感觉Python的有些东西初学者还是不太好把握的
【 在 annals 的大作中提到: 】
: class A():
: def __init__(self):
: print('in A')
: ...................
--
FROM 112.50.54.*
同一个列表对象,也就是旧的默认列表对象已生成,就不用再次初始化呀
这是python的feature,坑
【 在 ooolinux 的大作中提到: 】
: b=func()无参调用使用默认参数[ ]空列表,就算和上次调用同一个列表对象,为啥不初始化为空的[ ]列表?
--
FROM 115.171.216.*
确实,代码不像看起来那么直白自然
【 在 LYMing1986 的大作中提到: 】
: 同一个列表对象,也就是旧的默认列表对象已生成,就不用再次初始化呀
: 这是python的feature,坑
:
--
FROM 112.50.54.*
【 在 LYMing1986 的大作中提到: 】
: 同一个列表对象,也就是旧的默认列表对象已生成,就不用再次初始化呀
: 这是python的feature,坑
:
这个解释的比较形象啊
--
FROM 39.155.189.*
【 在 annals 的大作中提到: 】
: 人家文档里写了,为啥叫随意性
:
请问,哪里文档写了,
--
FROM 39.155.189.*
Important warning: The default value is evaluated only once. This makes a difference when the default is a mutable object such as a list, dictionary, or instances of most classes. For example, the following function accumulates the arguments passed to it on subsequent calls:
在官方文档的The Python Tutorial里就有
【 在 nokia0125 的大作中提到: 】
: 请问,哪里文档写了,
--
修改:annals FROM 221.216.209.62
FROM 221.216.209.62
如果你有其它语言经验,只是初学Python,看过tutorial后,
可以看Fluent Python和Python Cookbook
【 在 ooolinux 的大作中提到: 】
: 大概明白了,感觉Python的有些东西初学者还是不太好把握的
--
FROM 36.24.237.*
我找找看,太深入的也不打算了解
【 在 adoal 的大作中提到: 】
: 如果你有其它语言经验,只是初学Python,看过tutorial后,
: 可以看Fluent Python和Python Cookbook
:
--
FROM 120.35.168.*
也不是不能用,是不能修改,
如果是只读参数 默认参数用[]完全没问题
【 在 Scolesath 的大作中提到: 】
: func(ls=[])是大忌
: 这样的话不管几次调用func,传进来的参数都是ls这一个实例,运行结果就会在ls这个实例里面累加。
: 正确的写法是func(ls=None),然后函数里判断if ls is None: ls=list()
: ...................
--
FROM 106.37.206.*