Python函式知識集錦(一)

2021-10-05 13:12:05 字數 4857 閱讀 7069

函式也是⼀個物件,函式⽤來儲存⼀些可執⾏的**,並且可以在需要時,對這些語句進⾏多次調⽤。

在python中,函式有五大要點,分別是def、函式名、函式體、引數、返回值,以及兩個英文版符號,分別是括號和冒號。

#函式語法

def 函式名(

[形參1

,形參2

,形參3..

..])

:#**塊

定義函式時可以在函式括號裡定義逗號隔開的數量不等的形參

形參(形式引數) 定義形參就相當於在函式內部宣告了變數,但是並不是賦值。

實參(實際引數)指定了形參,那麼在調⽤函式時必須傳遞實參,實參將會賦值給對應的形參,簡單來說有⼏個形參就要有⼏個實參。

def

fun(a,b,c=8)

:print

(f'a=,b=,c='

)#如果⽤戶傳遞了引數則預設值不會⽣效。

fun(1,

6,9)

#a=1,b=6,c=9

#如果⽤戶沒有傳遞,則預設值就會⽣效。

fun(1,

6)#a=1,b=6,c=8

def

fun1

(a=2

,b=3

,c=6):

print

(f'a=,b=,c='

)fun1(c=

1,b=6)

#a=2,b=6,c=1

fun1(a=

2,b=

6,c=9)

#a=2,b=6,c=9

fun1(b=

8,a=6)

#a=6,b=8,c=6

def

fun2

(a=2

,b=3

,c=6):

print

(f'a=,b=,c='

)fun2(

6,c=9)

#a=6,b=3,c=9

#fun2(b=8,6) #syntaxerror: positional argument follows keyword argument

#fun2(b=8,c=6,2) #syntaxerror: positional argument follows keyword argument

fun2(

6,c=

9,b=80)

#a=6,b=80,c=9

def

sum_fun

(a,b)

:print

(a+b)

#定義乙個函式求任意幾個數的和

defanydatasumfun

(*a)

:print

('a='

,a,type

(a))

#函式的裝包

# sum_fun(2,6)

anydatasumfun(

)# a= ()

anydatasumfun(1,

2,3,

4,5,

6,7,

8,9,

10)#a= (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

defmysum

(*a)

:print

(a)return

sum(a)

print

(mysum(1,

2,3,

4,5,

6,7,

8,9,

10))# (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# 55

函式引數星不可亂加,如下會出現報錯

#函式兩個以上的單星,會報錯

# def mysum1(a,*b,*c): #syntaxerror: invalid syntax

# print(a)

# print(b)

# print(c)

# def mysum11(*a,b,*c): #syntaxerror: invalid syntax

# print(a)

# print(b)

# print(c)

#

如果星號在中間或者在最前面,函式定義合法,但呼叫傳參需注意要有效的結合指定引數傳參,否則會報錯。

#星在中間的情況,傳參注意

defmysum2

(a,*b,c)

:print

(a)print

(b)print

(c)#錯誤的傳參示範:報錯def mysum1(a,*b,*c): #syntaxerror: invalid syntax

#mysum2(1,2,3,4,5,6,7,8) #typeerror: mysum2() missing 1 required keyword-only argument: 'c'

mysum2(1,

2,3,

4,5,

6,7,

8,9,c=10)

#正確呼叫示範結果:

# 1# (2, 3, 4, 5, 6, 7, 8, 9)

# 10

#星在最開始的情況

defmysum3

(*a,b,c)

:print

(a)print

(b)print

(c)#mysum3(1,2,3,4,5,6,7,8,9,c=10) #typeerror: mysum3() missing 1 required keyword-only argument: 'b'

mysum3(1,

2,3,

4,5,

6,7,

8,b=

9,c=10)

#正確的傳參的輸出結果:

# (1, 2, 3, 4, 5, 6, 7, 8)

# 9# 10

函式引數為**的形參可以接受其他關鍵引數,它會將這些引數統一儲存到字典當中,字典的key就是引數的名字,字典的value就是引數的值,而且這個也只能有且只有乙個,並且必須寫在所有的引數後面,

不能寫中間也不能寫開頭。

def

mysum5

(**a)

:print

(a)#mysum5(3,4) #typeerror: mysum5() takes 0 positional arguments but 2 were given

mysum5(h=

3,d=4)

#mysum5(c=

3,b=

4,a=10)

#

def

mysum6

(b,c,

**a)

:print

(b)print

(c)print

(a)mysum6(c=

3,b=

4,a=

10,h=

89,w=28)

# 4# 3

#

結論:

*a處理的是位置引數

**a處理的是關鍵字引數

def

fun(a,b,c)

:print

('a='

,a,end=

' ')

print

('b='

,b,end=

' ')

print

('c='

,c)t =

(100,20

,30)#fun(t) typeerror: fun() missing 2 required positional arguments: 'b' and 'c'

fun(t[0]

,t[1

],t[2]

)#a= 100 b= 20 c= 30

#問題:如果元組有多個元素,則上面的方法就顯得臃腫

#用函式呼叫傳實參時,採用有序型別前面加*,這樣他就會自動的序列的元素,逐一的解析賦值給函式對應的形參

#元組作為實參函式解包的情況

a =(50,

60,70)

fun(

*a)#a= 50 b= 60 c= 70

#列表作為實參函式解包的情況

list_a =[1

,2,3

]fun(

*list_a)

#a= 1 b= 2 c= 3

#但是要注意,序列實參和形參個數應該盡量保持一致,否則在不加組包(形參加星號的方式)就會報錯

#list_b = [2,4,7,8]

#fun(*list_b)#typeerror: fun() takes 3 positional arguments but 4 were given

# 字典作為實參前面加**函式做自動解包

dict_c =

fun(

**dict_c)

#a= 5900 b= 2890 c= 1200

總結:

1.函式組包是函式定義的形參加*號。

2.函式的解包函式掉用傳參時,有序實參,前面加*號

小結:

1.函式也是乙個物件

2.形參和實參:形參和實參的數量要匹配;

3.函式的傳遞方式: 位置傳參和關鍵字傳參;

4.不定長引數: *只能接收位置傳參,**只能接收關鍵字傳參;

5.引數的解包:必須遵守的原則是 序列中的元素的個數必須和形參保持一致。

python知識集錦

程式執行方式 互動式 也稱為解釋語言或指令碼語言 和檔案式 也稱為編譯語言或靜態語言 解釋語言 逐條轉換為目標 編譯語言 整體轉換為目標 程式語言 對計算機能夠理解和識別使用者操作的一種互動體系,按照特定規則組織計算機指令,使計算機自動進行運算處理。電腦程式 按照程式語言規則組織起來的一組計算機指令...

Python優秀函式庫集錦(一)

numpy python的一種開源的數值計算擴充套件。這種工具可用來儲存和處理大型矩陣,比python自身的巢狀列表 nested list structure 結構要高效的多 該結構也可以用來表示矩陣 matrix pandas 它是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的...

Python 趣味知識點集錦

虛數由實部和虛部兩個部分構成 real imag 虛部字尾為j或j 其中實數部分和虛數部分都為浮點數。例如定義乙個虛數,分別輸出它的實部和虛部 a 4.7 0.666j 定義乙個虛數 print a 輸出這個虛數 print a.real 輸出實部 print a.imag 輸出虛部 print a...