python 內建函式, 匿名函式

2022-08-01 02:12:12 字數 3574 閱讀 1866

什麼是內建函式? 就是python給你提供的. 拿來直接⽤的函式, 比如print., input等等. 

字串型別**的執⾏

eval() 執⾏字串型別的**. 並返回最終結果(當執行大量資料的時候會有問題)

print(eval("2+2")) # 4

n = 8

print(eval("2+n")) # 10

def func():

print(666)

eval("func()") # 666

exec() 執⾏字串型別的**

exec("""

for i in range(10):

print(i)

""")

exec("""

def func():

print("我是周杰倫")

func()

""")

compile() 將字串型別的**變異. **物件能夠通過exec語句來執⾏或者eval()進⾏求值.

'''

引數說明:

1. resource 要執⾏的**, 動態**⽚段

2. ⽂件名, **存放的⽂件名, 當傳⼊了第⼀個引數的時候, 這個引數給空就可以了

3. 模式, 取值有3個,

1. exec: ⼀般放⼀些流程語句的時候

2. eval: resource只存放⼀個求值表示式.

3. single: resource存放的**有互動的時候. mode應為single

'''

code1 = "for i in range(10): print(i)"

c1 = compile(code1, "", mode="exec")

exec(c1)

code2 = "1+2+3"

c2 = compile(code2, "", mode="eval")

a = eval(c2)

print(a)

code3 = "name = input('請輸⼊你的名字:')"

c3 = compile(code3, "", mode="single")

exec(c3)

print(name)

有返回值的字串形式的**⽤eval(). 沒有返回值的字串形式的**⽤exec(). ⼀般很少⽤到compile()

為了解決一些簡單的需求而設計的一句話函式

# 計算n的n次⽅

def func(n):

return n**n

print(func(10))

f = lambda n: n**n

print(f(10))

lambda表⽰的是匿名函式. 不需要⽤def來宣告, ⼀句話就可以宣告出⼀個函式

語法:函式名 = lambda 引數: 返回值

注意: 

1. 函式的引數可以有多個. 多個引數之間⽤逗號隔開

2. 匿名函式不管多複雜. 只能寫⼀⾏, 且邏輯結束後直接返回資料

3. 返回值和正常的函式⼀樣, 可以是任意資料型別

sorted()

語法: sorted(iterable, key=none, reverse=false)

iterable: 可迭代物件

key: 排序規則(排序函式), 在sorted內部會將可迭代物件中的每⼀個元素傳遞給這個函式的引數. 根據函式運算的結果進⾏排序

reverse: 是否是倒敘. true: 倒敘, false: 正序

lst = [1,5,3,4,6]

lst2 = sorted(lst)

print(lst) # 原列表不會改變

print(lst2) # 返回的新列表是經過排序的

dic =

print(sorted(dic)) # 如果是字典. 則返回排序過後的key

和函式組合使⽤

# 根據字串⻓度進⾏排序

lst = ["麻花藤", "岡本次郎", "**情報局", "狐仙"]

# 計算字串⻓度

def func(s):

return len(s)

print(sorted(lst, key=func))

和lambda組合使用

# 根據字串⻓度進⾏排序

lst = ["麻花藤", "岡本次郎", "**情報局", "狐仙"]

# 計算字串⻓度

def func(s):

return len(s)

print(sorted(lst, key=lambda s: len(s)))

lst = [,,]

# 按照年齡對學⽣資訊進⾏排序

print(sorted(lst, key=lambda e: e['age'])) # e 就是for i in sorted後面的可迭代引數中的 i

filter()

語法: filter(function. iterable)

function: ⽤來篩選的函式. 在filter中會⾃動的把iterable中的元素傳遞給function. 然後

根據function返回的true或者false來判斷是否保留此項資料

iterable: 可迭代物件

lst = [1,2,3,4,5,6,7]

ll = filter(lambda x: x%2==0, lst) # 篩選所有的偶數

print(ll)

print(list(ll))

lst = [,

,]

fl = filter(lambda e: e['age'] > 16, lst) # 篩選年齡⼤於16的資料

print(list(fl))

map()

語法: map(function, iterable) 可以對可迭代物件中的每⼀個元素進⾏對映. 分別取執⾏

function

計算列表中每個元素的平⽅ ,返回新列表

def func(e):

return e*e

mp = map(func, [1, 2, 3, 4, 5])

print(mp)

print(list(mp))

改寫成lambda

print(list(map(lambda x: x * x, [1, 2, 3, 4, 5])))
計算兩個列表中相同位置的資料的和

# 計算兩個列表相同位置的資料的和

lst1 = [1, 2, 3, 4, 5]

lst2 = [2, 4, 6, 8, 10]

print(list(map(lambda x, y: x+y, lst1, lst2)))

Python 內建函式補充匿名函式

python3 匿名函式 定義乙個函式與變數的定義非常相似,對於有名函式,必須通過變數名訪問 def func x,y,z 1 return x y z print func 1,2,3 匿名函式定義 使用 lambda 來建立匿名函式 匿名函式1.沒有名字 2 函式體自帶return 匿名函式 d...

Python中內建函式 匿名函式

1 內建函式常用方法 print bin 10 十進位制轉二進位制 print chr 10 列印數字對應的ascii print ord b 列印字串對應的ascii碼 print dir 1 列印傳入物件的可呼叫方法 print eval 執行python 只能執行簡單的,定義資料型別和運算 p...

Python 內建函式補充匿名函式

python3 匿名函式 定義乙個函式與變數的定義非常相似,對於有名函式,必須通過變數名訪問 def func x,y,z 1 return x y z print func 1,2,3 匿名函式定義 使用 lambda 來建立匿名函式 匿名函式1.沒有名字 2 函式體自帶return 匿名函式 d...