?
函式的呼叫、定義、引數

?編輯
#######命名關鍵字引數沒完
abs()函式:絕對值
>>> abs(100) 100 >>> abs(-20) 20![]()
max()函式:接收任意多個引數,并回傳最大的那個
>>> max(1, 2) 2 >>> max(2, 3, 1, -5) 3![]()
資料型別轉換函式:
int():整數
float():浮點型
str():字符型
bool():布爾型
定義函式
def my_abs(x): if x >= 0: return x else: return -x![]()
執行到
return時,函式就執行完畢,并將結果回傳如果已經把
my_abs()的函式定義保存為abstest.py檔案了,那么,可以用from abstest import my_abs來匯入my_abs()函式,注意abstest是檔案名(不含.py擴展名):
空函式
如果想定義一個什么也不做的空函式,可以用pass陳述句:
def nop(): pass![]()
pass 用來作為占位符,比如沒想好寫什么函式代碼,可以先放個pass讓整體代碼正常運行
pass也可以用在其他陳述句
if age >= 18: pass![]()
這句缺少pass,代碼就會有語法錯誤
回傳多個值
比如在游戲中經常需要從一個點移動到另一個點,給出坐標、位移和角度,就可以計算出新的坐標:
import math #表示匯入math包,并允許后續代碼參考包里的sin、cos等函式 def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny![]()
python多值回傳就是回傳一個tuple

?編輯
函式引數
位置引數
計算
<span ><img src="https://img.uj5u.com/2023/02/20/339531200632262.gif" height="15" title="點擊并拖拽以移動" data-cke-widget-drag-handler="1" data-mce-src="https://img.uj5u.com/2023/02/20/339531200632262.gif"><span title="點擊并拖拽以改變尺寸">?<span title="編輯圖片">編輯的函式:
def power(x): return(x*x)![]()
計算
<span ><img src="https://img.uj5u.com/2023/02/20/339531200632262.gif" height="15" title="點擊并拖拽以移動" data-cke-widget-drag-handler="1" data-mce-src="https://img.uj5u.com/2023/02/20/339531200632262.gif"><span title="點擊并拖拽以改變尺寸">?<span title="編輯圖片">編輯的函式:
def power(x, n): s = 1 while n > 0: s = s * x n = n - 1 return x![]()
x和n都是位置引數,呼叫函式時,傳入的兩個值按照位置順序依次賦給引數x和n
把第二個引數n的默認值設定為2:
def power(x, n = 2): s = 1 while n > 0: s = s * x n = n - 1 return x![]()
此時,power(5)和power(5,2)等價
若n>2,就必須明確地傳入n,比如power(5,3)
注意:
必選引數在前,默認引數在后,否則Python的解釋器會報錯(容易產生歧義)
當函式有多個引數時,把變化大的引數放在前面,默認引數放在后面(降低呼叫函式的難度)
如:
def enroll(name, gender, age=6, city='Beijing'): print('name:', name) print('gender:', gender) print('age:', age) print('city:', city)![]()
大多數學生注冊時不需要提供年齡和城市,只提供必須地兩個引數即可
enroll('Bob', 'M', 7) enroll('Adam', 'M', city='Tianjin')![]()
?編輯
可變引數
傳入的引數個數是可以變的
如:給一組數字,計算平方和(作為一個list或tuple傳進來)
def calc(numbers): sum = 0 for n in nmumbers: sum = sum + n * n return sum![]()
若函式引數為可變引數:
def calc(*numbers): sum = 0 for n in numbers: sum = sum + n * n return sum![]()
定義可變引數和定義一個list或tuple引數相比,只是在引數前面加一個 * 號,引數numbers接收到的是一個tuple,呼叫該函式時,可以傳入任意個引數,包括0個引數
關鍵引數:
關鍵字引數允許你傳入0個或任意個含引數名的引數:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)![]()
也可以傳入任意個數的關鍵字引數:
>>> person('Michael', 30) name: Michael age: 30 other: {} >>> person('Bob', 35, city='Beijing') name: Bob age: 35 other: {'city': 'Beijing'} >>> person('Adam', 45, gender='M', job='Engineer') name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}![]()
關鍵引數可以擴展函式功能,比如,person函式name和age兩個引數是必選項,但如果提供更多的引數就需要利用關鍵字引數
可以把字典轉換為關鍵字引數傳進去:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'} >>> person('Jack', 24, **extra) name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
???
>>> extra = {'city': 'Beijing', 'job': 'Engineer'} >>> person('Jack', 24, city=extra['city'], job=extra['job']) name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544322.html
標籤:Python
上一篇:05-python運算子

