簡體   English   中英

導入模塊:函數內的全局變量

[英]import module : global variable within function

有兩個py文件。 實用程序

def add_sum():
    print(x + 3)

測試文件

from util import *
x=3
add_sum()

當我運行 test.py 時,出現錯誤:

Traceback (most recent call last):
File "test.py", line 45, in <module>
    add_sum()
File "util.py", line 10, in add_sum
    print(x + 3)
NameError: name 'x' is not defined

變量x是全局的,為什么函數無法到達x並引發錯誤?

Python 的“全局變量”只是定義它們的模塊的全局變量。這是設計使然 - 只有在確實無法避免它們時才應該使用全局變量,因為它會使代碼更難理解、測試和維護。

在您的情況下,正確的方法是明確地將x傳遞給您的函數:

 # util.py
 def add_sum(x):
     return x + 3

# test.py
# NB: star imports are evil too, for the very same reasons
from util import add_sum
x=3
print(add_sum(x))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM