好程式設計師分享Python自動化運維開發實戰四-變數
導語:
1.什麼是變數2.變數名稱的命名3.變數賦值4.變數儲存資料的方式5.引用計數
什麼是變數:
變數名稱的命名:
1. 以單一下劃線開頭的變數名(_X)不會被 from module import *語句匯入2. 前後有下劃線的變數名(_X_)是系統定義的變數名,對直譯器有特殊意義3. 以雙下劃線開頭,但結尾沒有雙下劃線的變數名(__X)是類的本地變數4. 透過互動模式執行時,只有單個下劃線的變數名(_)會儲存最後表示式的結果
模組名:小寫字母,單詞之間用_分割,比如ad_stats.py包名:和模組名一樣類名:單詞首字母大寫,比如AdStats ConfigUtil全域性變數名:大寫字母,單詞之間用_分割,比如UMBER COLOR_WRITE普通變數:小寫字母,單詞之間用_分割,比如this_is_a_var例項變數:以_開頭,其他和普通變數一樣,比如_price _instance_var私有例項變數(外部訪問會報錯):以__開頭(2個下劃線),其他和普通變數一樣 __private_var專有變數: __開頭,__結尾,一般為python的自有變數,不要以這種方式命名 __doc__ __class_
變數賦值:
#!/usr/bin/python# -*- coding: UTF-8 -*-counter = 100 # 賦值整型變數miles = 1000.0 # 浮點型name = "John" # 字串print counterprint milesprint name
Python允許你同時為多個變數賦值。例如:a = b = c = 1以上例項,建立一個整型物件,值為1,三個變數被分配到相同的記憶體空間上。同時為多個變數賦不同的值。例如:a, b, c = 1, 2, "john"以上例項,兩個整型物件1和2的分配給變數a和b,字串物件"john"分配給變數c。
變數儲存資料的方式:
變數是計算機記憶體中的一塊區域,變數可以儲存規定範圍內的值,而且值是可變的。在建立變數時會在記憶體中開闢一個空間。基於變數的資料型別,直譯器會分配指定記憶體,並決定什麼資料可以被儲存在記憶體中。因此,變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。 比如c語言在宣告一個變數a之後,會在記憶體中開闢出一塊兒對應的空間,在此空間中可以儲存不同的值,也就是給變數賦予不同的值
在Python中,變數名沒有型別,但物件有 變數名只是對物件的引用(內部實現為指標) python中是以資料為主,變數a只是相當於一個記憶體空間的標籤,a=1開闢一塊空間儲存1,之後重新複製a=2是重新開闢出新的空間儲存2,變數名稱a換了個位置指向新空間中的2同樣的地址空間可以有兩個或多個標籤,比如a=1,b=1實際上是a和b指向同一個地址空間檢視變數指向地址空間的地址:使用id(變數名稱)函式 >>> a=1 >>> id(a) 19882304 >>> b=1 >>> id(b) 19882304 上例發現同一個值賦值給不同變數,實際地址空間未發生變化,只是標籤發生了變化
PYTHON內部的引用計數(SYS.GETREFCOUNT):
Python內部記錄著所有使用中的物件有多少引用。一個內部跟蹤變數,稱為一個引用計數器。當物件被建立時,就建立了一個引用計數,當這個物件不再需要時,也就是說,這個物件的引用計數變為0時,它被垃圾回收。(這個只是形象的說一下,並不是嚴格的100%正確,但是通俗的理解往往是最好的學習方式)
當物件的引用被銷燬時,引用計數會減少。最明顯的例子就是當引用離開其作用範圍時,這種情況最經常出現在函式執行結束時,所有區域性變數都被自動銷燬,物件的引用計數也就隨之減少。
1. 一個本地引用離開了其作用範圍,比如函式結束2. 物件的別名被顯示的銷燬3. 物件的一個別名被賦值給其他的物件4. 物件被從一個視窗物件中移除5. 視窗物件本身被銷燬
>>> import sys>>> a="ab">>> sys.getrefcount("ab")3 第一次結果為3>>> b="ab">>> sys.getrefcount("ab")4 第二次結果+1>>> b=0 b引用了其他的物件(0),對於"ab"來講就取消了一個引用>>> sys.getrefcount("ab")3 結果在上次引用的基礎上-1
不再被使用的記憶體會被一種稱為垃圾收集的機制釋放。像上面說的,雖然直譯器跟蹤物件的引用計數,但是垃圾收集器負責釋放記憶體。垃圾收集器是一塊獨立的程式碼,它用來尋找引用計數為0的物件,他也負責檢查那些雖然引用計數大於0但也該被銷燬的物件。特定情形會導致迴圈引用。一個迴圈引用發生在當你有至少兩個物件互相引用時,也就是所說的引用都消失時,這些引用仍然存在,這說明只靠引用計數是不夠的。Python的垃圾收集器實際上是一個引用計數器和一個迴圈垃圾收集器。當一個物件的引用計數變為0,直譯器會暫停,釋放掉這個物件和僅有這個物件可訪問的其他物件,作為引用計數的補充,垃圾收集器也會留心被分配的總量很大(以及未透過引用計數銷燬的那些) 的物件。在這種情況下,直譯器會暫停下來,試圖清理所有為引用的迴圈。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913892/viewspace-2648024/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算開發教程:Python自動化運維開發實戰Python變數Python運維變數
- 好程式設計師Python培訓分享API自動化實戰詳解程式設計師PythonAPI
- 雲端計算開發技術Python自動化運維開發實戰二Python運維
- CrazyWing:Python自動化運維開發實戰 十七、PythonPython運維
- 雲端計算開發教程:Python自動化運維開發實戰流程控制Python運維
- 好程式設計師Python教程分享python之變數程式設計師Python變數
- 雲端計算Python自動化運維開發實戰 三、python檔案型別Python運維型別
- 雲端計算培訓學院,雲端計算Python自動化運維開發實戰Python運維
- 雲端計算開發技術,Python自動化運維開發實戰三部分Python運維
- 好程式設計師Python培訓分享四款Python程式庫程式設計師Python
- 函式計算自動化運維實戰3 -- 事件觸發自動建立快照函式運維事件
- 好程式設計師技術教程分享JavaScript運動框架程式設計師JavaScript框架
- 好程式設計師Python教程系列分享之Python語言元素之變數程式設計師Python變數
- 好程式設計師分享Web前端開發工具程式設計師Web前端
- 好程式設計師Python培訓分享開發工具推薦程式設計師Python
- 好程式設計師web前端分享js實現實戰案例程式設計師Web前端JS
- 函式計算自動化運維實戰2 -- 事件觸發eip自動轉移函式運維事件
- 好程式設計師Java教程分享Java開發工具程式設計師Java
- 好程式設計師Python培訓分享Python程式設計師面試技巧程式設計師Python面試
- 好程式設計師JavaScript教程分享JavaScript中變數和作用域程式設計師JavaScript變數
- 好程式設計師Java培訓分享HashMap成員變數解析程式設計師JavaHashMap變數
- Python+Django+ansible playbook自動化運維專案實戰PythonDjango運維
- 好程式設計師Java教程分享Java開發主流框架程式設計師Java框架
- 好程式設計師Web前端教程分享JavaScript開發技巧程式設計師Web前端JavaScript
- 好程式設計師web前端分享邏輯運算程式設計師Web前端
- 好程式設計師Java學習路線分享實戰Tomcat效能最佳化程式設計師JavaTomcat
- 好程式設計師web前端分享高度自適應程式設計師Web前端
- 函式計算自動化運維實戰1 -- 定時任務函式運維
- 好程式設計師Python教程系列分享之Python語言元素之運算子程式設計師Python
- 好程式設計師分享Web前端開發就業前景如何?程式設計師Web前端就業
- 好程式設計師Java培訓分享SpringBoot -自動配置原理程式設計師JavaSpring Boot
- 好程式設計師分享DDL之運算元據庫程式設計師
- IT運維之自動化運維運維
- 好程式設計師web前端分享移動前端開發和web前端開發的區別程式設計師Web前端
- 好程式設計師Java培訓分享Java之命名、標示符、變數程式設計師Java變數
- 好程式設計師web前端分享web測試之Js中的變數程式設計師Web前端JS變數
- 好程式設計師Python培訓分享函數語言程式設計之匿名函式程式設計師Python函數函式
- 好程式設計師web前端分享CSS3 漸變程式設計師Web前端CSSS3