功能属性

And*_*din 3 python python-2.7

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

def flongname():
    pass

f = flongname
f.f1 = 10
flongname.f2 = 20
print flongname.f1, f.f2
Run Code Online (Sandbox Code Playgroud)

最后一行返回10 20显示不同的函数名称引用相同的函数对象.对?

tMC*_*tMC 5

id表明两者fflongname是同一个对象的引用.

>>> def flongname():
...     pass
... 
>>> f = flongname
>>> id(f)
140419547609160
>>> id(flongname)
140419547609160
>>> 
Run Code Online (Sandbox Code Playgroud)

是的 - 你所经历的行为是预料之中的.