Python3 與 NetCore 基礎語法對比(就當Python和C#基礎的普及吧)

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

在線演示http://nbviewer.jupyter.org/github/lotapp/BaseCode/blob/master/python/notebook/1.POP/1.base/01.helloworld.ipynbgit

歡迎提出更簡單的語法~(文章中案例有兩個福利哦,一個是養生,一個是人工智能[ 密碼: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的邏輯運算符==》andornot,這個卻是跟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

附錄2:C#基礎(逆天上學那會作的筆記)

易忘知識點(點)

C#基礎彙總(點)

異常概況系(點)

CodeBase ~ POP

CodeBase ~ OOP

相關文章
相關標籤/搜索