python入門

來源:互聯網
上載者:User

標籤:

    第一次接觸到python這個概念還是在2013年在銳捷網路做實習生的時候,當時因為項目測試需要,有提出想用python進行自動化測試,但是由於項目的實際需要,後面最終沒有用,也就擱置了python的學習,自己載了python的教程,也是看的零零碎碎的,最近一直在思考自己應該做什麼,迷茫,好像很多語言很多工具需要自己去學習,但又精力不夠,最新的想法是與其去和那些培訓或者門檻低的人去搶android的飯碗,不如在自己C++編程的基礎上,學習少數人會去學習的語言,就像java語言一樣,很多人都說會用java語言編程,但是真正能深入理解其機制和原理的,估計不多,多的是用架構去編寫項目。

    python:簡潔,優雅,快捷

    簡潔到變數可以不用定義直接用,可以調用很多函數,方便移植,對資料的處理速度快,但是耗記憶體

    我學習python的時候,感覺這就像是在看小學生的作業,當然只是剛學習到了基礎部分,還沒有進階到高階,加了個python開發群,去群裡問了有沒什麼好的IDE,熱心的人說pycharm不錯,載下來發現這就是傳說中的大蟒蛇,果然給力。

    整理了下python的入門知識。

1.變數和資料類型

1.1 資料類型

在Python中,能夠直接處理的資料類型有以下幾種:

一、整數

Python可以處理任意大小的整數,當然包括負整數,在Python程式中,整數的表示方法和數學上的寫法一模一樣。

二、浮點數

浮點數也就是小數,之所以稱為浮點數,是因為按照科學記號標記法表示時,一個浮點數的小數點位置是可變的,比如,1.23x10^9和12.3x10^8是相等的。

整數和浮點數在電腦內部儲存的方式是不同的,整數運算永遠是精確的(除法難道也是精確的?是的!),而浮點數運算則可能會有四捨五入的誤差。

三、字串

字串是以‘‘""括起來的任意文本,比如‘abc‘"xyz"等等。請注意,‘‘""本身只是一種表示方式,不是字串的一部分,因此,字串‘abc‘只有a,b,c這3個字元。

四、布爾值

布爾值和布爾代數的表示完全一致,一個布爾值只有TrueFalse兩種值,要麼是True,要麼是False,在Python中,可以直接用TrueFalse表示布爾值(請注意大小寫),也可以通過布爾運算計算出來。

布爾值可以用andornot運算。

五、空值

空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。

對比與C語言,可以發現很多的不同,最大的不同就是更加抽象化和口語化

1.2 變數

在Python程式中,變數是用一個變數名表示,變數名必須是大小寫英文、數字和_的組合,且不能用數字開頭,

a = 123    # a是整數print aa = ‘imooc‘   # a變為字串print a

這種變數本身類型不固定的語言稱之為動態語言,與之對應的是靜態語言。

靜態語言在定義變數時必須指定變數類型,如果賦值的時候類型不符,就會報錯。例如Java是靜態語言,指派陳述式如下(// 表示注釋):

int a = 123; // a是整數類型變數a = "mooc"; // 錯誤:不能把字串賦給整型變數

和靜態語言相比,動態語言更靈活。

1.3 注釋

單行注釋用“#”

C語言用/**/或//

 

2.list和Tuple類型

2.1 list:列表,有序的集合,由於Python是動態語言,所以list中包含的元素並不要求都必須是同一種資料類型,我們完全可以在list中包含各種資料,用[元素]。

     順序訪問list:需要特別注意的是,索引從 0 開始,也就是說,第一個元素的索引是0,第二個元素的索引是1,以此類推。

     倒序訪問list:最後一個元素的索引是-1,以此類推。

                  類似於數組的訪問

     添加元素:用函數append(i),如:L.append("hello"),用函數insert(i,h),如:L.insert(0,"hello")在L的第一個位置添加“hello”元素,其他元素自動移位,比數組的添加簡單多了。

     刪除元素:用函數pop(i),刪除第i個元素,當用pop()時表示刪除最後一個元素,其他元素自動移位。

     替換元素:直接針對位置替換,如:L(2)="HEllo",將原本第三個位置的元素替換為“HEllo”

2.2 Tuple:有序的列表,我們稱為“元組”,tuple一旦建立完畢,就不能修改,建立tuple和建立list唯一不同之處是用( 元素)替代了[ ]。

     但是當Tuple裡面的元素是可變的集合,比如list時,list對應的元素可以進行修改,tuple所謂的“不變”是說,tuple的每個元素,指向永遠不變。即指向‘a‘,就不能改成指向‘b‘,指向一個list,就不能改成指向其他對象,但指向的這個list本身是可變的。

3.條件判斷和迴圈

3.1 if :冒號表示對應的代碼塊

          要縮排

      elif  :

          要縮排

      else:

          要縮排

3.2 for name in L  :

          要縮排,不需要什麼++之類的,比C簡單很多

3.3 while x<N:

        add code要縮排

        x+=1或x=x+1

3.4 退出迴圈

      break:後續迴圈  continue:當次迴圈

4.Dict和SET

4.1 dict:key-value,類似於map,用{元素},並且key不能重複。

4.1.1 當訪問value的時候,要避免 KeyError 發生,有兩個辦法:

一是先判斷一下 key 是否存在,用 in 操作符:

if ‘Paul‘ in d:    print d[‘Paul‘]

如果 ‘Paul‘ 不存在,if語句判斷為False,自然不會執行 print d[‘Paul‘] ,從而避免了錯誤。

二是使用dict本身提供的一個 get 方法,在Key不存在的時候,返回None:print d.get(‘Bart‘)

4.1.2 dict特點:1.尋找速度快,無論資料量多少,當然是以消耗記憶體為代價的,list正好相反,佔用記憶體小,但是尋找速度慢。2. 儲存的key-value序對是沒有順序的,所以可能每次列印出來的dict都不一樣。3.作為 key 的元素必須不可變,Python的基本類型如字串、整數、浮點數都是不可變的,都可以作為 key。但是list是可變的,就不能作為 key

4.1.3 添加和更新元素:直接採用指派陳述式

4.1.4 遍曆:for迴圈,如:

d = { ‘Adam‘: 95, ‘Lisa‘: 85, ‘Bart‘: 59 }for key in d:    print key

4.2 set: 持有一系列元素,這一點和 list 很像,但是set的元素沒有重複,而且是無序的,這點和 dict 的 key很像。

   set裡面的元素大小寫敏感,而且訪問時可以用:in 進行判斷元素是否存在。

 

Bart是該班的同學嗎?

 

>>> ‘Bart‘ in sTrue

 

bart是該班的同學嗎?

 >>> ‘bart‘ in s

False
4.2.1 set的特點:

set的內部結構和dict很像,唯一區別是不儲存value,因此,判斷一個元素是否在set中速度很快。

set儲存的元素和dict的key類似,必須是不變對象,因此,任何可變對象是不能放入set中的。

最後,set儲存的元素也是沒有順序的。

4.2.2 遍曆:for name in set:進行遍曆

4.2.3 更新:採用add()直接添加,判斷後再用remove()刪除

5.函數

在Python中,定義一個函數要使用 def 語句,依次寫出函數名、括弧、括弧中的參數和冒號:,然後,在縮排塊中編寫函數體,函數的傳回值用 return 語句返回。如果沒有return語句,函數執行完畢後也會返回結果,只是結果為 None。Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。

5.1 定義預設參數:由於函數的參數按從左至右的順序匹配,所以預設參數只能定義在必需參數的後面,請定義一個 greet() 函數,它包含一個預設參數,如果沒有傳入,列印 ‘Hello, world.‘,如果傳入,列印 ‘Hello, xxx.‘其中world設定為預設參數。

5.2 定義可變參數:

如果想讓一個函數能接受任意個參數,我們就可以定義一個可變參數:

def fn(*args):    print args

可變參數的名字前面有個 號,我們可以傳入0個、1個或多個參數給可變參數。

Python解譯器會把傳入的一組參數組裝成一個tuple傳遞給可變參數,因此,在函數內部,直接把變數 args 看成一個 tuple 。例如:求任意數的平均值

6.對list進行切片:L[0:10],L[::2],L[0:-1],L[4:50:5]

7.迭代:Python中,迭代永遠是取出元素本身,而非元素的索引。

7.1 list迭代索引:使用 enumerate() 函數,我們可以在for迴圈中同時綁定索引index和元素name。但是,這不是 enumerate() 的特殊文法。實際上,enumerate() 函數把:

[‘Adam‘, ‘Lisa‘, ‘Bart‘, ‘Paul‘]

變成了類似:

[(0, ‘Adam‘), (1, ‘Lisa‘), (2, ‘Bart‘), (3, ‘Paul‘)]
enumerate()函數和zip函數的功能類似,只是zip可以指定索引,而enumerate()函數預設從索引0開始。

zip()函數可以把兩個 list 變成一個 list:

>>> zip([10, 20, 30], [‘A‘, ‘B‘, ‘C‘])[(10, ‘A‘), (20, ‘B‘), (30, ‘C‘)]
7.2 dict迭代擷取values:
用dict.values()或dict.itervalues()可以擷取dict的所有values值。

1. values() 方法實際上把一個 dict 轉換成了包含 value 的list。

2. 但是 itervalues() 方法不會轉換,它會在迭代過程中依次從 dict 中取出 value,所以 itervalues() 方法比 values() 方法節省了產生 list 所需的記憶體。

3. 列印 itervalues() 發現它返回一個 <dictionary-valueiterator> 對象,這說明在Python中,for 迴圈可作用的迭代對象遠不止 list,tuple,str,unicode,dict等,任何可迭代對象都可以作用於for迴圈,而內部如何迭代我們通常並不用關心。

如果一個對象說自己可迭代,那我們就直接用 for 迴圈去迭代它,可見,迭代是一種抽象的資料操作,它不對迭代對象內部的資料有任何要求。

7.3 dict迭代key和values:

for key, value in d.items():...     print key, ‘:‘, value
用函數items()或iteritems()
8.列表產生式:列表產生式則可以用一行語句代替迴圈,如:
[x * x for x in range(1, 11) if x % 2 == 0]條件過濾
[m + n for m in ‘ABC‘ for n in ‘123‘多重迴圈

 



 

 

 

 


 

 

     

 

python入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.