Python12Python的高階語法與用法

2021-09-25 02:44:17 字數 4504 閱讀 6822

what

列舉本質是乙個類 enum

why數字代表型別不夠直觀

字典由於可變和沒有防止相同標籤的功能,所以不是最優代表型別的資料型別

how列舉的一般使用方法

from enum import enum       #先呼叫乙個模組

class 類名1

(enum)

:#定義乙個類是列舉型別

變數1= 數值1

#數值不可相同

變數2= 數值2

。。。 #以此類推

#表示型別,列印(print)出來的值依然是類名1.變數1

#列舉數值不可更改,不可以有相同變數名

#型別是乙個型別enum '類名1'

print

(類名1

.變數1

)print

(類名1

.變數1.value)

#獲取數值

print

(類名1

.變數1.name)

#獲取標籤名,是乙個字串

print

(類名1

['變數1'])

#獲取列舉型別,是乙個字串

for a in 類名1

:#列舉可以遍歷

print

(a)#列舉的比較運算,列舉型別不可以比較大小,身份比較可以,等值比較可以

b = 類名1

.變數1

== 類名1

.變數2

c = 類名1

.變數1

is 類名2

.變數2

見舉例1

from enum import intenum       #先呼叫乙個模組,可以強制列舉數值為數值

@unique #裝飾器代表數值只能唯一

class 類名1

(intenum)

: 變數1

= 數值1

變數2= 數值2

how much

列舉內部的變數名類似常量盡量全體大寫

列舉數值,盡量選擇數字作為列舉數值

用列舉型別的標籤,對應資料庫的數值;

例:a = = 類名1.變數1做判斷,而不是a == 數值做判斷 類名1(數值/變數)轉換成列舉型別

列舉不可以例項化

不能有兩個相同的標籤,可以不同標籤是相同數值,相同數值相當於別名

用於別名的標籤,會造成一般遍歷是不可列印出來,遍歷方法:

for a in 類名1.__members__.items():

for a in 類名1.__members__:

得到的結果,見舉例2

舉例1:列舉的一般使用方法

from enum import enum

class

vip(enum)

: yellow =

1 green =

2 black =

3 red =

4print

(vip.yellow)

print

(vip.yellow.value)

print

(vip.yellow.name)

print

(vip[

'yellow'])

print

(type

(vip.yellow)

)print

(type

(vip.yellow.name)

)for v in vip:

print

(v)

輸出

vip.yellow

1yellow

vip.yellow

vip.yellow

vip.green

vip.black

vip.red

舉例2:列舉別名的遍歷

from enum import enum

class

vip(enum)

: yellow =

1 green =

1 black =

3 red =

4for a in vip.__members__.items():

print

(a)for a in vip.__members__:

print

(a)

輸出

(『yellow』, )

(『green』, )

(『black』, )

(『red』, )

yellow

green

black

redwhat

函式和它在定義時的環境變數,不受其他變數賦值影響

why閉包儲存的是乙個環境,乙個現場

how

'''

函式包函式時,被包函式不能在外部呼叫

可以定義乙個變數為它賦值乙個函式

可以返回乙個函式

'''def 函式1()

: 環境變數1

= 。。。

def 函式2()

:pass

return 函式2

#外部呼叫類2()報錯

a = 函式1()

#呼叫函式a()

#a.__closure__表示閉包位置

#a.__closure__[0].cell_contents儲存環境變數

見舉例1/2

#閉包的使用,定義乙個非區域性變數

a = 。。。 #定義乙個變數

def 函式1

(b):

def 函式2

(c):

nonlocal b #定義乙個非區域性變數

d = b + c

b = d

return d

return 函式2

#例項化

f = 函式1

(a)

見舉例3

how much

閉包外部更改環境變數取值,環境變數不變

閉包內部的函式賦值更改環境變數取值,環境變數不變,區域性變數

定義了區域性變數的類似函式結構不是閉包,閉包必須引用外部的環境變數

舉例1:函式包函式

def

curve_pre()

:#環境變數在外部

a =25def

curve

(x):

return a*x*x

return curve

#a = 10外部定義不影響內部取值25

f = curve_pre(

)print

(f(2))

print

(f.__closure__)

print

(f.__closure__[0]

.cell_contents)

輸出

100(,)

25舉例2:定義了區域性變數的類似函式結構不是閉包

deff1(

):a =

10deff2(

):#閉包內部的函式賦值不影響a的原始賦值,乙個區域性變數

a =20print

(a)print

(a) f2(

)print

(a)f1(

)

輸出

1020

10舉例3:閉包的使用

非閉包:

origin =

0def

go(step)

:#宣告乙個全域性變數

global origin

new_pos = origin + step

#等號左邊的

origin = new_pos

return origin

print

(go(2)

)print

(go(3)

)print

(go(6)

)

輸出25

11閉包:

origin =

0def

factory

(pos)

:def

go(step)

:#定義乙個非區域性變數

nonlocal pos

new_pos = pos + step

pos = new_pos

return new_pos

return go

tourist = factory(origin)

print

(tourist(2)

)print

(tourist(3)

)print

(tourist(5)

)

輸出25

10

Python隨堂筆記1 2

第一堂課ptint aaaa 8 結果為輸出8遍的字串 aaaa ptint aaaa 8 則執行錯誤。快捷鍵 alt n 回到上一條語句。alt p 回到下一條語句。第二堂課 print 玉康工作室 temp input 你想是什麼數字 獲取的為字串格式。guess int temp print ...

Python初學12 爬蟲

爬蟲前奏 1.明確目的 2.找到資料相對應得網頁 3.分析網頁結構,找到資料的所在標籤的位置 操作 模擬http請求,向伺服器傳送這個請求,獲取到伺服器返回的頁面 正規表示式提取我們需要的資料 虎牙主頁主播和人氣 107.3萬 資料2 實現 encoding utf 8 created on 201...

python小白程式設計12

列印出所有的 水仙花數 所謂 水仙花數 是指乙個三位數,其各位數字立方和等於該數本身。例如 153是乙個 水仙花數 因為153 1的三次方 5的三次方 3的三次方。原理 需要分別輸出某個數的個十百位上的數字,將它們分別立方相加與這個數本身是否相等,相等則為水仙花數,如何輸出百位,十位,個位呢?範圍是...