程序包范围的全局变量



我有一个简单的模块:

# first.py
def f(z): 
return eval(z)

和另一个模块:

# mod.py
from first import *
x = 20
print(eval("x+1"))
print(f("x"))

现在如果我们运行

bash$ python3 mod.py 

它将打印

21
Traceback (most recent call last):
File "mod.py", line 4, in <module>
print(f("x"))
File "/Users/chekadsarami/Documents/Python Projects/vPrint/first.py", line 2, in f
return eval(z)
File "<string>", line 1, in <module>
NameError: name 'x' is not defined

这是因为执行print(f("x"(时,它首先进入模块.py,变量x超出范围。

有没有办法避免这种情况,并让变量x从一个模块(mod(传递到另一个(first(?

如有任何帮助,我们将不胜感激。

CS-

不要使用eval((!!它使用起来很危险,会破坏你的程序。

除此之外,试试这个:

first.py

def f(z): 
return z

mod.py

from first import f
x = 20
print(eval("x+1"))
print(f(x+1))

相关内容

  • 没有找到相关文章

最新更新