【问题标题】:Adding variables to global space using globals() [duplicate]使用 globals() 将变量添加到全局空间 [重复]
【发布时间】:2021-11-02 19:19:31
【问题描述】:

我正在使用 globals() 和 locals() 来查看全局和局部空间中的变量。但是我可以使用 globals() 将变量添加到全局空间,但不能使用 locals() 添加局部变量。

x=10
def show():
    y=20
    locals()['k']=40
    print(locals()['k'])
    print("k=",k)# generates error
    

show()
print(globals())
globals()['newkey']=77
print(globals())
print("newkey=",newkey)# shows error in editor typing but runs properly

我们如何使用局部变量添加局部变量

【问题讨论】:

标签: python


【解决方案1】:

使用locals/globals 字典初始化,您将初始化拆分为一个密钥对,一个带有变量标识符及其值的字符串。因此,每次您需要该值时,您都必须将字符串作为字典键或要评估的字符串来处理。

def a():
    locals()['k'] = 40
    print('k' in locals())

    print(f"k={locals()['k']}") # dict-way

    print(f"k={eval('k')}") # eval-way

输出

True # so it is in the name space!
k=40
k=40

备注:如果您尝试直接调用变量k,编译器将报错引发NameError: name 'k' is not defined 异常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2022-01-28
    相关资源
    最近更新 更多