我有一个简单的模块:
# 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))