Jupyter排版:http://www.javashuo.com/article/p-dwdjxhac-g.htmlhtml
彙總系列:http://www.javashuo.com/article/p-dojeygnv-gw.htmlpython
VSCode設置python3的開發環境(linux下默認是python2)http://www.javashuo.com/article/p-tvzhtwbx-bq.htmllinux
歡迎提出更簡單的語法~(文章中案例有兩個福利哦,一個是養生,一個是人工智能[ 密碼:fqif])github
複習C#基礎請看附錄2:https://www.cnblogs.com/dotnetcrazy/p/9102030.html#csharpshell
先說下感受,python的編程有點JavaScript的感受(好比:'和「有時候不區別),又感受像外國版的易語言,整個過程像讀書同樣,好比一個元素不在列表之中==> for item not in lists。使用它作個大點的項目必定要先規定好編程風格,否則能讓人崩潰的。先不深究,後面會繼續深究。。。(Python2我就不講了,官方推薦使用Python3)編程
0.命名規則app
Python官方是推薦使用_來間隔單詞,但通常開發人員都是以各自主語言的命名來定義的,這個就各人愛好了,不過團隊必定要統一。編程語言
標示符由字母、下劃線和數字組成,且數字不能開頭(這個基本上都同樣)注意:標識符是區分大小寫的函數
命名規則,總的原則就是見名知意,通常都是駝峯命名法,純Python的話推薦用_鏈接單詞
擴充:Python的關鍵詞能夠本身打印一下:
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
1.註釋
python:#註釋一行,三個單引號或者三個雙引號註釋多行:'''XXX'''或者"""XXXX"""(通常用#就夠了,有點像shell腳本的感受)
python輸出就直接print便可,C是printf(不要搞混哦)
C、Java、Net都是//註釋一行,/**/註釋多行
2.變量
python定義變量比較牛逼,直接寫變量名便可,句子後面不用加分號,eg:name="小明"
netcore,能夠用var來進行類型推斷,eg:var name="小明";
3.輸入輸出:r''
表示''
內部的字符串默認不轉義
換行輸出,不換行輸出:(\n使用這個就不說了,它們和C都是同樣的)
python:print("dnt.dkill.net/now",end='') #默認end='\n' (' 和 " 隨意)
netcore: Console.Write Console.WriteLine
-------------------------------------------------------------------------------------
python輸出多個重複字符,不須要本身手打N個*或者for循環輸出多個重複字符,eg:print("x"*10)
若是你不太肯定應該用什麼,
%s
永遠起做用,它會把任何數據類型轉換爲字符串# %c 字符 # %s 經過str() 字符串轉換來格式化 # %o 八進制整數 # %x 十六進制整數(小寫字母) # %X 十六進制整數(大寫字母) # %e 指數(小寫'e') # %E 指數(大寫「E」) # %f 浮點實數 # %g %f和%e 的簡寫 # %G %f和%E的簡寫下面來個輸入輸出的簡單的案例吧:打印一張名片,Name:毒逆天,Gender:男
Python:print("Name:%s,Gender:%s"%(name,gender))【注意引號後面沒有,哦】
NetCore:Console.WriteLine($"Name:{name},Gender:{gender}");
4.類型轉換+算術運算符
python:類型(值),eg:int(),long(),float(),str()...等等(Python沒有double類型哦~)【擴:轉換成16進制:hex()、轉換爲8進制:oct()】
netcore:該案例推薦使用 int.TryParse,我這邊就用經常使用的Convert系列了【支持類型比較多】
Convert.ToInt64(),Convert.ToDouble(),Convert.ToString()
算術運算符編程語言基本上差很少,Python多了個 // 取商(%是取餘)和 冪**,來個案例:
netcore(C#經常使用數學方法都在Match類中)
+= -= *= /= %= **= //= 這些就不用詳說了吧?(舉個例子: c += a 等效於 c = c + a)
5.if else
說Python像外國版的易語言,這邊就能夠看出來一點了,先說說Python的邏輯運算符==》與and 或or 非not,這個卻是跟C、C#、Java等大大不一樣,若是再結合Python命名規則就感受在閱讀文章同樣
關係運算符和其餘語言基本上差很少(== != <> > < >= <=),就一點不同:也能夠用<>
來個if else基礎語法:括號可加可不加,可是記得加:。不用大括號,可是if裏面的代碼注意縮進
netcore:if或者else下面是單行代碼能夠不用寫括號
再來個嵌套的:注意哦~else if 在python裏面簡寫成了:elif
netcore:單行代碼能夠不用寫括號
6.while
直接來個案例:
python裏面沒有++ 和 --,這點的確用的有點小不方便,擴展部分有相關說明
netcore
7.for
python的for循環,相似於js裏面的for in 以及C#裏面的foreach
netcore: foreach (var i in name)
------------------------------------------------------------------------------------------------------
老規矩,來個擴展:switch(這個目前不用掌握,看看就好,後面會繼續探討的)
Python沒有 ++/-- 參考文章(點我)
python 中,變量是之內容爲基準而不是像 c 中以變量名爲基準,因此只要你的數字內容是5,無論你起什麼名字,這個變量的 ID 是相同的,同時也就說明了 python 中一個變量能夠以多個名稱訪問
如上例,a 和 b 都是 5,當你++改變了 a 時,b 也會跟着變,這固然不是咱們但願的。so,正確的自增操做應該 a += 1,經過 id() 觀察可知,id 值變化了,即 a 已是新值的名稱
for的擴展(通常不太用)官方參考:https://docs.python.org/3/reference/compound_stmts.html#the-for-statement
圖片出處:http://www.javashuo.com/article/p-sldlphrt-cy.html
Python 沒有 switch / case 語句。爲了實現它,咱們可使用字典映射:
def numbers_to_strings(argument): switcher = { 0: "zero", 1: "one", 2: "two", } return switcher.get(argument, "nothing")這段代碼相似於:
function(argument){ switch(argument) { case 0: return "zero"; case 1: return "one"; case 2: return "two"; default: return "nothing"; }; };在 Python 中字典映射也能夠包含函數或者 lambda 表達式:def zero(): return "zero" def one(): return "one" def numbers_to_functions_to_strings(argument): switcher = { 0: zero, 1: one, 2: lambda: "two", } func = switcher.get(argument, lambda: "nothing") return func()類的調度方法:
若是在一個類中,不肯定要使用哪一種方法,能夠用一個調度方法在運行的時候來肯定。
class Switcher(object): def numbers_to_methods_to_strings(self, argument): method_name = 'number_' + str(argument) method = getattr(self, method_name, lambda: "nothing") return method() def number_0(self): return "zero" def number_1(self): return "one" def number_2(self): return "two"https://docs.python.org/3.6/faq/design.html#why-isn-t-there-a-switch-or-case-statement-in-python
Python設計相關的爲何,能夠參考官方文檔:https://docs.python.org/3.6/faq/design.html