雲端計算開發教程:Python自動化運維開發實戰Python變數
今天這篇文章是給大家分享一些雲端計算開發教程,今天講解的是:Python自動化運維開發實戰Python變數.
python學習過程中會用到許多資料,那為了方便操作,需要把這些資料分別用一個簡單的名字代表,方便在接下來的程式中引用。
變數就是代表某個資料(值)的名稱。簡單點說變數就是給資料起個名字
變數名稱的命名:
由字母數字下劃線組成的,且不能以數字開頭,不能使用關鍵字,區分大小寫。
命名慣例 :
1. 以單一下劃線開頭的變數名(_X)不會被 from module import *語句匯入
2. 前後有下劃線的變數名(_X_)是系統定義的變數名,對直譯器有特殊意義
3. 以雙下劃線開頭,但結尾沒有雙下劃線的變數名(__X)是類的本地變數
4. 透過互動模式執行時,只有單個下劃線的變數名(_)會儲存最後表示式的結果
python命名規範總結 :
模組名:小寫字母,單詞之間用_分割,比如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 counter
print miles
print name
多個變數賦值 :
Python允許你同時為多個變數賦值。
例如:
a = b = c = 1
以上例項,建立一個整型物件,值為1,三個變數被分配到相同的記憶體空間上。
同時為多個變數賦不同的值。
例如:
a, b, c = 1, 2, "john"
以上例項,兩個整型物件1和2的分配給變數a和b,字串物件"john"分配給變數c。
變數儲存資料的方式:
一般程式語言變數儲存資料的方式:
變數是計算機記憶體中的一塊區域,變數可以儲存規定範圍內的值,而且值是可變的。
在建立變數時會在記憶體中開闢一個空間。基於變數的資料型別,直譯器會分配指定記憶體,並決定什麼資料可以被儲存在記憶體中。因此,變數可以指定不同的資料型別,這些變數可以儲存整數,小數或字元。
比如c語言在宣告一個變數a之後,會在記憶體中開闢出一塊兒對應的空間,在此空間中可以儲存不同的值,也就是給變數賦予不同的值
python變數在記憶體中儲存值得方式和其他程式語言不同:
在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。 當同一個物件的應用或者是物件又被賦值給其他變數時,或者作為引數傳遞給函式,方法或類例項時,或者被賦值為一個視窗物件的成員時,該物件的一個新的引用,或者稱作別名,就被建立(則該物件的引用計數自動加1)
減少引用計數 :
當物件的引用被銷燬時,引用計數會減少。最明顯的例子就是當引用離開其作用範圍時,這種情況最經常出現在函式執行結束時,所有區域性變數都被自動銷燬,物件的引用計數也就隨之減少。
當變數被賦值給另外一個物件時,源物件的引用技術也會自動減1
其他造成物件的引用計數減少的方式包括使用del語句刪除一個變數,或者當一個物件的引用計數在以下情況會減少:
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
注意:在互動式直譯器中帶空格的物件引用次數永遠為3,但是在指令碼中回歸正常,例如: #!/usr/bin/env python # coding=utf8 fdaf import sys print sys.getrefcount("ab cd") a="ab cd" print sys.getrefcount("ab cd") b="ab cd" print sys.getrefcount("ab cd") c=b print sys.getrefcount("ab cd")
垃圾收集 :
不再被使用的記憶體會被一種稱為垃圾收集的機制釋放。像上面說的,雖然直譯器跟蹤物件的引用計數,但是垃圾收集器負責釋放記憶體。垃圾收集器是一塊獨立的程式碼,它用來尋找引用計數為0的物件,他也負責檢查那些雖然引用計數大於0但也該被銷燬的物件。特定情形會導致迴圈引用。
一個迴圈引用發生在當你有至少兩個物件互相引用時,也就是所說的引用都消失時,這些引用仍然存在,這說明只靠引用計數是不夠的。Python的垃圾收集器實際上是一個引用計數器和一個迴圈垃圾收集器。當一個物件的引用計數變為0,直譯器會暫停,釋放掉這個物件和僅有這個物件可訪問的其他物件,作為引用計數的補充,垃圾收集器也會留心被分配的總量很大(以及未透過引用計數銷燬的那些) 的物件。在這種情況下,直譯器會暫停下來,試圖清理所有為引用的迴圈。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69916964/viewspace-2647432/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算開發教程:Python自動化運維開發實戰流程控制Python運維
- 雲端計算開發技術Python自動化運維開發實戰二Python運維
- 雲端計算培訓學院,雲端計算Python自動化運維開發實戰Python運維
- 雲端計算Python自動化運維開發實戰 三、python檔案型別Python運維型別
- 雲端計算開發技術,Python自動化運維開發實戰三部分Python運維
- 好程式設計師分享Python自動化運維開發實戰四-變數程式設計師Python運維變數
- CrazyWing:Python自動化運維開發實戰 十七、PythonPython運維
- 雲端計算開發教程:Python運算子與表示式Python
- 雲端計算開發教程:Python資料型別之數字Python資料型別
- 函式計算自動化運維實戰3 -- 事件觸發自動建立快照函式運維事件
- 函式計算自動化運維實戰2 -- 事件觸發eip自動轉移函式運維事件
- 雲端計算影片教程:Linux大型網站高併發架構及自動化運維Linux網站架構運維
- 雲端計算開發教程,雲端計算能幹什麼?
- Python開發實戰Python
- 雲端計算的彈性和自動化運維淺析運維
- 雲端計算開發學習教程,Tomcat運維JVM 虛擬機器常識Tomcat運維JVM虛擬機
- Python自動化開發學習6Python
- python爬蟲實戰教程-Python爬蟲開發實戰教程(微課版)Python爬蟲
- 自動化運維工具 SaltStack 在雲端計算環境中的實踐運維
- 雲端計算開發學習教程,簡單介紹雲端計算
- 1+x雲端計算平臺運維開發初級實操題集合運維
- 函式計算自動化運維實戰1 -- 定時任務函式運維
- Python+Django+ansible playbook自動化運維專案實戰PythonDjango運維
- IT運維和自動化運維以及運維開發有啥不同?能解釋下嗎?運維
- 雲端計算開發學習教程,雲端計算基礎架構實現講解架構
- 雲端計算教程開發知識,學雲端計算有什麼用?
- Python 自動化測試開發大綱Python
- 學完Python自動化開發我可以做什麼?Python學習教程Python
- 《python運維和開發實戰-高階篇》視訊課程筆記Python運維筆記
- 用Python開發實用程式 – 計算器Python
- 讀《python 高效開發實戰》Python
- Python自動化運維之IPy模組Python運維
- PaaS雲端計算平臺,雲端計算程式開發
- 測試開發全棧之 Python 自動化全棧Python
- 用Python開發自動化測試指令碼Python指令碼
- 雲端計算和雲服務是一樣的嗎?計算機linux運維開發計算機Linux運維
- 《python運維和開發實戰-高階篇》視訊課程筆記二Python運維筆記
- 《Python高效開發實戰》實戰演練——開發Django站點1PythonDjango