一些python高階語法

2021-10-09 21:04:39 字數 1882 閱讀 9000

enum列舉是乙個類。

from enum import enum

class vip(enum):

green=1

print(vip.green.value)通過.value訪問green標籤對應值

.name獲取標籤名

列舉型別,列舉名字,列舉值是三個概念

for v in vip:

print(v)

遍歷列舉型別

result== vip.green==2將得到false,因為列舉本身與列舉數值不同

列舉型別不支援大小比較,支援等值比較 ==

列舉兩個值相同,則第二個列舉是第乙個的別名(兩個數值相同實際上代表一種列舉型別)

for v in vip.__members __: print(v)

遍歷列舉成員

列舉型別轉換:類名(變數) 自動返回變數值所對應的列舉型別

from enum import intenum (限制列舉型別為整型)

from enum import unique(引入unique裝飾器,不允許列舉數值相同)

函式式程式設計:

python中一切皆物件,函式只是一段可執行的**

def curve_pre():

a=25

def curve(x):

return a*x

return curve

f=curve_pre()

(函式作為另乙個函式的返回值)

閉包=函式+環境變數

print(f.__closure __)檢視閉包

def f1():

a=10

def f2():

a=20

print(a)

print(a)

f2()

print(a)

a=20是乙個區域性變數

origin=0

def go(step):

#global origin

new_pos=origin+step

#origin=new_pos

return origin

origin在函式內無法找到,會自動到全域性變數中尋找,即找到origin=0;但在函式內定義區域性變數origin的值後,python不會再去尋找全域性變數origin的值;使用global關鍵字,可以從函式內部修改全域性變數。

orgin=0

def fac(pos):

def go(step):

nonlocal pos #nonlocal強制宣告pos不是乙個本地區域性變數

new_pos=pos+step

pos=new_pos

return new_pos

return go

tour=fac(origin)

print(tour(2)) #2即為step的值

print(tour(3)) #3即step的值

閉包記住了上一次執行的狀態,且不改變全域性變數的值

匿名函式 lambda表示式

lambda para_list: expression;如f=lambda x,y:x+y print(f(1,2))

冒號後只能是表示式,不能在lambda表示式後用賦值操作

三元表示式

x>y?x:y x若大於y則取x值否則取y值

即 r=x if x>y else y

map類,接收兩個引數(func函式,list序列),返回map物件

list_x=[1,2,3,4,5,6]

def square(x):

return x*x

r=map(square,list_x)

返回值r為list_x中所有值的平方

map對傳入序列中的每一項執行函式

python的高階語法 Python的一些高階語法

一 python生成器 python生成器另乙個重要特性,就是能夠利用next函式與呼叫的 進行互動。yield變成了乙個表示式,而值可以通過名為send的新方法來傳遞 def psychologist print please tell me your problems while true an...

python的一些基本語法

print kkkjjjsss 6 8 print chr 65 print ord import datetime print datetime.datetime.now import time time.sleep 2.5 a 33,44,444 print len a a 33,44,444 ...

Python的一些高階函式

1.zip 函式 作用 zip函式結果是乙個可迭代物件,前面加上list,tuple,dict才可以列印出來,把兩個可迭代物件進行一對一取出,這兩個取出的元素放入乙個元祖裡,最後的結果是乙個可迭代物件 引數 括號裡必須參入兩個可迭代物件 ziper list zip 1,2,3 4,5,6 prin...