函式呼叫
要呼叫乙個函式,需要知道函式的名稱和引數
函式名其實就是指向乙個函式物件的引用,完全可以把函式名賦給乙個變數,相當於給這個函式起了乙個「別名」:
>>> a = abs
# 變數a指向abs函式
>>> a(-1) # 所以也可以通過a呼叫abs函式
1
函式定義
在python中,定義乙個函式要使用def語句,依次寫出函式名、括號、括號中的引數和冒號:,然後,在縮排塊中編寫函式體,函式的返回值用return語句返回。
例如:
def
my_abs
(x):
if x >= 0:
return x
else:
return -x
defnop
():#空函式
pass
引數檢查,呼叫函式時,如果引數個數不對,python直譯器會自動檢查出來,並丟擲typeerror:
traceback (most recent call last):
file "", line 1, in
typeerror: my_abs() takes 1 positional argument but
2 were given
但是如果引數型別不對,python直譯器就無法幫我們檢查。
>>> my_abs('a')
traceback (most recent call last):
file "", line
1, in
file "", line
2, in my_abs
typeerror: unorderable types: str() >= int()
>>> abs('a')
traceback (most recent call last):
file "", line
1, in
typeerror: bad operand type for
abs(): 'str'
isinstance()引數型別檢查:
def
my_abs
(x):
ifnot isinstance(x, (int, float)):
raise typeerror('bad operand type')
if x >= 0:
return x
else:
return -x
返回多個值
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)
但其實這只是一種假象,python函式返回的仍然是單一值,實際上返回的是乙個tuple。
可變引數
在python函式中,還可以定義可變引數。顧名思義,可變引數就是傳入的引數個數是可變的,可以是1個、2個到任意個,還可以是0個
利用list或tuple實現可變引數
def
calc
(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc([1, 2, 3]) #先組裝乙個list
14
但是呼叫的時候,需要先組裝出乙個list或tuple。
下面看看真正的可變引數如何實現:
def
calc
(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc(1, 2)
5>>> calc()
0>>> nums = [1, 2, 3]
>>> calc(*nums) #python允許你在list或tuple前面加乙個*號,把list或tuple的元素變成可變引數傳進去
14
關鍵字引數 Python的基礎學習 六 函式
4.傳遞實參的應用 5.將函式儲存到模組中 def hello print hello world hello def是用來定義函式的 hello 是函式名 中是用來放引數 形參和實參 的 之後的所有縮進行構成了函式體,指出了這個函式需要完成怎樣的工作 呼叫函式的時候,只需要傳遞相應引數和指出函式名...
Python學習筆記六 函式閉包
閉包 在函式巢狀的情況下,內部函式使用了外部函式的引數或者變數,並且把這個內部函式返回,這個內部函式可以成為閉包 對應得到就是乙個函式 舉例說明 no.1def line conf a,b def line x return a x b return line no.2def line conf a...
python教程(六)函式
函式定義就是對使用者自定義函式的定義。參見 標準型別層級結構 一節 函式定義是一條可執行語句。它執行時會在當前區域性命名空間中將函式名稱繫結到乙個函式物件 函式可執行 的包裝器 這個函式物件包含對當前全域性命名空間的引用,作為函式被呼叫時所使用的全域性命名空間。關鍵字def引入乙個函式 定義。它必須...