多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > 【python】python 入門<1>——python詞法和解析器

【python】python 入門<1>——python詞法和解析器

來源:程序員人生   發布時間:2016-12-04 14:26:38 閱讀次數:2538次

1. 詞法分析

      1.1  注釋  (#)

                  注釋使用  #  開頭


      1.2 編碼聲明

               如果第1行或第2行的 注釋 匹配     coding[=:]\s*([-\w.]+)   ,則 認為是 編碼聲明 ,默許編碼 為  UTF⑻

               推薦編碼聲明方式 :

# -*- coding: <encoding-name> -*-

      1.3  顯示的 行連接

                當需要換行時 , 可使用 反斜線 (\)連接上下兩行 ,且 反斜線后面不能添加注釋

i.e

# -*- coding: UTF⑻ -*- import sys sys.stdout.write("hello 陳\ from Python %s\n" % (sys.version,))

      1.4 隱式的行連接

                特殊情況下 , 如圓括號(( )),方括號([ ]),或 大括號 ({ })中的表達式可以分割成多個物理行而不需要反斜線。此種換行方式下可以添加注解

i.e

# -*- coding: UTF⑻ -*- import sys sys.stdout.write("hello 陳\ from Python %s\n" % (sys.version ,))

      1.5 關鍵字

                以下的標識符被用作保存字 ,或關鍵字 (注意大小寫):

False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise

                   

2.  使用 python 解析器

           打開 cmd , 輸入  py | python | python<version>  ,便可打開 交互模式 。

i.e

$ python Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 6 2014, 22:15:05) [MSC v.1600 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> flag = True >>> if flag: ... print("flag is true!") #注意縮進 ... flag is true! >>>

      交互式輸入復合語句時,最后必須跟隨1個空行來表示結束(由于解析器沒法猜想你甚么時候已輸入最后1行)


3.  簡單介紹

       3.1 作為計算器使用

             3.1  數字

i.e

>>> 2+2 4 >>> 5/2 2.5 >>> 2**3 8 >>> 4+_ # 交互模式下,最后1個打印的表達式分配給變量_,即8分配給_ 12 >>>


             3.2  字符串

                       如果字符串中只有單引號而沒有雙引號,就用雙引號援用,否則用單引號援用 。 print()  函數生成可讀性更好的輸出 。
i.e

>>> '"isn\'t",she said' '"isn\'t",she said' >>> print('"isn\'t",she said') "isn't",she said >>> print(r'"isn\'t",she said') # r 保持原始字符串輸出 "isn\'t",she said >>>

                       字符串拼接

i.e

>>> 'py' 'thon' 'python' >>> prefix = 'py' >>> prefix + 'thon' 'python' >>>

                     字符串截取

i.e

>>> word = 'hello everyone' >>> word[0] 'h' >>> word[13] 'e' >>> word[⑴] # 倒序從 ⑴ 開始 'e' >>> word[⑵] 'n' >>> word[0:4] # 包括頭,不包括尾 'hell' >>> word[0:5] 'hello' >>> word[:5] #空代表從頭開始 'hello' >>> word[0:] #空代表1直到結尾 'hello everyone' >>> word[:] # 顯示所有字符 'hello everyone' >>>

字符串(Python)切割示意圖 :

+---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 6 ⑹ ⑸ ⑷ ⑶ ⑵ ⑴

Python 中的字符串是不能改變的 ,如果你嘗試改變會報錯 。


                        3.3 列表

                                 中括號中的1列用逗號分隔的值。列表可以包括不同類型的元素,但是通常1個列表中的所有元素都具有相同的類型。

i.e

>>> words = [2,5,6,99] >>> words [2, 5, 6, 99] >>> words[⑴] 99 >>> words + [111,222] [2, 5, 6, 99, 111, 222] >>> words.append(333) #添加新元素 >>> words [2, 5, 6, 99, 333] >>> words[2:3] = [555,666] # 給切片賦值 >>> words [2, 5, 555, 666, 99, 333] >>> len(words) # 列表長度 6 >>>

                                列表可嵌套,創建包括其他列表的列表

i.e

>>> a = [2,5,7] >>> b = [3,6,8] >>> c = [a,b] >>> c [[2, 5, 7], [3, 6, 8]] >>> c[0] [2, 5, 7] >>> c[0][2] 7 >>>

                              輸出斐波那契前幾位

>>> #輸出斐波那契前幾位 ... a,b = 0,1 >>> while b <10: ... print(b) ... a,b=b,a+b ... 1 1 2 3 5 8 >>>

調劑輸出格式 :

>>> #輸出斐波那契前幾位 ... a,b = 0,1 >>> while b <10: ... print(b,end=',') ... a,b=b,a+b ... 1,1,2,3,5,8,>>>

4.  流程控制語句 : if  while  for 等 屬于 復合語句

                              4.1   if 語句用于條件履行 :


if_stmt ::= "if" expression ":" suite ( "elif" expression ":" suite )* ["else" ":" suite]
i.e:

>>> x = int(input("enter an integer:")) enter an integer:23 >>> if x <0: ... print('<0') ... elif x==0: ... print('=0') ... else: ... print('>0') ... >0 >>>

  

                         4.2 while 語句用于重復履行只要表達式為 true

while_stmt ::= "while" expression ":" suite ["else" ":" suite]


                         4.3 for 語句用于循環集合

for_stmt ::= "for" target_list "in" expression_list ":" suite ["else" ":" suite]

i.e:

>>> animals = ['cat','bird','elephant'] >>> for animal in animals: ... print(animal,len(animal)) ... cat 3 bird 4 elephant 8 >>>
or

>>> for i in range(len(animals)): ... print(animals[i],len(animals[i])) ... cat 3 bird 4 elephant 8 >>>

                           4.4 range() 函數用于遍歷數字序列

生成數字序列:

>>> for i in range(5): ... print(i) ... 0 1 2 3 4 >>>

從2 開始 ,到10 之前結束 ,步長為 2

>>> for i in range(2,10,2): ... print(i,end=',') ... 2,4,6,8,>>>

                            4.5 break  continue

break : 跳出當前循環

i.e:

>>> for n in range(2,10): ... for m in range(2,n): ... if n%m == 0: ... print(n,'equals',m,'*',n//m) ... break ... else: ... print(n,'is a prime number') ... 2 is a prime number 3 is a prime number 4 equals 2 * 2 5 is a prime number 6 equals 2 * 3 7 is a prime number 8 equals 2 * 4 9 equals 3 * 3 >>>

continue : 繼續履行下1次循環


                         4.6 pass  甚么也不做

>>> while True: ... pass # 1直等待直得手動停止(ctrl+c) ...

創建最小的類

>>> class MyEmptyClass: ... pass ...

                           4.7 定義函數 (def

                                    使用 def 定義1個函數,其后必須跟有函數名和以括號標明的情勢參數列表。組成函數體的語句從下1行開始,且必須縮進

定義1個斐波那契函數:

>>> def fib(n): ... a,b=0,1 ... while a<n: ... print(a,end=',') ... a,b=b,a+b ... print() ... >>> fib(3000) 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584, >>>

函數名重命名

>>> fib <function fib at 0x02E177C8> >>> f = fib >>> f(3000) 0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584, >>>

不打印而保存在列表中返回

>>> def fibR(n): ... result = [] #用以保存數據 ... a,b = 0,1 ... while a<n: ... result.append(a) ... a,b=b,a+b ... return result ... >>> f100 = fibR(100) >>> f100 [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89] >>>

                              4.7.1 默許參數值定義函數

                                     在定義函數時,就已對參數進行了賦值

i.e:

>>> o = 5 >>> def aa(aa = o): ... print(aa) ... >>> aa() 5 >>> o = 6 >>> aa() 5 >>>

                                但是這在默許值是列表、字典或大部份類的實例等易變的對象的時候又有所不同。例如,下面的函數在后續調用進程中會積累傳給它的參數:

>>> def list(a,l=[]): ... l.append(a) ... return l ... >>> print(list(1)) [1] >>> print(list(2)) [1, 2] >>> print(list(3)) [1, 2, 3] >>>

                          如果不需要同享,可以以下寫法:

>>> def f(a,l=None): ... if l is None: ... l=[] ... l.append(a) ... return l ... >>> print(f(1)) [1] >>> print(f(2)) [2] >>>

                   4.7.2 關鍵字參數

                              參數:當調用函數時 ,1個值被傳遞給函數(或方法),這個值就叫做參數 。有兩種類型的參數

                                   ★關鍵字參數(keyword argument) :在函數調用中,通過標識符指定參數 ;或在 ** 后 通過字典傳遞參數

調用 complex() 函數:

complex(real=3, imag=5) complex(**{'real': 3, 'imag': 5})

                                   ★位置參數 (potional argument): 以參數列表的情勢出現  或 通過 * ,

complex(3, 5) complex(*(3, 5))

                在函數調用中,關鍵字參數必須跟隨在位置參數的后面


5. 數據結構

      5.1 更多關于 Lists


           5.1.1 作為棧使用

           5.1.2 作為隊列使用


      5.2  del 語句

               移除 列表中某個元素 ,清空列表等。


       5.3  Tuples(元組) 和序列

                      元組由逗號分割的若干值組成。元組是不可變的,元組是可嵌套的

>>> t = 12,43,'hello' >>> t (12, 43, 'hello') >>> u = t,(2,5,'everyone') >>> u ((12, 43, 'hello'), (2, 5, 'everyone')) >>> t[0] 12 >>> t[0] = 666 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>>

 構造包括0個和1個元素的元組

>>> empty = () # 構造包括0個元素的元組 >>> len(empty) 0 >>> singleton = 'hello', #構造包括1個元素的元組 >>> len(singleton) 1 >>>

              5.4 Sets( 集合)   {  }

                       特點 :不會重復 , 沒有順序 ,

                      可操作 : 交集,并集 ,差

>>> basket = {'egg','apple','egg','orange'} >>> basket {'egg', 'orange', 'apple'} >>> 'egg' in basket True >>> 'pear' in basket False >>> a = set('aabccd') >>> b = set('bbcdde') >>> a {'a', 'b', 'c', 'd'} >>> b {'b', 'd', 'c', 'e'} >>> a-b #在 a 中不在b 中 {'a'} >>> a | b # 在 a中或在b中 {'b', 'a', 'e', 'd', 'c'} >>> a & b # 既在a 中又在b 中 {'b', 'd', 'c'} >>> a ^ b # 在 a中或 b中,去除同時包括的 {'a', 'e'} >>>

              5.5 字典

                    無序的鍵值對集合 ,鍵必須是唯1的

>>> tel = {'jack': 4098, 'sape': 4139} >>> tel['guido'] = 4127 >>> tel {'sape': 4139, 'guido': 4127, 'jack': 4098} >>> tel['jack'] 4098 >>> del tel['sape'] >>> tel['irv'] = 4127 >>> tel {'guido': 4127, 'irv': 4127, 'jack': 4098} >>> list(tel.keys()) ['irv', 'guido', 'jack'] >>> sorted(tel.keys()) ['guido', 'irv', 'jack'] >>> 'guido' in tel True >>> 'jack' not in tel False

                   dict() 構造器根據鍵值對的序列創建字典

>>> dict([('liming',2343),('zhangsan',5632)]) {'zhangsan': 5632, 'liming': 2343} >>>
                    還可以:
>>> dict(sape=4139, guido=4127, jack=4098) {'jack': 4098, 'guido': 4127, 'sape': 4139} >>> {x: x**2 for x in (2, 4, 6)} {2: 4, 4: 16, 6: 36} >>>

               5.6 循環

                     循環 字典 的鍵 和 值 ,可使用 items() 方法

i.e

>>> tels = {'bob':4323,'jone':8732,'lili':1974} >>> tels {'jone': 8732, 'bob': 4323, 'lili': 1974} >>> for k,v in tels.items(): ... print(k,v) ... jone 8732 bob 4323 lili 1974 >>>

                     循環序列 的 index 和 value,可使用 enumerate() 方法

i.e

>>> for i,v in enumerate([33,44,55]): ... print(i,v) ... 0 33 1 44 2 55 >>>

 或  使用  range() 方法

>>> for i in range(len(ints)): ... print(i,ints[i]) ... 0 33 1 44 2 55 >>>

                   循環序列的 value

i.e

>>> ints = [33,44,55] >>> for v in ints: ... print(v) ... 33 44 55 >>>


                    循環 兩個或兩個以上的序列 , 可使用 zip() 方法

i.e

>>> questions = ['name','color'] >>> answers = ['bob','blue'] >>> for q,a in zip(questions,answers): ... print('what is your {0}? it is {1}'.format(q,a)) ... what is your name? it is bob what is your color? it is blue >>>

                    倒序循環序列  ,可使用 reversed() 方法

i.e

>>> for i in reversed([11,22,33]): ... print(i) ... 33 22 11 >>>

                  給序列排序后循環 , 可使用 sorted() 方法

i.e

>>> for i in sorted([55,33,44]): ... print(i) ... 33 44 55 >>>

            5.7 更多關于條件

in not in is is not 僅僅針對可變對象,比如 lists ,比較運算符優先級低于數值運算符 a < b == c 級聯比較 :a 小于 b 并且 b 等于c and or 短路運算符

i.e 短路運算,并賦值

>>> string1, string2, string3 = '', 'Trondheim', 'Hammer Dance' # 分別給 3個變量賦值 >>> non_null = string1 or string2 or string3 # 短路運算, string1 or string2 不為空,不再繼續運算,賦值給 non_n ull >>> non_null 'Trondheim' >>>

            Python 在表達式內部不能賦值


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 日韩福利在线视频 | 日本护士xxxxx高清免费 | 日本不卡一区二区三区视频 | 日本人护士免费xxxx视频 | 亚洲欧美色欧另类欧 | 自拍偷拍 欧美日韩 | 九九久久香港经典三级精品 | 欧美亚洲综合视频 | 噜噜嘿在线视频免费观看 | 国产高清吃奶成免费视频网站 | 日韩欧美一区二区中文字幕 | 国产免费叼嘿视频 | 欧美日韩国产不卡在线观看 | 亚洲欧美天堂网 | 综合久久久久久 | 91久久大香伊蕉在人线 | 亚洲小说区图片区 | 国产精品96久久久久久久 | 国产成人精品午夜二三区 | 欧美伦理一区 | 看v片| 久久久久久久久久久观看 | 欧美一级大黄特黄毛片视频 | h亚洲 | 美国免费毛片 | 最新lutube亚洲看片在线观看 | 欧美爱爱爽爽视频在线观看 | 欧美一级淫片 | 亚洲欧美在线综合一区二区三区 | 日韩毛片欧美一级a | 欧美video free xxxxx| 国产三级精品在线观看 | 18女人水真多免费高清毛片 | 欧美精品久久久久久久免费观看 | 91精品久久久久久久久久 | 香蕉久久夜色精品国产2020 | 伊人久久大香线蕉75 | 波多野结衣久久一区二区 | 国产高清在线精品一区 | 国产福利一区二区在线观看 | 欧美高清在线不卡免费观看 |