- 主题:这个Python代码怎么理解?
如图:

--
FROM 112.50.54.*
有结果但不理解
【 在 easior 的大作中提到: 】
: 自己跑一下代码不就有结果了嘛
--
FROM 120.35.168.*
b=func() 函数调用参数为空,参数应该就是默认值的[ ]空列表,为什么这个“空”列表和上一次func()调用的ls是同一个?
【 在 Scolesath 的大作中提到: 】
: func(ls=[])是大忌
: 这样的话不管几次调用func,传进来的参数都是ls这一个实例,运行结果就会在ls这个实例里面累加。
: 正确的写法是func(ls=None),然后函数里判断if ls is None: ls=list()
: ...................
--
FROM 120.35.168.*
不是要结果
【 在 Jamesnewer 的大作中提到: 】
: 运行结果:[1, 1] [1, 1]
:
--
FROM 120.35.168.*
b=func()无参调用使用默认参数[ ]空列表,就算和上次调用同一个列表对象,为啥不初始化为空的[ ]列表?
【 在 poggy 的大作中提到: 】
:
: python参数传递, 在参数类型是容器的时候, 由于性能考量,实际上传递是引用, 而不是传容器内的值
: (如果, 需要传值则需要使用copy或deepcoy进行强制复制)。
: ...................
--
FROM 120.35.168.*
这个属性是啥属性,怎么查看?
【 在 easior 的大作中提到: 】
: 这个解释我会:
: 一切皆是对象,一个函数就是一个函数对象,它具有一些属性和方法
: 它的每次调用,实际上都是在执行该函数对象
: ...................
--
FROM 120.35.168.*
b=func()无参调用使用默认参数[ ]空列表,就算和上次调用同一个列表对象,为啥不初始化为空的[ ]列表?
【 在 LYMing1986 的大作中提到: 】
: 默认的空list只生成一遍
: 所以是[1, 1] [1, 1]
--
FROM 120.35.168.*
这个题应该算偏题
【 在 kawolu 的大作中提到: 】
: 这就是py的随意性嘛,很恶心的,而用这种随意性出题,就更恶心了。
:
--
FROM 120.35.168.*
我试试看
【 在 annals 的大作中提到: 】
: In [4]: def g(x=[]):
: ...: pass
: ...:
: ...................
--
FROM 120.35.168.*
大概明白了
【 在 poggy 的大作中提到: 】
:
: 对象只是在创建的时候才会初始化, python是动态语言, 只有第一次调用生成缺省对象的时候才需要调用对象初始化函数, 以后调用, 由于已经存在了, 只需要生成引用。
: 如果, 每次都生成新对象, 并且做拷贝初始化, 那就是传值了。
: ...................
--
FROM 120.35.168.*