調(diào)用函數(shù)
- 函數(shù)名其實(shí)就是指向一個(gè)函數(shù)對象的引用,完全可以把函數(shù)名賦給一個(gè)變量,相當(dāng)于給這個(gè)函數(shù)起了一個(gè)“別名”俊抵。
>>> a = abs # 變量a指向abs函數(shù)
>>> a(-1) # 所以也可以通過a調(diào)用abs函數(shù)
1
定義函數(shù)
- 在Python中,定義一個(gè)函數(shù)要使用def語句纽匙,依次寫出函數(shù)名务蝠、括號、括號中的參數(shù)和冒號:烛缔,然后馏段,在縮進(jìn)塊中編寫函數(shù)體,函數(shù)的返回值用return語句返回践瓷。
def my_abs(x):
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
if x >= 0:
return x
else:
return -x
- 空函數(shù)
def nop():
pass
實(shí)際上pass可以用來作為占位符院喜,比如現(xiàn)在還沒想好怎么寫函數(shù)的代碼,就可以先放一個(gè)pass晕翠,讓代碼能運(yùn)行起來喷舀。
if age >= 18:
pass
- 返回多個(gè)值
import math
def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)
原來返回值是一個(gè)tuple,但是在語法上淋肾,返回一個(gè)tuple可以省略括號硫麻,而多個(gè)變量可以同時(shí)接收一個(gè)tuple,按位置賦給對應(yīng)的值樊卓,所以拿愧,Python 的函數(shù)返回多值其實(shí)就是返回一個(gè)tuple,但寫起來更方便碌尔。
函數(shù)參數(shù)
- 必選參數(shù)在前浇辜,默認(rèn)參數(shù)在后,當(dāng)函數(shù)有多個(gè)參數(shù)時(shí)唾戚,把變化大的參數(shù)放前面柳洋,變化小的參數(shù)放后面。變化小的參數(shù)就可以作為默認(rèn)參數(shù)叹坦。
def enroll(name, gender, age=6, city='Beijing'):
print('name:', name)
print('gender:', gender)
print('age:', age)
print('city:', city)
- 只有與默認(rèn)參數(shù)不符的學(xué)生才需要提供額外的信息:
enroll('Bob', 'M', 7)
enroll('Adam', 'M', city='Tianjin')
- 可變參數(shù)
def calc(numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
>>> calc([1, 2, 3])
14
>>> calc((1, 3, 5, 7))
84
===========================================================
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[0], nums[1], nums[2])
14
-
關(guān)鍵字參數(shù)
可變參數(shù)允許你傳入0個(gè)或任意個(gè)參數(shù)熊镣,這些可變參數(shù)在函數(shù)調(diào)用時(shí)自動(dòng)組裝為一個(gè)tuple。而關(guān)鍵字參數(shù)允許你傳入0個(gè)或任意個(gè)含參數(shù)名的參數(shù)募书,這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動(dòng)組裝為一個(gè)dict绪囱。
def person(name, age, **kw):
print('name:', name, 'age:', age, 'other:', kw)
>>> 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'}
-
參數(shù)組合
在Python中定義函數(shù),可以用必選參數(shù)锐膜、默認(rèn)參數(shù)毕箍、可變參數(shù)、關(guān)鍵字參數(shù)和命名關(guān)鍵字參數(shù)道盏,這5種參數(shù)都可以組合使用而柑。但是請注意文捶,參數(shù)定義的順序必須是:必選參數(shù)、默認(rèn)參數(shù)媒咳、可變參數(shù)粹排、命名關(guān)鍵字參數(shù)和關(guān)鍵字參數(shù)。
def f1(a, b, c=0, *args, **kw):
print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)
def f2(a, b, c=0, *, d, **kw):
print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
>>> f1(1, 2)
a = 1 b = 2 c = 0 args = () kw = {}
>>> f1(1, 2, c=3)
a = 1 b = 2 c = 3 args = () kw = {}
>>> f1(1, 2, 3, 'a', 'b')
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {}
>>> f1(1, 2, 3, 'a', 'b', x=99)
a = 1 b = 2 c = 3 args = ('a', 'b') kw = {'x': 99}
>>> f2(1, 2, d=99, ext=None)
a = 1 b = 2 c = 0 d = 99 kw = {'ext': None}
本文內(nèi)容整理自廖雪峰的官方網(wǎng)站_Python教程
僅做學(xué)習(xí)記錄涩澡,不可轉(zhuǎn)載