Python學習筆記一(初識Python)

來源:互聯網
上載者:User

剛學Python不久,因為自己的工作主要是使用.NET,所以很多思考的東西都會和C#相關。特別是在理解上,總愛和C#比較進行看看有什麼區別

Array 和Tuple
Tuple在Python中定義成不可變的List,我的直覺理解就是一個Array(但這個很奇怪,Python中有一個標準模組就是Array,暫時沒用過,以後再具體分析吧)。
對於Tuple來說初始化的方式很奇怪
userid=1,2,3,4,5
或者
userid=(1,2,3,4,5)
兩者得到的結果是一樣的。想這種userid=1,2,3,4,5 C#是肯定通不過的,而這種做法反而像C#的int a,b,c,d,但這表示的定義多個int的資料類型。

沒有了開始和結尾的“{}”
C#的函數,類的定義...等都會出現這個符號。Python改為以縮排和冒號的方式來代替代碼塊。寫多了Python你會發現這確實是個很美的事情。因為C#編寫時本身代碼規範就強調要縮排。現在把{}都去掉了,少敲了不少鍵盤啦。

函數預設參數
發現這個也是很折騰人的東西。因為和C#的確有不少的區別
1:Python的函數可以定義預設值,這個感覺像MSSQL的預存程序
2:Python的函數還可以使用關鍵字參數
def Get(name,id,age)
    pass
Get(name='333',id=1,age=444)

引用《簡明Python》中的說法
“這樣做有兩個 優勢 ——一,由於我們不必擔心參數的順序,使用函數變得更加簡單了。二、假設其他參數都有預設值,我們可以只給我們想要的那些參數賦值。”,這一點,的確比C#方便不少。

函數的可變參數

Python:
def fprintf(*args):
    for i in args:
        print i
fprintf(1,2,3,4,"ssss")

在C#中會這樣定義
public static void UseVariableParameters(params int[] list) { for ( int i = 0 ; i < list.Length ; i++ ) { Console.WriteLine(list[i]); } Console.WriteLine(); }

如果單純從這上面看沒什麼優勢,但Python 同時支援List、Tuple、Dictionary 作為參數一次傳入。 List、Tuple的參數是以 *arg傳入的。Dictinary是以**arg傳入的。

>>>args = [3, 6]
>>> range(*args)

>>> def parrot(voltage, state='a stiff', action='voom'):
>>> d = {"voltage": "four million", "state": "bleedin' demised", "action": "VOOM"}
>>> parrot(**d)

這個只能說Python的文法太靈活啦

For IN 形式的迴圈
這個也很有意思,我發現在Python中已經沒有了以前學習的語言中的for(int i;i<cout;i++)這種形式了。使用了For i in range(10) 這種方式,的確是個進步。而且C#也通過Linq的方式類比了這個實現

過濾類別文法
很Cool

[mapping-expression for element in source-list if filter-expression]

>>> li = ["a", "mpilgrim", "foo", "b", "c", "b", "d", "d"]
>>> [elem for elem in li if len(elem) > 1]

C#的Linq現在也可以實現這個功能,但還是Python比較Cool ,和簡單

and 和 or 的特殊性質
Python中and 和or 左右返回的不是bool而是相應的結果。
and 如果為假返回and左邊的值,如果為真返回右邊的值
or 返回第一個為真的值,如果都是假返回最後一個值

但這樣確有一個C#沒有的好相關,相當於一個二元操作符了。
在C#中經常這樣寫三元操作符和
string name;
name = String.ISNullOrEmpry(name)?String.Empty: "username is:" + name

而如果C#也支援Python的這種概念的話就可以簡單寫出
name = name and "username is :" + name
很希望C#能支援類似的文法

list對象的分區 (slice) 和 Copy
具體不多說,只是覺得比C#的list用起來方法,特別是希望.NET  以後可以支援這個文法

shoplist[:5] 返回序列的一段返回內的值
shoplist[:]返回整個序列的Copy

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.