簡體   English   中英

如何更改另一個文件中定義的變量?

[英]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.

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