簡體   English   中英

Python模塊與其他模塊的操作

[英]Python module manipulation with other modules

我今天在鬼混python模塊,發現一些有趣的東西。 假設您有一個像這樣的模塊:

# mymodule

value = "default"

def setVal(new):
    value = new

def getVal():
    return value

現在,您有了另一個導入mymodule的模塊。 當您在python shell中運行模塊時,會發生以下情況:

>>> moduleC.setC("newvalue")
>>> moduleC.getC()
'default'
>>> moduleC.Cval = "new value"
>>> moduleC.getC()
'new value'

為什么在使用函數的模塊中設置變量的值不起作用,但是使用“ =”分配變量呢?

在setVal中, value是該函數的局部value ,並且在該函數返回時“消失”。 要使其對模塊是全局的,必須這樣聲明。 即使它是不必要的,這也將按照您希望的那樣進行(與getVal()一樣)。

def setVal(new):
    global value
    value = new

您可以運行下面的代碼,看看發生了什么

value = 123

def setVal(new):
    value = new
    print globals()
    print locals()

def getVal():
    return value


setVal(22222)
print getVal()

接着:

value = 123

def setVal(new):
    global value
    value = new
    print globals()
    print locals()

def getVal():
    return value


setVal(22222)
print getVal()

編輯:如果要在方法中使用全局變量value ,只需聲明要使用的只是全局變量,而不是新創建的變量。 如果不是,將創建一個名為value的局部變量,然后有兩個名為value變量-全局變量(123)和局部變量(等於參數new)。

暫無
暫無

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

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