我想使用函数属性来设置变量值,作为使用全局变量的替代但有时我会给函数指定另一个短名称这个行为似乎总是做我想做的事情,也就是说,无论我使用长名称还是短名称,都会将值分配给函数,如下所示这里面有危险吗?

def flongname():
    pass

f = flongname
f.f1 = 10
flongname.f2 = 20
print flongname.f1, f.f2

最后一行返回10 20,显示不同的函数名引用同一个函数对象。对吗?

最佳答案

id表示fflongname都是对同一对象的引用。

>>> def flongname():
...     pass
...
>>> f = flongname
>>> id(f)
140419547609160
>>> id(flongname)
140419547609160
>>>

所以是的-你所经历的行为是意料之中的。

10-04 19:17