1. 程式人生 > 其它 >6.29學習日記

6.29學習日記

今日內容

函式的基本使用
1.函式的使用原則:先定義,後呼叫

使用函式:不需要重複程式碼,可以重複呼叫,程式碼清晰好管理

函式後加''''''可以編寫註釋   (注意縮排)
定義函式
def foo(x,y) 引數後可以加型別提示(Type hinting)
'''
註釋

'''
函式體程式碼

return 返回值
定義時傳送的事
只檢測語法不執行程式碼並把程式碼存到記憶體空間中

函式使用(只有函式後面才能加()
foo()
2.定義函式的三種格式

無參函式:不需要外界傳值

有參函式:需要外界傳值

空函式:先佔位使用

3.函式的返回值

三種(沒有return,return一個值,return多個值返回小元組)

無論多少次迴圈,執行到ruturn直接返回

4.呼叫函式的三種格式
語句形式(單純執行一條命令)
foo()
表示式形式(加入運算子就是表示式)
res = foo()
引數形式(是另一個函式的引數)
函式引數
形參和實參

形參:函式定義階段,括號內指定的引數(變數名)

實參:函式呼叫階段,括號內傳入的值(變數值)

二者的關係:在函式呼叫時,會將實參值繫結形參名

函式呼叫完畢後會接觸繫結

1.位置形參

在函式定義階段,按照從左到右的順序依次定義的引數,稱之為位置形參

特點:必須要傳值,多一個少一個都不行

2.位置實參

在函式呼叫階段,按照從左到右的順序依次傳入的值,稱之為位置實參

特點:按照順序依次為形參賦值

3.關鍵字實參

在函式定義階段,按照key=value的格式來傳值,稱之為關鍵字實參

特點:可以打亂順序,但仍能為指定引數賦值

注意:可以混用位置引數和關鍵字實參,但是位置實參必要跟在關鍵字實參前面而且不能為用一個形參賦值

4.預設形參

在函式定義階段,就已經為形參賦值,稱之為預設形參

特點:定義階段就已經有值了,意味著在呼叫階段可以不用為其傳值(傳也可以)

注意:1.可以混用位置形參與關鍵字形參,但是位置形參必須跟在預設形參的前面

2.預設形參的值推薦指向不可變型別

  1. 預設形參的值只在函式定義階段被賦值一次

5.可變長引數:*與**

在形參中帶*:會將溢位的位置實參值彙總成元組,然後賦值給緊跟其後的形參名

在形參中帶**:會將溢位的位置實參值彙總成字典 ,然後賦值給緊跟其後的形參名

在實參中帶*:打散,會把列表中的值賦值給對應的形參名

在實參中帶**:會把字典中的值賦值給對應的形參名,如果使用的是 *的話會將key值賦值給對應的形參名

 def index(a, b, c):
print(a, b, c)

def wrapper(*args,**kwargs): # args=(1,2,3) kwargs={"x":111,"y":222,"z":333}
index(*args,**kwargs) # index(*(1,2,3),**{"x":111,"y":222,"z":333})
# index(1,2,3,x=111,y=222,z=333)

wrapper(1, 2, 3, x=111, y=222, z=333)
##wrapper(1,c=3,b=2)
傳給wrapper的資料一模一樣的傳給index
關鍵字引數

排序:

形參---->有預設值的形參---->帶*號的形參---->命名關鍵字形參---->帶有**的形參

命名關鍵字形參如果有值不賦值也行

內建函式

abs():絕對值

all():所有遍歷出來的結果為真才為真

any():只要遍歷出來的結果一個真就為真

bin():十進位制轉換

oct():八進位制轉換

hex():十六進位制轉換

callable():判斷輸入的值能否被呼叫

dir():列表能使用的方法

divmod(10,3): 10 % 3 取餘存進元組

pow(10,2,3): 10 ** 2 % 3

enumerate():提取出索引(可以單獨解壓)

eval():可以把字串裡的程式碼執行

forzenset():不可變集合