您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關在Python中定義變量的方法的內容。小編覺得挺實用的,因此分享給大家做個參考。一起跟隨小編過來看看吧。
我們首先看一下變量的分類,通常情況下,我們所說到的定義一個變量,如果沒有特殊說明,那么就是定義一個全局變量。
全局變量
在模塊內、在所有函數外面、在class外面,這就是全局變量
局部變量
在函數內、在class的方法內(未加self修飾),這就是局部變量
靜態變量
在class內的,但不在class的方法內的,這就是靜態變量
實例變量
在class的方法內的,用self修飾的變量,這就是實例變量
全局變量
全局變量供全局共享,全局類和函數均可訪問,達到同步作用。同時還可以被外部文件訪問。
使用
全局變量使用的時候,需要用global顯示聲明。
一般情況下,如果函數直接調用全局變量,不做更新的話,一般沒有問題,但如果有重新賦值,又沒有在函數內部使用 global聲明的話, 就相當于在內部創建了一個同名的局部變量,局部變量優先級要高于全局變量。
# coding:utf-8 _all = 'HelloWorld' # 全局變量 _all_list = [] # 全局變量 def printall(): global _all # 這里需要用global顯示聲明 print _all # HelloWorld
局部變量
# coding:utf-8 def show(): city = 'Beijing' # 局部變量 print city
靜態變量
可以稱為是類變量,通過類名可以直接訪問,也可以通過實例名直接訪問,此變量在類中全局共享,實例之間也是全局共享。可以看下面實例
# coding:utf-8 class foo: all = 0 def add(self): foo.q += 1 instance01 = foo() # 實例化對象1 instance02= foo() # 實例化對象2 print instance01.all # 執行結果為:0 print instance02.all # 執行結果為:0 print foo.all # 執行結果為:0 instance01.add() print instance01.all # 執行結果為:1 print instance02.all # 執行結果為:1 print foo.all # 執行結果為:1 instance02.add() print instance01.all # 執行結果為:2 print instance02.all # 執行結果為:2 print foo.all # 執行結果為:2
實例變量
對于模塊來說,有了自己的全局變量,可以供自己內部的類,函數使用,同步;對于函數或者類方法來說,有了自己的局部變量,供自己內部使用;對于類,有了靜態變量,可以供內部和有繼承關系的父子之際使用,同步;但實例之間各自的私有變量(局部變量)就要靠實例變量了,實現了動態綁定,多態特性。
用self來修飾
# coding:utf-8 class foo: all = 0 def __init__(self, name): self.name = name def add(self): foo.q += 1 instance01 = foo('hello') instance02 = foo('hi') print instance01.name # hello print instance02.name # hi print foo.name # AttributeError:class foo has no attribute 'name'
總結
在整個代碼組織的過程中,一般會有這樣兩種基本需求,私有 和 公有。
私有
不與其他共享,自己獨享,如函數和方法的局部變量,實例變量
公有
需要在一定范圍內共享,達到同步目的,如模塊內的代碼共享的全局變量,類與子類之間共享的靜態變量。
感謝各位的閱讀!關于在Python中定義變量的方法就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。