標籤:基礎 python 核心風格
目錄
一.語句和文法
二.變數定義與賦值
三.記憶體管理
記憶體管理:
引用計數:
簡單例子
四.python對象
五.標識符
六.專用底線標識符
七.編寫模組基本風格
八.示範
一.語句和文法
#:注釋
\:轉譯斷行符號,繼續上一行,在一行語句較長的情況下可以使用其來切分成多行,因其可讀性差所以不建議使用
;:將兩個語句串連到一行,可讀性差,不建議使用
::將代碼的頭和體分開
語句(代碼塊)用縮排方式體現不同的代碼層級,建議採用4個空格(不要使用tab)
python檔案以模組的方式組織,編寫一個.py結尾的檔案實際上就寫了一個模組
二.變數定義與賦值
a=1:1為記憶體變數存放於記憶體中,a為變數的引用,python為動態語言,變數及其類型均無需事先宣告類型
與c的區別:a=1無傳回值
註:
c語言變數聲明必須位於代碼最開始,而且要在所有語句之前
c++,java可以隨時隨地聲明變數,但是必須聲明變數名字和類型
python也可以隨時隨地聲明變數,但是變數在被定義時,解譯器會根據等式右側的值來決定其類型
變數必須先賦值,才可使用
回到頂部
三.記憶體管理
記憶體管理:
變數無須指定類型
程式員無須關心記憶體管理
變數會被自動回收
del能夠直接釋放記憶體對象(減少對象的引用計數)
回到頂部
引用計數:
增加引用計數
對象被建立並將其引用賦值給變數,引用計數加1(例a=1)
同一個對象的引用又賦值給其它變數,引用計數加1(例b=a)
對象作為參數被函數調用,引用計數加1(例int(a)
對象成為容器物件中的一個元素,引用計數加1(例list_test=[‘alex‘,‘z‘,a])
減少引用計數
a作為被函數調用的參數,在函數運行結束後,包括a在內的所有局部變數均會被銷毀,引用計數減1
變數被賦值給另外一個對象,原對象引用計數減1(例b=2,1這一記憶體對象的引用只剩a)
使用del刪除對象的引用,引用計數減1(例del a)
a作為容器list_test中的一個元素,被清除,引用計數減少(例list_test.remove(a))
容器本身被銷毀(例del list_test)
注意:python記憶體回收交給一段獨立的代碼即記憶體回收行程(包含引用計數器和迴圈垃圾收集器),引用計數在歸零時並不會立即清除(可能有迴圈調用)
不必糾結循環參考收集,只需記住記憶體回收行程幫你自動清理記憶體。
例:
x=1 #建立記憶體變數1,將變數1的引用傳給x,此刻1的引用計數為1y=x #1的引用計數增加到2y=2 #建立新的記憶體變數2,將變數2的引用傳給y,原本指向1的y,此刻給了2,所以1的引用計數減少到了1del x #刪除了記憶體對象1的引用x,此刻1再無引用,此刻它就成了python解譯器回收的目標
650) this.width=650;" src="http://images2015.cnblogs.com/blog/1036857/201610/1036857-20161007220845957-728048402.png" alt="1036857-20161007220845957-728048402.png" />
650) this.width=650;" src="http://images2015.cnblogs.com/blog/1036857/201610/1036857-20161007220903004-166175292.png" alt="1036857-20161007220903004-166175292.png" />
650) this.width=650;" src="http://images2015.cnblogs.com/blog/1036857/201610/1036857-20161007220916035-1996753851.png" alt="1036857-20161007220916035-1996753851.png" />
四.python對象
python中使用物件模型來儲存資料,用來產生資料類型的工廠函數本質上是類,建立資料的結果本質是執行個體化一個對象
對象有三種特性
身份:記憶體位址,可以用id()確認,id相同的就是同一個對象
類型:可以用type()查看,傳回值的type也是對象
值
五.標識符
定義:允許作為名字的有效字串集合
名字必須有實際意義,可讀性好
首字母必須是字母或底線(_)
剩下的字元可以是字母和數字或者底線
大小寫敏感
兩種風格:conn_obj或ConnObj
不能使用關鍵字,不能使用內建
關鍵字表:
650) this.width=650;" src="http://images2015.cnblogs.com/blog/1036857/201610/1036857-20161007211839207-47920036.png" alt="1036857-20161007211839207-47920036.png" />
六.專用底線標識符
_xxx:不能用from module import *匯入
__xxx__:系統定義名字
__xxx:類中私人變數
底線對於解譯器來說有特殊意義,而且是內建標識符所使用符號,不建議自訂變數以底線開頭
但是如果是類中的私人變數,__xxx將會是一個好習慣
補充:
系統變數__name__會根據python檔案被載入方式的不同得出不同的值
python檔案被當作模組匯入:__name__=模組名或者檔案名稱
python檔案被執行:__name__=‘__main__‘
在我們使用python編寫一個軟體時,應該只有一個主程式中包含大量頂級代碼(就是沒有縮排的代碼,
python解譯器讀取到頂級代碼會立即執行),其他.py檔案應該只有少量頂級代碼,所有功能都應該封裝
在函數或類中
通常在檔案結尾結合__name__變數,編寫測試代碼
七.編寫模組基本風格
1 標題
2 文檔注釋
3 模組匯入
4 變數定義
5 類定義語句
6 函數定義語句
7 主程式
8 測試代碼
八.示範
#_*_coding:utf-8_*_
#!/usr/bin/env python
‘‘‘
This is an example module
‘‘‘
import sys,os
debug=True
class Test:
‘‘‘
test class
‘‘‘
pass
def main():
‘‘‘
test func
:return:
‘‘‘
pass
if __name__ == ‘__main__‘:
main()
本文出自 “遊走的風” 部落格,請務必保留此出處http://774148515.blog.51cto.com/10937712/1894717
二、python基礎之核心風格