python基礎五

  • 2019 年 10 月 6 日
  • 筆記

無論是風裡,還是在雨里,我都在這裡守候著你~

匿名函數

例如:

add = lambda x : x+1

add(5) # 6

add:函數名

lambda:定義匿名函數的關鍵字

x:參數

:格式吧

x+1:返回值

當需要多個參數時:在x後加上,加參數即可。

存在的意義:有些函數很簡單,避免我們麻煩的去定義。

內置函數

常用print()#輸出,input()#交互輸入,open()#文件操作等都不說了。

len()#返回長度,dir()#查看方法,help()#查看幫助,當不知道調用該函數的參數時,可以help()一下。

callable()

查看該名字是否可以被調用。同時可以被調用也就是函數,同理可以檢測是否是函數,返回bool類型。

id()

返回該對象的記憶體地址。

hash()

可哈希就是不可變對象,不可哈希就是可變對象。返回計算出的一個哈希值。

思考:字典取值快的原因?

我們都知道字典的key值是不可變對象,也就是可哈希對象,內部可以使用hash計算key的哈希值,將value存儲在這個哈希值的內置地址,當取數據的時候,直接拿記憶體地址,這樣就很快。

exec()、eval()

將字元串轉化為python程式碼執行。exec常用於處理流程內程式碼,eval常用於處理計算類。

示例:

exec("print(name)") #name

eval("print(name)") #name

區別:exec沒有返回值,eval有返回值。

示例:

print(exec('1+2+3+4+5')) #輸出為空

print(eval('1+2+3+4+5')) #15

compile()

編譯成exec執行或eval執行,參數1:如果是在本地讀取文本就填寫該文本,參數2:如果是在文件中讀取內容,就填寫文件名,不是就填'',參數3:編譯成eval或exec執行。

示例:

code = 'print(123456789)'

com = compile(code,'','exec')

exec(com)

另:當code中存在交互類程式碼時,寫成:

code = 'name = input("輸入你的姓名:")'

com = compile(code,'','single')

exec(com)

print(name)

雖然修改成single,但是執行還是使用exec。

進位轉換

bin()#轉換為二進位。oce()轉換為八進位。

hex()轉換為十六進位。

abs()

絕對值。

divmod()

print(divmod(10,3))

#(3,1)也就是10除以3,得到的第一個值是商,第二個值為餘數。

round()

round(5.213123,3)#5.213會四捨五入。

pow()

冪運算:pow(2,3)#8,pow(2,2,3)#1,2的2次方除以3取余。

sum()

求和。mix()#求最小值。max()#求最大值。

reversed()

反轉(倒敘),返回一個新的對象變成迭代器。

all()

print([0,'123456'])#False,0返回False,一假必假。

any()

print([0,'123456'])#True,一真必真。

sorter()

排序:

list1 = [5,3,7,9,4]

list2 = sorted(list1)

print(list1)

print(list2)

結果:

#[5,3,7,9,4]

#[3,4,5,7,9]

返回一個新的列表,不改變原列表內容。

zip()

示例:

name = ['張三','小花','李四']

sex = ['男','女','男']

生成一一對應的關係,zip返回的是一個迭代器。我們需要for循環取出。

for iter in zip(name,sex):

print(i)

結果:

#('張三','男')

#('小花','女')

#('李四','男')

如果兩個數量不統一,以少的為準。如果我的name多了一個王五,而沒有sex,就不會輸出王五。

另:zip中的參數還可以是多個。

filter()

def test(x):

return x % 2 ==1

ret = filter(test,[1,2,3,4])

# ret 同樣返回的是迭代器。

for i in ret:

print(i)

結果:1,3

也就是將[1,2,3,4]中的值一個一個帶入到test中。但返回的值依然是[1,2,3,4]中的值,起到篩選的作用。

map()

示例:

ret = map(abs,[1,2,3,-4,-5])

for i in ret:

print(i)

結果:1,2,3,4,5

另:filter和map很相似,區別就是filter並沒有改變原來的值,返回的是原本就有的值,map是修改了原來的值。