函數的調用、定義、參數 編輯 #######命名關鍵字參數沒完 abs()函數:絕對值 >>> abs(100) 100 >>> abs(-20) 20 max()函數:接收任意多個參數,並返回最大的那個 >>> max(1, 2) 2 >>> max(2, 3, 1, -5) 3 數據類型轉 ...
函數的調用、定義、參數
#######命名關鍵字參數沒完
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
函數參數
位置參數
計算
def power(x): return(x*x)
計算
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'}