前言python
基礎語法,後附福利。編程
【1】先來個小程序鎮鎮場面小程序
提問:用遞歸法求正整數N的階乘app
回答:(SHOW TIME )編程語言
C語言版ide
C++版函數
Python版spa
是否是感受各有千秋呀?學過C或者C++的小夥伴們一塊兒來對比看看Python的獨特之處在哪裏吧?沒有學過的小夥伴也能看懂哦(偷偷告訴大家,這三種語言我都是小白哈哈)。操作系統
寫一個程序第一步寫什麼?想一想C或者其餘編程語言,沒錯就是頭文件。頭文件是C/C++程序不可缺乏的組成部分。使用頭文件,應該注意頭文件的做用和用法相關知識點。命令行
各種「頭文件」
腳本語言的第一行,目的就是指出,你想要你的這個文件中的代碼用什麼可執行程序去運行它。
#!/usr/bin/python : 是告訴操做系統執行這個腳本的時候,調用 /usr/bin 下的 python 解釋器,至關於寫死了python路徑;
#!/usr/bin/env python(推薦): 這種用法是爲了防止操做系統用戶沒有將 python 裝在默認的 /usr/bin 路徑裏。當系統看到這一行的時候,首先會到 env 設置裏查找 python 的安裝路徑,再調用對應路徑下的解釋器程序完成操做。
交互式編程:不須要建立腳本文件,是經過 Python 解釋器的交互模式進來編寫代碼。可是不能保存啊!
腳本式編程:經過腳本參數調用解釋器開始執行腳本,直到腳本執行完畢。當腳本執行完成後,解釋器再也不有效。 Python 腳本程序保存的 文件將以 .py 爲擴展名。這個就是能保存的啦!
①Python 標識符
在 Python 裏,標識符由字母、數字、下劃線(_)組成,但不能以數字開頭。
Python 中的標識符是區分大小寫的。
如下劃線開頭的標識符是有特殊意義的。以單下劃線開頭 _foo 的表明不能直接訪問的類屬性,需經過類提供的接口進行訪問,不能用 from xxx import * 而導入;以雙下劃線開頭的 __foo 表明類的私有成員;以雙下劃線開頭和結尾的 __foo__ 表明 Python 裏特殊方法專用的標識,如 __init__() 表明類的構造函數。
Python 能夠同一行顯示多條語句,方法是用分號 ; 分開。
② Python 保留字符
全部 Python 的關鍵字只包含小寫字母。它們已經被官方預訂,不能用做常數或變數,或任何其餘標識符名稱。
保留字符合集
Python 最有(bian)趣(tai)的地方就是,Python 的代碼塊不使用大括號 {} 來控制類,函數以及其餘邏輯判斷,而是用縮進來寫模塊。縮進的空白數量是可變的,可是全部代碼塊語句必須包含相同的縮進空白數量。
或許,Tab和空格打架了
錯誤也許意味着你使用的縮進方式不一致,有的是 tab 鍵縮進,有的是空格縮進,改成一致便可。由於在 Python 的代碼塊中必須使用相同數目的行首縮進空格數。
建議你在每一個縮進層次使用 單個製表符 或 兩個空格 或 四個空格 , 切記不能混用。
【注意!有空行出沒!】函數之間或類的方法之間用空行分隔,表示一段新的代碼的開始。類和函數入口之間也用一行空行分隔,以突出函數入口的開始。空行與代碼縮進不一樣,空行並非Python語法的一部分,但空行是程序代碼的一部分。書寫時不插入空行,Python解釋器運行也不會出錯。可是空行的做用在於分隔兩段不一樣功能或含義的代碼,便於往後代碼的維護或重構。
猶記得,碰見C和C++,/n即可以讓她們優雅轉身。但Python是個獨特的女孩子……
①(多行一條)Python語句中通常以新行做爲爲語句的結束符,可是簡單的斜槓( \)即可以將一行的語句分爲多行顯示,並且語句中包含 [], {} 或 () 括號就不須要使用多行鏈接符了哦!
\
不須要啦!
②(一行多條)Python語句之間使用分號(;)分割也能夠實如今同一行中使用多條語句;
③print 默認輸出是換行的,若是要實現不換行須要在變量末尾加上逗號 。
管它引號( ' )、雙引號( " )、三引號( ''' 或 """ ) 通通均可以用來表示字符串,可是引號的開始與結束必須是相同類型,先後一致哦!
三引號還能夠作註釋,嘻嘻(見下面)。
嘻嘻,回去看看我那個對比圖。
看到了吧,python中單行註釋採用 # 開頭,註釋能夠在語句或表達式行末。python 中多行註釋使用三個單引號(''')或三個雙引號(""")。
【官方解釋】代碼組:縮進相同的一組語句構成一個代碼塊。像if、while、def和class這樣的複合語句,首行以關鍵字開始,以冒號( : )結束,該行以後的一行或多行代碼構成代碼組。首行及後面的代碼組稱爲一個子句(clause)。
【小瀟兒理解】咱倆對齊咱倆好,咱倆就是代碼塊!
這個神祕操做就是用來用腳本形式執行Python時接收命令行輸入的參數的。一步步看吧。
①什麼是命令行選項和參數?,
也就是sys.argv。sys 的 sys.argv 獲取命令行參數,舉個例子就明白啦:
來個完整的例子!
注:sys.argv 是命令行參數列表;len(sys.argv) 是命令行參數個數;sys.argv[0] 表示腳本名。
②如何獲取命令行參數?
Python 提供了 getopt 模塊來獲取命令行參數。getopt模塊是專門處理命令行參數的模塊,用於獲取sys.argv。命令行選項使得程序的參數更加靈活。支持短選項模式(-)和長選項模式(--)。該模塊提供了兩個方法(getopt.getopt 方法和getopt.gnu_getopt方法)及一個異常處理(Exception getopt.GetoptError 在沒有找到參數列表,或選項的須要的參數爲空時會觸發該異常。異常的參數是一個字符串,表示錯誤的緣由。屬性 msg 和 opt 爲相關選項的錯誤信息)來解析命令行參數。
【getopt.getopt 方法:用於解析命令行參數列表,語法格式:getopt.getopt(args, options[, long_options])
方法參數說明:args: 要解析的命令行參數列表;options: 以列表的格式定義,options後的冒號(:)表示該選項必須有附加的參數,不帶冒號表示該選項不附加參數;long_options: 以字符串的格式定義,long_options 後的等號(=)表示若是設置該選項,必須有附加的參數,不然就不附加參數;該方法返回值由兩個元素組成: 第一個是 (option, value) 元組的列表。 第二個是參數列表,包含那些沒有'-'或'--'的參數。】
①非數字型的共同點:均可以使用切片、連接(+)、重複(*)、取值(a[])等相關運算;
這裏主要介紹一下切片,有了切片操做,不少地方循環就再也不須要了。Python的切片很是靈活,一行代碼就能夠實現不少行循環才能完成的操做。看看它的各類應用吧!
切片(地方循環被pass,因切片很是靈活,一行代碼就能夠實現不少行循環才能完成的操做)
②非數字型的不一樣點:列表能夠直接賦值,元組不能夠賦值,字典按照dict[k]=v的方式賦值。
③python 的全部數據類型都是類,能夠經過 type() 和 isinstance()查看變量的數據類型,區別就是: type()不會認爲子類是一種父類類型。isinstance()會認爲子類是一種父類類型。
上 type() 、下 isinstance()
二者區別
is 和 == 相似編譯原理中傳值與傳地址。又或者說是 is 只是傳遞的指針,判斷是否指向同一個地址塊,這樣 is 兩邊的參數指向內存中同個地址塊,畢竟個人手機跟你的手機不是同一個東西。而 == 則是僅僅判斷值相同
①交互模式下,若是變量寫在同一行,將會指向同一個對象;
python中會爲每一個出現的對象分配內存,哪怕他們的值徹底相等(是相等不是相同哦!),如執行a=2.0,b=2.0這兩個語句時會前後爲2.0這個Float類型對象分配內存,而後將a與b分別指向這兩個對象。因此a與b指向的不是同一對象;
可是爲了提升內存利用效率對於一些簡單的對象,如一些數值較小的int對象,python就採起重用對象內存的辦法。如指向a=2,b=2時,因爲2做爲簡單的int類型且數值小,python不會兩次爲其分配內存,而是隻分配一次,而後將a與b同時指向已分配的對象。如但果賦值的不是2而是大的數值,狀況就跟前面的同樣了;
交互模式
②腳本模式
若是使用腳本運行,腳本模式 is 和 == 結果是同樣的,不論是否同一行,都是指向同一個地址:
腳本模式
最後附上神祕福利連接,配合食用效果更佳哦!
http://mp.weixin.qq.com/s/9PFo10K5xXYUZlL9x8QjBA