小编And*_*din的帖子

功能属性

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

def flongname():
    pass

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

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

python python-2.7

3
推荐指数
1
解决办法
97
查看次数

用字符串设置python对象/变量的名称

大多数人可能会说这是一个坏主意。我想使用字符串的内容作为变量的名称。我想完成可怕的事情:

s = 'x'
x = 1
Run Code Online (Sandbox Code Playgroud)

变量名x(不知何故?)来自 string 的地方s

要回答“为什么?”,假设我有一个全局默认值x,我想要在函数中覆盖的选项。但:

x = 0
def f(**kw):
    print x
f(x=1)
Run Code Online (Sandbox Code Playgroud)

打印01。如果我可以使用 kw.keys() 中的字符串重新分配x(或任何其他全局设置的变量),那么我会很高兴。

我意识到,这适用于重新分配xf

x = 0
def f(x=x):
    print x
f(x=1)
Run Code Online (Sandbox Code Playgroud)

但是我想在我的命名空间中有许多变量的情况下这样做,我可能在某个时候想要覆盖而不重写我的模块中的每个函数定义。

python string function keyword argument-passing

3
推荐指数
1
解决办法
1万
查看次数