国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python語句及語法

2019-11-08 00:53:47
字體:
來源:轉載
供稿:網友

一、python語句簡介(python是面向過程、基于語句的語言)

1、python程序結構:

   程序由模塊構成

   模塊由語句構成

   語句由表達式構成

   表達式建立并處理對象

2、常用python語句集

語句

角色

例子

賦值

創建引用值

a,b,c=’good’,’bad’,’ugly’

調用

執行函數

log.write(“spam,ham/n”)

PRint

打印對象

print ‘the killer’,joke

if/elif/else

選擇動作

if ‘python’ in text:

    print text

for/else

序列迭代

for x in mylist:

    print x

while/else

一般循環

while x>y:

    print x

pass

空占位符

while True:

    pass

break/continue

循環跳躍

while True:

    if not line:break

try/except/finally

捕捉異常

try:

    action()

except:

    print ‘action error’

raise

觸發異常

raise endSearch,location

import,from

模塊讀取

import sys

from sys import stdin

def,return,yield

創建函數

def f(a,b,c=1,*d):

    return a+b+c+d[0]

def gen(n)

    for I in n,yield i*2

class

創建對象

class subclass(Superclass):

    staticdata=[]

global

命名空間空間

def function():

    global x,y

    x=’new’

del

刪除引用

del data[k]

exec

執行代碼字符串

exec “import” +modname

exec code in gdict,ldict

assert

調試檢查

assert x>y

with/as

環境管理器

with open(‘data’) as myfile:

    process(myfile)

 

3、try語句:

   eg:

  while True:

      reply=raw_input(‘Enter text:’)

      if reply==’stop’:

          break

      try:

          num=int(reply)

      except:

          print ‘Bad!’*8

      else:

          print int(reply)**2

   print ‘Bye!’

    解釋:try關鍵字后面跟上我們嘗試運行的代碼塊,再跟except部分,給異常處理

                器代碼,再接else部分,如果try部分沒有異常,就執行這一部分代碼,如

                有異常發生就執行except部分代碼

二、賦值、表達式、打印語句

1、賦值語句

(1)賦值語句專門特性:

           a、賦值對象建立專門引用值,賦值語句總是建立對象的引用值而不是拷

               貝;

           b、變量名會在首次賦值時被創建;

           c、變量名在引用前必須先賦值;

           d、隱式賦值語句:import、from、def、class、for、函數參數

(2)賦值語句的形式:

    a、基本形式:spam=’spam’

    b、元組及列表分解賦值:當“=”左邊編寫成元組或列表時,python會按照

           位置把右邊的對象和左邊的目標從左到有想配對。

    c、序列賦值語句:任何變量名的序列都可以賦值給任何值的序列,python會按照位置一次賦值一個元素

    d、多重目標賦值:python賦值相同對象的引用值(最右邊的對象)給左邊所有的目標

    e、增強賦值語句:例如:s+=2相當于s=s+2

(3)序列賦值:

    a、高級序列賦值語句模式:可以在“=”兩側混合和匹配匹配序列類型,但左右兩邊元素的數目必須相等。若要通用,則需要使用分片的方法。

       >>>string=’spam’

      >>>a,b,c=string[0],string[1],string[2:]

      >>>a,b,c=list(string[:2)+[string[2:]]

       >>>(a,b),c=string[:2],string[2:]

    b、賦值一系列整數給一組變量:

       >>>red,green,blue=range(3)

       >>>range(3)

       [0,1,2]

(4)多目標賦值語句:

    a、多目標賦值以及共享引用:

       多目標賦值語句中,只有一個對象,由三個變量共享(全都指向內存內統一對象)在此需要注意對象的是否支持在原處的修改

(5)增強賦值語句:

    a、增強賦值語句從C借鑒而來:

x+=y

x&=y

x-=y

x|=y

x*=y

x^=y

x/=y

x>>=y

x%=y

x<<=y

x**=y

x//=y(floor除法)

     b、增強賦值語句的一些優點:

           左側只需計算一次,執行更快;

           優化技術選擇,對于支持原處修改的對象而言,增強形式會自動執行原處的修改運算,而不是復制。

    c、增強賦值與共享引用:

           對列表而言,“+=”隱含了對原處做修改的意思,“+”總是生成新的對象

(6)表達式語句:

     a、在python中,可以使用表達式作為語句,但表達式結果不會儲存,只有當表達式工作并作為附加的效果時才有意義。通常有兩種情況下表達式用作語句:調用函數和方                法、在交互模式下打印值

    b、表達式語句通常用于執行可于原處修改列表的列表方法:

      >>>L=[1,2]

      >>>L.append(3)  #這是一條表達式語句,返回值為None

      >>>L

      [1,2,3]

(7)打印語句:

     a、重定向輸出流:

       print x

       等價于:

       import sys

       sys.stdout.write(str(x)+’/n’)

        因為有可能把sys.stdout重新復制給標準輸出流意外的東西,這樣就可以有一種方法讓print語句將文字傳送到其他地方:

      >>>import sys

      >>>sys.stdout=open(‘log.txt’,’w’)

      …

      print x,y,z

     b、print file 擴展:       重定向輸出流有一個問題:沒有直接的方式可以保存原始的輸出流。在打印到文件后可以切換回來。因為sys.stdout只是一個普通文件對象,一個例子如下:

      >>>import sys

      >>>temp=sys.stdout

      >>>sys.stdout=open(‘log.txt’,’a’)

      >>>print ‘spam’

     >>>print 1,2,3

     >>>sys.stdout.close()

     >>>sys.stdout=temp

     >>>print open(‘log.txt’).read()

     spam

     1,2,3

      這樣的操作顯得復雜,于是增加了print的擴展功能,當print以>>開始,后面再跟輸出的文件對象或其他對象時,該print語句可以將文字傳給該對象的write方法。

      >>>log=open(‘log.txt’,’a’)

      >>>print >> log,’x’.’y’,’z’

     這種print擴展形式通常把錯誤訊息打印到標準錯誤流sys.stderr,例如:

     >>>import sys

     >>>sys.stderr.write(‘Bad!’+’/n’)

     Bad!

     

     >>>print >>sys.stderr,’Bad!’

     Bad!

三、if語句:

1、通用格式:

  if  <test1>:

      <statements1>

  elif <test2>:

      <statements2>

  else:

      <statements3>

2、if語句是執行多路分支的最直接的方式

3、一些python語法規則:

   (1)語句是逐個運行的;

   (2)塊和語句的邊界會自動被檢查;

   (3)復合語句=首行+“:”+縮進語句;

   (4)空白行、空格以及注釋通常會被忽略;

   (5)文檔字符串(docstring)會被忽略,但會保存并由工具顯示;

   (6)代碼塊分隔符:python以行縮進檢測塊的邊界

   (7)語句的分隔符:

     a、如果使用語法括號對,語句可以橫跨數行;

     b、如果語句以反斜線結尾,可以橫跨數行;

     c、三重引號字符串常量可以橫跨數行;

     d、分號可以分隔在同一行的多條語句

   (8)真值測試:

         a、任何非零數字或非空對象都為真;

         b、數字零、空白對象、None都被認作是假;

         c、比較和相等測試會遞歸地應用在數據結構中;

         d、比較和相等測試會返回真或假的操作對象;

         e、布爾and和or會返回真或假的操作對象

   (9)布爾運算:

          and運算:x and y; 若x、y均為真就返回真

          or運算:x or y; 若x或y為真就返回真

          not運算:not x; 若x為假就返回真

    (10)if/else三元表達式:(只有當組成成分及其簡單才用,否則寫完整的if/else表達式)

           A=Y if X else Z

       等價于:

     if X:

                A=Y

           else:

                A=Z

四、while和for循環語句:

1、while循環:

   (1)一般格式:

    while <test>:

        <statements1>

    else:

        <statements2>

2、break、continue、pass、循環else        

   (1)break

        跳出最近所在的循環(跳過整個循環語句)

     continue

        跳到最近所在循環的開頭處(來到循環的首行)

     pass

        什么也不做,只是空占位語句

     循環else塊

        只有當循環正常離開時才會執行(也就是沒有碰到break語句)

   (2)一般的循環格式:

         a、加入break和continue語句后,while循環的一般格式為:

            while <test1>:

                 <statements1>

                 if <test2>:break

                 if <test3>:continue

            else:

                 <statements2>

            break,continue語句可以出現在while(或for)循環主體的任何地方,但通常會進一步嵌在if語句中,根據相應的條件采取相應的操作

         b、pass:

               pass語句是空占位語句,當語法需要沒有任何實用的語句時,就可以實用這條語句;

         c、continue/break語句:

            eg:

              x=10

              while x:

                  x-=1

                  if x %2!=0:continue

                  print x

3、for循環:

      for循環是一個通用的序列迭代器:可以遍歷任何有序的序列對象內的元素;可用于字符串、列表、元組、其他內置可迭代對象以及通過類所創建的新對象

     (1)一般格式:

       for <target> in <object>:

           <statements1>

       else:

           <statements2>

        for語句也支持一個選用的else塊,如果循環離開時沒有碰到break語句,就會執行(也就是所有元素被訪問完后)

       for循環的完整格式:

       for <target> in <object>:

           <statements1>

           if <test1>:continue

           if <test2>:break

       else:

           <statements2>

   4、迭代器:

     迭代工具包括有:for循環,列表解析,in成員測試,map內置函數等

     (1)文件迭代器:

        a、readline()方法可以從一個文件中讀取一行,每調就會前進到下一行,到達文件末尾時返回空字符串

       b、next()方法也有類似功能

       c、讀取文本文件的最佳方式,利用for循環,例如:

          for line in open(‘文件’):

               print line.upper

     (2)其他內置類型迭代器:

        a、列表迭代器:當for循環開始時,會通過它傳遞給iter()內置函數,以便從迭代對象獲取一個迭代器,返回的對象含有需要的next()方法

       >>>L=[1,2,3]

       >>>I=iter(L)

        >>>I.next()

        1

        b、字典迭代器:會自動返回一個鍵

        >>>D={‘a’:1,‘b’:2,’c’:3}

        >>>for key in D:

                print key,D[key]

        …

        a 1

        b 2

        c 3

       c、其他迭代環境:(文件‘script1.py’事先已經寫好)

          in成員關系測試:

          >>>uppers=[line.upper() for line in open(‘script1.py’)]

          map()內置函數:

          >>>map(str.upper(),open(‘script1.py’))

          其他內置函數:

          >>>L=[1,2,3,4]

          >>>sorted(L)

          >>>sum(L)

          >>>any([‘spam’,’’,’ni’])

          True

          >>>all([‘spam’,’’,’ni’])

          False

      5、編寫循環的技巧:          (1)range函數

           range函數傳入一個參數時,產生從零算起的整數列表;

           range函數傳入兩個參數時,第一個參數視為下邊界;

           range函數傳入三個參數時,第三個參數提供步進值;

           range函數常用于for循環中;

           range函數加上步進參數常用來實現非完備遍歷;

           range函數常用于在循環遍歷列表時對其進行修改:

            eg:>>>L=[1,2,3,4,5]

                   >>>for i inrange(len(L)):

                          L[i]+=1

                   >>>L

                   [2,3,4,5,6]

         (2)并行遍歷:zip()和map()函數:

            zip()函數會取得一個或多個序列作為參數,返回值為元組的列表,將這些序列中的并排元素配成對;

            map()函數也可以把序列的元素配對,只是參數長度不同時會為較短的序列用None補齊;

           a、利用zip()構造字典:

               >>>keys=[‘spam’,‘eggs’,’toast’]

               >>>vals=[1,2,3]

               >>>zip(keys,vals)

               >>>D={}

               >>>for (k,v) inzip(keys,vals):

                      D[k]=v

               >>>D

               {‘spam’:1,’eggs’:2,’toast’:3}

               當然我們也可以跳過for循環,利用dic()函數構造字典:

               >>>D1=dic(zip(keys,vals))

         (3)產生偏移和元素:enumerate()

            enumerate()函數返回一個生程器對象:這種對象支持迭代協議,這個對象有一個next()方法,每次遍歷列表都會返回一個(index,value)的元組

            eg:>>>S=’spam’

                     >>>E=enumerate(S)

                     >>>E.next()

                      (0,’s’)

6、列表解析:

      (1)列表解析基礎:從語法上講,列表解析就是對集合中的每一個元素進行某種運算

        eg:>>>L=[1,2,3,4]

              >>>L=[x+10 for x in L]

              >>>L

              [11,12,13,14]

      (2)列表解析都可以用for循環來完成

五、文檔:

形式

角色

#注釋

文件中的文檔

dir函數

對象中可用屬性列表

文檔字符串:_ _doc_ _

附加在對象上的文件中的文檔

PyDoc:help函數

對象的交互幫助

PyDoc:HTML報表

瀏覽器中的模塊文檔

標準手冊

正式的語言和庫說明

網站資源

在線教程和例子

出版書籍

商業參考書籍

    1、文檔字符串:_ _doc_ _

       python支持可自動附加在對象上的文檔,而且在運行時可以保存查看。從語法上看,這類注釋寫成字符串,放在模塊文件、函數以及類語句的頂端,就在任何可執行代碼            前,python會自動封裝這個字符串,成為文檔字符串,使其成為相應對象的_ _doc_ _屬性。

       eg:考慮下面文件docstrings.py

            ‘’’

            Module documentation

            Words Go Here

            ‘’‘

            spam=40

            def square(x):

                  ‘’’

                  function documentation

                  can we have your liver then?

                   ‘’’

                   return x**2

            class employee:

                   ‘class documentation’

                    pass

            print square(4)

            print square._ _doc_ _

            執行命令:

            >>>importdocstrings

            16

             function documentation

             can we have your liverthen?

             >>>printdocstrings._ _doc_ _

             Module documentation

             Words Go Here

             >>>print docstrings.employee._ _doc_ _

             class documentation

             要從模塊中類的方法函數的文檔字符串,可以路徑訪問:module.class. method._ _doc_ _

2、PyDoc:HTML報表

          PyDoc提供GUI接口將報表通過HTML網頁格式來呈現:linux系統下打開GUI的方法如下:

         >>>import pydoc

          >>>pydoc.gui()

3、網站資源:www.python.org

         在網站上可以獲得標準庫手冊等資源。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白河县| 沙湾县| 恩施市| 中牟县| 福建省| 栖霞市| 丹东市| 焦作市| 垦利县| 台南县| 连城县| 合川市| 宁强县| 肇源县| 开封县| 双桥区| 治多县| 仲巴县| 西盟| 沧源| 巢湖市| 深泽县| 清水县| 平阴县| 大同市| 和静县| 光山县| 彭水| 新乡市| 工布江达县| 突泉县| 台山市| 旬邑县| 塘沽区| 永寿县| 上思县| 崇仁县| 西丰县| 屏南县| 定结县| 延寿县|