1.什么是函式
它是一段功能代碼,理解為一種功能行為,在記憶體中有空間區域,函式需要被呼叫才能執行(通過函式名來呼叫);
好處:
1).提高代碼的復用性
2).提升代碼的閱讀性
3).增加代碼的擴展性
4).增強了代碼的維護性
2.函式有五要素組成
①.函式修飾符 關鍵字def開頭
②.函式回傳值型別 有回傳值(型別:int、float、str、list...)/沒有回傳值
③.函式名 函式的名字(識別符號一種,滿足規則和規范)
④.形參串列 定義在小括號內(可能有形參,也可能沒有)
⑤.函式體 一段業務邏輯代碼
3.定義格式
① ③(④):
⑤
4.函式名的定義
識別符號的一種,滿足規則和規范:
對于其規范,和變數名保持一致
5. 自定義函式的四種定義場景
1).無參無回傳值
2).無參有回傳值
3).有參無回傳值
4).有參有回傳值
演示自定義函式的四種場景:
1 #1無參無回傳值 2 def func1(): 3 print('hello method...') 4 5 #2無參有回傳值 6 def func2(): 7 return True 8 9 #3有參無回傳值 10 def func3(a,b): 11 print(a + b) 12 13 #4有參有回傳值 14 def func4(a,b): 15 #在自定義函式中呼叫本模塊(.py檔案)別的自定義函式 16 func1() 17 return a if a > b else b
6.形參串列的多種定義情況:
演示形參的多種定義情況:
1). 默認引數的使用:
1 def func1(name="張三",age=18,height=175.5): 2 print(name,age,height) 3 4 # 呼叫自定義函式(不傳遞引數):會使用默認引數參與之后的運算 5 func1() 6 # 呼叫自定義函式(傳遞部分引數):傳遞的部分使用傳遞內容,其余部分使用默認引數參與運算 7 func1("李四")
2). 一般引數的使用:
1 def func2(name,age,address): 2 print(name,age,address) 3 4 #呼叫自定義函式:必須傳遞引數,而且位置和個數都要對的上 5 func2("李雷",21,"北京")
3). 關鍵字引數的使用:(好處:不用記住每個變數的位置)
1 def func3(name,age,address): 2 print(name,age,address) 3 4 #體現在呼叫自定義函式上:傳遞型別鍵值對的組合 5 func3(address="上海",name="韓梅梅",age=20)
7.可變引數的使用
在定義一項功能時,對于引數層面(到底幾個不確定),此時可以使用可變引數來實作;
引數解釋:*args:接受0~無窮多個單值,存入到一個元祖中回傳; **kwargs:接受0~無窮多個鍵值對組合,存入到一個字典中回傳,
1 def func4(*args,**kwargs): 2 print(args,type(args)) # 元祖型別 3 print(kwargs,type(kwargs)) # 字典型別 4 5 func4()
案例1:實作多個整數求和的操作
自定義函式:兩個原則
1).有沒有形參? 有,但是個數不確定,使用可變引數
2).有沒有回傳值? 可有可無
1 def mySum(*args): 2 sum1 = 0 3 for i in args: 4 sum1 += i 5 return sum1 6 7 mySum = mySum(1,2,3,4,5)
案例2:
1 def func1(*args,**kwargs): 2 print(args) 3 print(kwargs) 4 5 func1(0,100,3.14,True,"abcd",[10,20,30],name="班長",age=25) 6 7 # 以下代碼會報錯:因為*args定義在前,**kwargs定義在后,由于在傳遞引數的程序中已經出現了類似name="班長", 8 # age=25這樣的代碼,那么其后就不能出現單值資料的傳遞了 9 func1(0,100,3.14,True,"abcd",[10,20,30],name="班長",age=25,-100,3.14)
【注意事項】:
1).形式引數(形參):它可以認為是一個入口(在函式名后面的小括號中定義),并不存在實際資料,在代碼的體現上就是定義變數,等著接受實參;
2).實際引數(實參):實實在在存在的資料(可以是各種型別),將實際引數傳遞給形式引數(程序:稱為引數傳遞),之后在函式體中引數運算的都是實際引數
3).回傳值:在整個函式執行完畢后需不需要回傳給程式一些資料(分類:有回傳值/沒有回傳值)
如果有回傳值:需要使用關鍵字return進行資料的回傳
4).return關鍵字的作用:
(1).將需要回傳的資料給到函式的呼叫處(呼叫者)
(2).表示函式的結束
(3).和return關鍵字在同一作用域,在其后面不要去定義任何的代碼,因為永遠不可能被執行到
(4).return關鍵字后面也可以不定義任何的內容,它的作用僅僅意味著函式結束了...
8.全域變數&區域變數
全域變數: 1).作用域比較大,定義在.py檔案中,函式外;2).可以被檔案中任何一個函式所使用,
區域變數:1).作用域比較小,函式的形參或者函式體中; 2).只能被當前的這個函式所使用,出了此函式,外部夠不著它,
在區域位置修改全域變數的值:先使用global關鍵字定位到需要修改的全域變數,然后在使用全域變數 = 值操作進行修改,
在內部函式中修改外部函式中區域變數的值:先使用nonlocal關鍵字定位到需要修改的局變變數,再使用區域變數 = 值操作進行修改,
1 a=10 #a為全域變數 2 def func1(): 3 global a 4 a=20 5 print(a) 6 def func2(): 7 b=100 #b為區域變數 8 print(a,b) 9 10 # 以下代碼有問題:因為b是屬于func2()函式中的區域變數,出了func2()函式 外界都不能使用 11 print(b)
9.外部函式&內部函式
內部函式:定義在外部函式的內部,成為其一部分(認為是外部函式的成員)
1 def outer(): 2 print("我是外部函式...") 3 b=20 4 def inner(): 5 print("我是內部函式...") 6 nonlocal b 7 b=30 8 print(b) 9 inner() 10 print(b) 11 outer() 12 13 # 以下代碼有問題:對于內部函式的執行只能依賴于它的外部函式,不能出了外部函式在外界單獨執行; 14 inner( )
[補充概念】:
1.識別符號
大白話:凡是可以自己起名字的地方,都是識別符號
遵守以下三點規則:
1).范圍:a~z、A~Z、0~9、下劃線(_)
2).數字不能開頭:abc123 合法 ; 123abc 不合法
3).不能使用關鍵字和保留字,但是可以包含關鍵字和保留字 :class 不合法 ; classroom 合法
遵守以下兩點規范:
1).駝峰式原則:
對于變數而言:如果是多個單詞組成,第一個單詞首字母小寫,其余單詞首字母大寫,剩余字母全部小寫,舉例:helloWolrdChina
2).下劃線原則:
舉例:hello_world
2.常量和變數
常量:一旦定義,其值不可變;例如:0、100、3.14、True/False、"abc"...
變數:它是記憶體中的一塊存盤區域,可以存盤資料,并且隨時可以改變區域中的內容,
第一次存盤進去的資料我們稱為初始化值;
變數的定義格式:
1).變數名 = 值
2).變數名1,變數名2,...,值n = 值1,值2,...,值n
3).變數名1 = 變數名2 = ... = 變數名n = 值
3.弱&強型別語言
強型別語言:在定義變數的時候,就需要有明確的資料型別;
弱型別語言:在定義變數的時候,不需要有明確的資料型別;
4.關鍵字
理解:被python語言賦予特殊函式的英文單詞 例如:class、if、else、while、for...
5.內置函式
執行可以通過定義函式名執行成功的都是內置函式;函式之間是可以嵌套呼叫的(案例中有體現),常用的內置函式:round();abs();max();min();sum();hex();oct();bin();pow(x,y);divmod(x,y);ord();chr();type();id();len() ...
1). round(num1,num2):得到四舍五入之后的值;round里面的的第一個引數是接收的變數,第二個引數是保留多少位小數(可不填,表示保留整數位)
2). abs(num):得到資料的絕對值,特點:不管正數還是負數的絕對值都是其正數的形式,0的絕對值還是0
3). max(seq)、min(seq):得到seq物件的最大、最小值
4). sum(seq):得到seq中所有元素累加以后的和值回傳
【注意事項】:1).對于str型別的資料不能使用sum()求和,沒有意義,2).對于sum()函式只能接受容器型別資料,不能接受多個單值資料
1 # 以下兩個函式就是非法的 2 print(sum('12345')) 3 print(sum(1,2,3,4,5))
5). hex(num):將十進制資料num轉換為十六進制回傳(資料型別:str)
6). oct(num):將十進制資料num轉換為八進制回傳(資料型別:str)
7). bin(num):將十進制資料num轉換為二進制回傳(資料型別:str)
8). pow(x,y):計算x的y次方回傳
9). divmod(x,y):回傳一個元祖物件,有兩個元素,第一個元素記錄了x除以y后的商,第二個元素記錄了x除以y后的余數
10). ord(str):傳入字符資料,回傳整數值(ascii碼值)
11). chr(num):傳入整數資料(ascii碼值),回傳字符資料
【補充】字符編碼(字符集),記住3個分界點: '0' --> 48; 'A' --> 65; 'a' --> 97
12). type():得到資料的型別回傳
13). id():得到資料的記憶體地址(十進制的形式)回傳
14). len():得到資料的長度
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/195336.html
標籤:Python
