在python中的函数内部变量?

时间:2013-12-01 10:07:28

标签: python

我是新的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''')

1 个答案:

答案 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