Tôi có một chức năng mà tôi đang gọi từ mô-đun. Trong hàm, hai biến tôi đang cố gắng truy cập được tạo ra toàn cục. Khi tôi tự chạy mô-đun trong IDLE, tôi vẫn có thể truy cập các biến sau khi hàm kết thúc, như mong đợi. Khi tôi gọi hàm trong mã mà tôi đã nhập mô-đun vào, tôi không thể truy cập các biến.Truy cập các biến toàn cầu từ một hàm trong mô-đun đã nhập
#module to be imported
def globaltest():
global name
global age
name = str(raw_input("What is your name? "))
age = int(raw_input("What is your age? "))
Kết quả khi tôi tự chạy nó.
>>> globaltest()
What is your name? tom
What is your age? 16
>>> name
'tom'
>>> age
16
Và mã sẽ nhập mã.
import name_age
name_age.globaltest()
nhưng khi tôi cố gắng truy cập các biến trong mã mà tôi đã nhập.
What is your name? tom
What is your age? 16
>>> name
Traceback (most recent call last):
File "<pyshell#10>", line 1, in <module>
name
NameError: name 'name' is not defined
>>>
Làm cách nào để biến toàn cục trong mã mà tôi đã nhập mô-đun hoặc truy cập biến 'tên' hoặc 'tuổi' trong hàm.
khoảng xấu xa như globals. @badathings: _dont_ làm điều này. –
@bruno desthuilliers: ok, cảm ơn. –
Từ [PEP8] (http://legacy.python.org/dev/peps/pep-0008/#imports) * "Cần phải nhập khẩu ký tự đại diện (từ nhập *) vì chúng không rõ tên nào hiện diện trong không gian tên, gây nhầm lẫn cho cả người đọc và nhiều công cụ tự động ... "* –
SiHa