2010-06-16 3 views
8

У меня очень элементарный вопрос.Python - выход из функций?

Предположим, я вызываю функцию, например,

def foo(): 
    x = 'hello world' 

Как получить функцию, чтобы вернуть х таким образом, что я могу использовать его в качестве входных данных для другой функции или использовать переменную внутри тела программы?

Когда я использую return и вызываю переменную в пределах других функций, я получаю NameError.

+5

Я действительно рекомендую вам прочитать учебник python здесь: http://docs.python.org/tutorial/index.html –

ответ

21
def foo(): 
    x = 'hello world' 
    return x # return 'hello world' would do, too 

foo() 
print x # NameError - x is not defined outside the function 

y = foo() 
print y # this works 

x = foo() 
print x # this also works, and it's a completely different x than that inside 
      # foo() 

z = bar(x) # of course, now you can use x as you want 

z = bar(foo()) # but you don't have to 
+1

вы забыли случай для «return x» таким образом, чтобы я мог использовать его как вход для другая функция ", которая проще всего сделать так" bar (foo()) ' –

+0

@Evan Plaice: Хорошая точка, спасибо. Я отредактировал свой ответ. –

2

Вы можете использовать global заявление, а затем добиться того, что вы хотите без возврата значения из функции. Например, вы можете сделать что-то вроде:

def foo(): 
    global x 
    x = "hello world" 

foo() 
print x 

Приведенный выше код напечатает «hello world».

Но, пожалуйста, будьте предупреждены, что использование «глобального» не является хорошей идеей, и лучше избегать использования, которое показано в моем примере.

Также проверьте это связанное обсуждение об использовании инструкции global в Python.

+2

Технически это решение вопроса Seafoid, но пифонически это худший сценарий (как вы уже указывали). –

Смежные вопросы