Python 函式的定義 引數及呼叫

2021-10-10 13:11:39 字數 3321 閱讀 7489

定義乙個函式要使用def語句,依次寫出函式名、括號、括號中的引數和冒號,然後,在縮排塊中編寫函式體,函式的返回值用return語句返回。

如果你已經把my_abs()的函式定義儲存為abstest.py檔案了,那麼,可以在該檔案的當前目錄下啟動python直譯器,用from abstest import my_abs來匯入my_abs()函式。

空函式:

def

nop():

pass

作用:佔位,如現在還沒想好怎麼寫函式的**,就可以先放乙個pass,讓**能執行起來。pass還可以在if:else:語句中。

引數型別檢查:在函式中加入isinstance()函式,如:

if

notisinstance

(x,(

int,

float))

:raise typeerror(

'bad operand type'

)

if語句成立會丟擲』bad operand type』。

返回多個值(返回tuple):

import math

defmove

(x, y, step, angle=0)

: nx = x + step * math.cos(angle)

ny = y - step * math.sin(angle)

return nx, ny

x, y = move(

100,

100,

60, math.pi /6)

#呼叫

import math語句表示匯入math包,並允許後續**引用math包裡的sin、cos等函式。

函式的引數:

①定義的函式的引數除正常定義的位置引數外,還可以使用預設引數、可變引數和關鍵字引數,使函式呼叫簡單。

②位置引數:如def power(x, n):,則x,n為位置引數,需按順序傳參。

③預設引數:如def power(x, n=2):,則呼叫方法power(5)power(5,2)

注意:必選引數在前,預設引數在後,可不傳入該引數則使用預設值。

④當不按順序提供部分預設引數時,需要把引數名寫上。比如呼叫enroll('adam', 'm', city='tianjin'),意思是,city引數用傳進去的值,其他預設引數繼續使用預設值。

⑤定義預設引數要牢記一點:預設引數必須指向不變物件!否則可變變數可能被修改

⑥可變引數:需要傳入list、tuple或二者位址。可變引數即允許你傳入0個或任意個引數,這些可變引數在函式呼叫時自動組裝為乙個tuple

常見用法例如:

nums =[1

,2,3

]def

calc

(*numbers)

:#定義函式

sum=

0for n in number:

sum+= n*n

return

sumcalc(

*nums)

#呼叫方法1:利用現有tuple呼叫函式

clac(1,

2)#呼叫方法2:自動將引數組裝為tuple

⑦關鍵字引數:允許傳入0個或任意個含引數名的引數,這些關鍵字引數在函式內部自動組裝為乙個dict(鍵值對)

舉例:

def

person

(name, age,

**kw)

:print

('name:'

, name,

'age:'

, age,

'other:'

, kw)

person(

'michael',30

)#不傳入關鍵字引數

#結果:name: michael age: 30 other: {}

person(

'adam',45

, gender=

'm', job=

'engineer'

)#結果:name: adam age: 45 other:

extra =

#新建dict

person(

'jack',24

, city=extra[

'city'

], job=extra[

'job'])

#結果:name: jack age: 24 other:

⑧命名關鍵字引數:限制關鍵字引數的key,命名關鍵字引數必須傳入對應鍵值對。定義函式中有可變引數則不需要分隔符*,否則需要*,舉例:

def

person

(name, age,

*, city, job)

:#定義函式含命名關鍵字引數

pass

person(

'jack',24

, city=

'beijing'

, job=

'engineer'

)#呼叫l=[

1,2,

3]defperson

(name, age,

*args, city, job)

:pass

person(

'jack',24

,*l,city=

'beijing'

, job=

'engineer'

)#呼叫

defperson

(name, age,

*, city=

'beijing'

, job)

:#含預設引數可不傳參

pass

person(

'jack',24

,*l,job=

'enginner'

)#呼叫

⑨引數組合:定義函式的引數可以是必選引數、預設引數、可變引數、命名關鍵字引數、關鍵字引數,且順序按照以上定義

在函式呼叫的時候,python直譯器自動按照引數位置和引數名把對應的引數傳進去,預設引數和關鍵字引數可以不傳入。

Python中的函式定義及引數

1 函式必須先宣告在使用,自定義函式採用關鍵字def,返回語句return,同時可以支援pass語句佔位,標明函式為空函式 函式 自定義求絕對值函式 def myabs x ifnot isinstance x int,float raise typeerror illigel argument.i...

Python函式的引數定義

python的函式具有非常靈活的引數形態,既可以實現簡單的呼叫,又可以傳入非常複雜的引數。預設引數一定要用不可變物件,如果是可變物件,程式執行時會有邏輯錯誤!要注意定義可變引數和關鍵字引數的語法 args是可變引數,args接收的是乙個tuple kw是關鍵字引數,kw接收的是乙個dict。以及呼叫...

Python函式引數定義及傳遞方式解析

python中函式定義引數有四種形式 def fun1 a,b,c pass def fun2 a 1,b 2,c 3 pass def fun3 args pass def fun4 kargs pass四種中最常見是前兩種,基本上一般點的教程都會涉及,後兩種一般很少單獨出現,常用在混合模式中 第...