2013-12-01 3 views
-1

Я новый питон & пытался использовать Eval выражение, как показано ниже в моем коде, , когда я называю some_func() (комментарии) Я получаю «NameError: имя„я“не определен» но когда я вызываю функцию try_print напрямую, как показано ниже, может печатать значение i,Определение переменной внутри функции в python?

В чем разница между вызовом 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''') 
+5

Мой бог .. Просто комментарий вне темы: Избегайте 'eval' в этом случае, pleeeease. –

ответ

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 
Смежные вопросы