定義乙個函式要使用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四種中最常見是前兩種,基本上一般點的教程都會涉及,後兩種一般很少單獨出現,常用在混合模式中 第...