- 調(diào)用官方函數(shù)
函數(shù)參考 https://docs.python.org/3/library/functions.html#abs
- 自定義函數(shù)
用 def語句定義函數(shù)
def my_abs(x):
if x >= 0:
return x
else:
return -x
在Python交互環(huán)境中定義函數(shù)時,注意Python會出現(xiàn)...的提示亏吝。函數(shù)定義結(jié)束后需要按兩次回車重新回到>>>提示符下
如果你已經(jīng)把my_abs()的函數(shù)定義保存為abstest.py文件了双揪,那么活喊,可以在該文件的當(dāng)前目錄下啟動Python解釋器瞬捕,用from abstest import my_abs來導(dǎo)入my_abs()函數(shù)险绘,注意abstest是文件名(不含.py擴(kuò)展名)
- 空函數(shù)
如果想定義一個什么事也不做的空函數(shù)暮刃,可以用pass語句
def nop():
pass
pass語句什么都不做翔试,那有什么用?實(shí)際上pass可以用來作為占位符蚁吝,比如現(xiàn)在還沒想好怎么寫函數(shù)的代碼旱爆,就可以先放一個pass舀射,讓代碼能運(yùn)行起來。
# pass還可以用在其他語句里
if age >=18:
pass
- my_abs添加數(shù)據(jù)檢測怀伦,使用內(nèi)置函數(shù)isinstance()實(shí)現(xiàn)
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >=0:
return x
else:
return -x
返回多個值
import match
def move(x, y, step, angle = 0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
#import math語句表示導(dǎo)入math包脆烟,并允許后續(xù)代碼引用math包里的sin、cos等函數(shù)
>>> x, y = move(100, 100, 60, math.pi / 6)
>>> print(x, y)
151.96152422706632 70.0
但其實(shí)這只是一種假象房待,Python函數(shù)返回的仍然是單一值
>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)
原來返回值是一個tuple邢羔!但是,在語法上桑孩,返回一個tuple可以省略括號拜鹤,而多個變量可以同時接收一個tuple,按位置賦給對應(yīng)的值流椒,所以敏簿,Python的函數(shù)返回多值其實(shí)就是返回一個tuple,但寫起來更方便
小結(jié):
- 定義函數(shù)時宣虾,需要確定函數(shù)名和參數(shù)個數(shù)惯裕;
- 如果有必要,可以先對參數(shù)的數(shù)據(jù)類型做檢查绣硝;
- 函數(shù)體內(nèi)部可以用return隨時返回函數(shù)結(jié)果蜻势;
- 函數(shù)執(zhí)行完畢也沒有return語句時,自動return None鹉胖。
- 函數(shù)可以同時返回多個值握玛,但其實(shí)就是一個tuple。