1. 程式人生 > >Python程式組成的關鍵要素

Python程式組成的關鍵要素

Python的關鍵要素:

Python的關鍵要素包括:Python中基礎資料型別、 物件引用(變數)、常用組合資料型別、 邏輯操作符、控制流語句、算數操作符、Python輸入/輸出、函式的建立與呼叫

1、Python中基礎資料型別

         數字:int、 long、float、complex、 bool

         整型(int):不可變型別

         布林型(bool):Trul,False

         浮點型(float):不可變型別:3.1415926

         複數(complex):3+6j

         字元:str,unicode

         字串:"myname is field",'hello' '''world'''

例1:整型

In [1]: no=2

In [2]: id(no)

Out[2]: 33699744

In [3]: no=3

In [4]: id(no)

Out[4]: 33699720   

In [5]: type(no)

Out[5]: int        

In [6]: num=3

In [7]: id(num)

Out[7]: 33699720

#Python中一切皆物件,整型時不可變型別,變數引用相同的整型物件,其id相同

In [8]: 1+2

Out[8]: 3

In [9]: print _

3

# print _ 列印最後一個引用的物件,即最後表示式的結果

例2:浮點型

In [10]: no1=3.14

In [11]: type(no1)

Out[11]: float

In [12]: type(no) is type(no1)

Out[12]: False

例3:字元型

In [13]: name="field"

In [14]: print name[0]

f

In [15]: id (name)

Out[15]: 36570192

In [16]: name='jones'

In [17]: id (name)

Out[17]: 43946128 

In [18]: type(name)

Out[18]: str     

In [20]: name1='jones'

In [21]: id (name)

Out[21]: 43946128

#Python中字元是不可變型別,變數引用相同的不可變物件,其id相同

2、物件引用(變數)

Python將所有資料存為記憶體物件,Python中變數實際上是指向記憶體物件的引用。在任何時刻,某個物件引用可以根據需要重新引用一個不同的物件(可以是不同資料型別)。

type()用於返回給定物件的資料型別;

“=”:用於變數名與記憶體中某物件繫結;

變數命名規則:只能包含字母、數字、下劃線,且不能以數字開頭;嚴格區分字母大小寫,禁止使用保留字;

命名慣例:

單一下劃線開頭變數名(_x)不會被from  module  import  *語句匯入;

         前後有下劃線的變數名(__x__)為系統定義變數名,對Python直譯器有特殊意義;

         以兩個下劃線開頭且結尾無下劃線的變數名(__x)為本地變數;

         互動模式下,變數名“_”表示最後表示式的結果;

注意:變數名沒有型別,物件才有

In [22]: name='fieldyang'

In [23]: print _

True

3、python常用組合資料型別

序列型別:

         列表:(list),可變型別,使用[]建立,如:['My','name','is','Field']

         元組:(tuple),不可變型別,使用()建立,如:("one","two")

         字串也屬於序列型別

注意:列表和元組均不真正儲存資料,而是存放物件應用

集合型別:

         集合:集合(set),frozenset

對映型別:

         字典:(dict),可變物件,如:{'a':11, 'c': 33, 'b': 22}

組合型別:組合型別也是物件,因此可以巢狀,如:['hello','world',[1,2,3]]

注意:資料型別均有其長度,可使用len()函式測量:len(name)

檔案型別:file

其它型別:類型別, None

其它檔案類工具:pipes,fifos, sockets

例1:

In [23]:l1=["My","name","is","Field"]

In [24]: print l1

['My', 'name', 'is', 'Field']

例2:使用索引運算子“list[i][j]”做列表索引引用

In [25]: l1[0]

Out[25]: 'My'

In [26]: l1[0][0]

Out[26]: 'M'

In [27]: l1[3]

Out[27]: 'Field'

In [28]: id(l1)

Out[28]: 40583824

In [29]:l1[3]="Ling"

In [30]: id(l1)

Out[30]: 40583824

#列表是可變型別,改變列表內容,其id不會改變

例3:使用列表切片運算子“list[i:j]”及列表擴充套件切片符“list[i:j:stride]”做切片引用

In [31]: print l1

['My', 'name', 'is', 'Ling']                             

In [32]: name='FieldYang'

In [33]: name[0]

Out[33]: 'F'

In [34]: name[0:1]

Out[34]: 'F'

In [35]: name[0:3]

Out[35]: 'Fie'

In [36]: name[6:]

Out[36]: 'ang'

In [37]: name[0:8:2]

Out[37]: 'Feda'         

In [38]: len(name)

Out[38]: 9

例4:字典

In [39]: d1={'a':11,'b':22,'c':33}

In [40]: print d1

{'a': 11, 'c': 33, 'b': 22}

4、邏輯操作符:

身份操作符:is,後面可以接None:x is y x not is y

例1:

In [61]: name

Out[61]: 'FieldYang'

In [62]: name1 = 'FieldYang'

In [63]: name1

Out[63]: 'FieldYang'

In [64]: name is name1

Out[64]: True

In [66]: name1 = 'Field'

In [67]: name1 is name1

Out[67]: False

In [68]: type(name) is type(name1)

Out[68]: True

成員操作符:x in yx not in y

例2:

In [75]: print l1

['My', 'name', 'is', 'Ling']

In [76]: print name

FieldYang

In [77]: name not in l1

Out[77]: True

In [78]: 'name' in l1

Out[78]: True                     

比較操作符:x < yx > y, x <= yx >= yx == y x != y

例3:

In [81]: num=1

In [82]: num1=1

In [83]: num==num1

Out[83]: True

In [84]: num1=2

In [85]: num==num1

Out[85]: False

In [86]: num>num1

Out[86]: False

In [87]: num<num1

Out[87]: True

In [88]: num!=num1

Out[88]: True

In [89]: num<=num1

Out[89]: True

邏輯運算子:andornot        

5、控制流語句

if/elif/else:條件判斷

for/else:序列迭代

while/else:普通迴圈

         pass:佔位符

         break:跳出最內層的迴圈

         continue:跳到所處的最近層迴圈的開始出

         return:返回,預設none

raise:觸發異常

try/except/finally:捕捉異常

條件測試:

if 條件測試表達式

         Python中的真假:

         1)、任何非0數字和非空物件都為真;

         2)、數字0、空物件和特殊物件None均為假;

         3)、比較和相等測試會遞迴地應用於資料結構中;

         4)、返回值為True或False;

組合條件測試:

         Xand Y: 與運算

         Xor Y: 或運算

         notX: 非運算

         A= X if Y else Z

         ifY:

                   A= X

         Else:

                   A= Z

         expression1if boolean_expression else expression2

while語句:

         whilebool_expression:

                   while_suite

         else:

                   else_suite

可用引數:

break: 跳出最內層的迴圈;

         continue:跳到所處的最近層迴圈的開始處;

         pass:點位語句

         else程式碼塊:迴圈正常終止才會執行;如果迴圈終止是由break跳出導致的,則else不會執行;

6、算數操作符:

         一元運算:-x, +x,~x:

         冪運算:x ** y

         增強賦值: +=, -=,*=, /=, //=, %=,

7、Python輸入/輸出                                    

輸出:

Python3:print()函式;

Python2:print語句

輸入:

input()

raw_input()

格式化輸出:

print  "String  %format1  %format2  ... "  %(value1,value2,...)

 d,i:十進位制整數或長整數;

u:無符號整數或長整數;

o:八進位制整數或長整數;

         x:十六進位制整數或長整數;

X:十六進位制整數(大寫字母);

F:浮點數,如[-]m.dddddd;

         E:浮點數,如[-]m.dddddde+-xx;

E:浮點數,如[-]m.ddddddE+-xx;

         g,G:指數小於-4或更高精度時使用%e或%E,否則使用%f;

         s:字串或任意物件,格式化程式碼使用str()生成字串;

         r:同repr()生成的字串;c:單個字元;%字面量%;

%號後面可以使用的修飾符:

%[(name)][flags][width][.precision]typecode

         [(name)]:位於括號中的一個屬於後面的字典的鍵名,用於選出一個具體專案

         [flags]:標誌(可使用一個或多個)

                   -:左對齊,預設為右對齊

                   +:新增數字符號,正數會帶上+號

                   0:使用0填充

         [width]:指定最小寬度的數字

         [.precision]:小數點,用於按照精度分割欄位的寬度

         typecode:數字,指定要答應的字串中的最大字元個數,浮點數中小數點之後的位數,或整數的最小位數;

例1:print輸出

In [94]: a=22

In [95]: b=44

In [96]: print a,b

22 44

In [97]: print a,b,

22 44                 

例2:讀標準輸入

In [91]: raw_input("please input anumber: ")

please input a number: 88

Out[91]: '88'

In [92]: num=raw_input("please input anumber: ")

please input a number: 88

In [93]: print num

88

例3:格式化輸出浮點型、整型、字元型

In [98]: num=8.8

In [99]: print "The num is %f" %num

The num is 8.800000

In [100]: print "The num is %d" %num

The num is 8

In [101]: num1=6.66

In [102]: print "The nums are %d and%f" % (num,num1)

The nums are 8 and 6.660000

In [103]: print "The nums are %d and%f" % (num,5.2)

The nums are 8 and 5.200000

In [104]: print "The nums are %e and%f" % (num,5.2)

The nums are 8.800000e+00 and 5.200000

In [105]: name="FieldYang"

In [106]: print "My name is %s."% name

My name is FieldYang.

In [107]: print "The num is %s."% num

The num is 8.8.

In [120]: print "The nums are %+e and%f" % (num,5.2)

The nums are +8.800000e+00 and 5.200000

In [121]: print "The nums are %+e and%f" % (num,-5.2)

The nums are +8.800000e+00 and -5.200000

In [122]: print "The nums are %+e and%+f" % (num,-5.2)

The nums are +8.800000e+00 and -5.200000

In [123]: print "The nums are %f and%f" % (num,-5.2)

The nums are 8.800000 and -5.200000

例4:格式化輸出使用修飾符 

In [124]: print "The nums are %+20fand %f" % (num,-5.2)

The nums are            +8.800000 and -5.200000

In [125]: print "The nums are %+20.10fand %f" % (num,-5.2)

The nums are        +8.8000000000 and -5.200000

In [126]: print "The nums are %-20.10fand %f" % (num,-5.2)

The nums are 8.8000000000         and -5.200000

In [127]: print "The nums are %-20.15fand %f" % (num,-5.2)

The nums are 8.800000000000001    and -5.200000

例5:使用字典演示格式化輸出

In [137]: d1={'a':11,'b':22,'c':33}

In [138]: print d1

{'a': 11, 'c': 33, 'b': 22}

In [139]: print "The a is %(a)10.3f, bis %(b)-10d,c is %(c)5.3f" % d1

The a is    11.000, b is 22        ,c is33.000

In [140]: print "The a is %(a)s, b is%(b)d,c is %(c)5.3f" % d1

The a is 11, b is 22,c is 33.000

8、函式的建立與呼叫

deffunctionName(arguments):

suite

函式可以引數化,通過傳遞不同的引數來呼叫,每個函式都有返回值,預設為None,也可以使用“return value”明確定義返回值。

def語句會建立一個函式物件,並同時建立一個指向函式的物件引用,函式也是物件,可以儲存在組合資料型別中,也可以作為引數傳遞給其它函式;

說明:calleble()可用於測試函式是否可呼叫

Python標準庫中有很多內建模組,這些模組擁有大量內建函式;Python模組使用import語句進行匯入,後跟模組名稱(不能帶上.py字尾),匯入一個模組後,可以訪問其內部包含的任意函式、類、變數   

例1:構建printName打印出賦值的名字

In [1]: def printName(name):

  ....:     print name

  ....:    

In [2]: printName('JONES')

JONES

In [3]: test='kin'

In [4]: printName(test)

kin

In [5]: name=printName('field')

Field

例2:使用callable()測試函式是否可呼叫

In [6]: callable(name)

Out[6]: False

In [7]: callable(printName)

Out[7]: True

例3:使用import匯入模組並測試模組內函式方法的使用

In [8]: import random

In [9]: random.

random.BPF              random.WichmannHill     random.getstate         random.sample

random.LOG4             random.betavariate      random.jumpahead        random.seed

random.NV_MAGICCONST    random.choice           random.lognormvariate   random.setstate

random.RECIP_BPF        random.division         random.normalvariate    random.shuffle

random.Random           random.expovariate      random.paretovariate    random.triangular

random.SG_MAGICCONST    random.gammavariate     random.randint          random.uniform

random.SystemRandom     random.gauss            random.random           random.vonmisesvariate

random.TWOPI            random.getrandbits      random.randrange        random.weibullvariate

In [9]: random.random()

Out[9]: 0.4189901841264161

In [10]: random.random()

Out[10]: 0.9359719349997645

In [11]: students = ['x','y','z']

In [12]: random.choice(students)

Out[12]: 'x'

In [13]: random.choice(students)

Out[13]: 'x'

In [14]: random.choice(students)

Out[14]: 'z'

In [15]: random.choice(students)

Out[15]: 'x'

In [16]: random.choice(students)

Out[16]: 'x'

In [17]: random.choice(students)

Out[17]: 'x'

In [18]: random.choice(students)

Out[18]: 'y'