![](/img/trans.png)
[英]How can I call a variable defined inside a function from another file in Python?
[英]How can I change a variable defined in another file?
我有兩個文件:test1.py和test2.py
在test1.py中:
a = 1
def printa():
print a
在test2.py中:
from test1 import a, printa
a = 2
printa()
我有
1
但是如果我將test2.py更改為
import test1
test1.a = 2
printa()
我得到了2 。 它是如何工作的?
您遇到的是可變作用域。
如果導入所有test1,則可以訪問test 1中的變量,因為它們在您當前的操作范圍之內,因此直接訪問它並進行更改可以打印2。
在第二個代碼段中,您將定義一個局部變量a = 2,它與test1.a沒有關系,因此在打印時,它顯示test1.a的值為1。
換句話說,當您引用test1.a時,您正在訪問一個變量,但是當您定義局部a = 2時,這與printa()所引用的變量完全不同。 python中的變量在其范圍內創建和銷毀。 這樣,您可以在相同的python腳本中使用相同的名稱創建多個變量,而無需使用不希望的功能,只要它們被封裝在其作用域內即可。
嘗試同時打印兩個版本以查看差異。
import test1
a=2
print a
print test1.a
當您分配a=2
,它在test2.py的范圍內,並且test1.printa()方法仍然保留對test1中變量a的引用。
為了測試這個嘗試
import test1
from test1 import a, printa
a = 2
a #will return 2
test1.a #will still return 1
換句話說,當您設置a = 2時,您沒有更改類變量test1.a,它與內存中的test2.py中定義的a分開。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.