我是新的python&我试图在我的代码中使用如下所示的eval表达式, 当我调用some_func()(注释)时,我得到“NameError:name'i'未定义” 但是当我直接调用try_print func时,如下所示能够打印i的值,
直接调用try_print有什么区别?通过功能?
如何使用some_func()实现此目的?
def try_print(string):
print eval(string)
def some_func():
global gameset
gameset = "gamese,gamese1"
for i in gameset.split(","):
try_print('''"Trying to print the value of %s" %i''')
#some_func()
gameset1 = "gamese,gamese1"
for i in gameset1.split(","):
try_print('''"here the value is printed %s" %i''')
答案 0 :(得分:2)
在some_func
中,i
是一个局部变量。并且无法在函数外部访问局部变量。
在第二种情况下,i
是一个全局变量,因此函数可以访问全局变量。
如果您想这样做,只需将i
传递给some_func
:
def try_print(string, i):
print eval(string)
def some_func():
global gameset
gameset = "gamese,gamese1"
for i in gameset.split(","):
try_print('''"Trying to print the value of %s" %i''', i)
但使用eval
并不是一个好主意,只需使用字符串格式:
print "Trying to print the value of %s" %i