2010-06-16 29 views
8

Tôi có một câu hỏi rất thô sơ.Python - đầu ra từ các hàm?

Giả sử tôi gọi một chức năng, ví dụ:

def foo(): 
    x = 'hello world' 

Làm thế nào để có được hàm trả về x theo cách như vậy mà tôi có thể sử dụng nó như là đầu vào cho chức năng khác hoặc sử dụng các biến trong cơ thể của một chương trình?

Khi tôi sử dụng trả lại và gọi biến trong một hàm khác, tôi nhận được một NameError.

+5

Tôi thực sự khuyên bạn nên đọc hướng dẫn python tại đây: http://docs.python.org/tutorial/index.html –

Trả lời

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

bạn đã quên trường hợp "trả về x theo cách mà tôi có thể sử dụng làm đầu vào cho một chức năng khác "dễ nhất để làm như thế này 'thanh (foo())' –

+0

@Evan Plaice: Tốt điểm, cảm ơn. Tôi đã chỉnh sửa câu trả lời của mình. –

3
>>> def foo(): 
    return 'hello world' 

>>> x = foo() 
>>> x 
'hello world' 
2

Bạn có thể sử dụng global tuyên bố và sau đó đạt được những gì bạn muốn mà không trở về giá trị từ hàm. Ví dụ: bạn có thể làm điều gì đó như sau:

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

foo() 
print x 

Mã trên sẽ in "hello world".

Nhưng hãy cảnh báo rằng việc sử dụng "toàn cầu" không phải là một ý tưởng hay và tốt hơn là tránh sử dụng được hiển thị trong ví dụ của tôi.

Đồng thời kiểm tra thảo luận liên quan này về cách sử dụng câu lệnh global bằng Python.

+2

Về mặt kỹ thuật, đây là một giải pháp cho câu hỏi của Seafoid, nhưng về mặt python, đó là trường hợp xấu nhất (như bạn đã chỉ ra). –

Các vấn đề liên quan