Python 函式引數

2021-07-16 14:07:25 字數 2544 閱讀 1492

#!/usr/bin/env python

#--- coding: utf-8 ---

"""定義函式的時候,我們把引數的名字和位置確定下來,函式的介面定義就完成了。

對於函式的呼叫者來說,只需要知道如何傳遞正確的引數,以及函式將返回什麼樣的值就夠了,

函式內部的複雜邏輯被封裝起來,呼叫者無需了解。

python的函式定義非常簡單,但靈活度卻非常大。除了正常定義的必選引數外,還可以使用預設引數、

可變引數和關鍵字引數,使得函式定義出來的介面,不但能處理複雜的引數,還可以簡化呼叫者的**。

"""#python function experiment.

#eg.

def power(x, n=2):

s = 1

while n > 0:

n = n - 1

s = s * x

return s

"""設定預設引數時,有幾點要注意:

一是必選引數在前,預設引數在後,否則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')

"""定義預設引數要牢記一點:預設引數必須指向不變物件

"""#可變引數 variable parameter

def calc(*numbers):

sum = 0

for n in numbers:

sum = sum + n * n

return sum

"""定義可變引數和定義list或tuple引數相比,僅僅在引數前面加了乙個*號。在函式內部

,引數numbers接收到的是乙個tuple,因此,函式**完全不變。

但是,呼叫該函式時,可以傳入任意個引數,包括0個引數

"""#關鍵字引數

def person(name, age, **kw):

print 'name:', name, 'age:', age, 'other:', kw

"""函式person除了必選引數name和age外,還接受關鍵字引數kw。在呼叫該函式時,

可以只傳入必選引數:

"""person('michael', 30)

#也可以傳入任意個數的關鍵字引數:

person('adam', 45, gender='m', job='engineer')

person('bob', 35, city='beijing')

#引數組合

"""在python中定義函式,可以用必選引數、預設引數、可變引數和關鍵字引數,這4種引數都可以一起

使用,或者只用其中某些,但是請注意,引數定義的順序必須是:

必選引數、預設引數、可變引數和關鍵字引數。

""""""

python3syntax:

命名關鍵字引數

對於關鍵字引數,函式的呼叫者可以傳入任意不受限制的關鍵字引數。

至於到底傳入了哪些,就需要在函式內部通過kw檢查。

def person(name, age, **kw):

if 'city' in kw:

# 有city引數

pass

if 'job' in kw:

# 有job引數

pass

print('name:', name, 'age:', age, 'other:', kw)

但是呼叫者仍可以傳入不受限制的關鍵字引數:

>>> person('jack', 24, city='beijing', addr='chaoyang', zipcode=123456)

如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,

只接收city和job作為關鍵字引數。這種方式定義的函式如下:

def person(name, age, *, city, job):

print(name, age, city, job)

>>> person('jack', 24, city='beijing', job='engineer')

如果函式定義中已經有了乙個可變引數,後面跟著的命名關鍵字引數就不再需要乙個特殊分隔符*了:

def person(name, age, *args, city, job):

print(name, age, args, city, job)

命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯.

"""

python引數函式 Python函式引數總結

coding utf 8 整理一下python函式的各種引數型別 位置引數 呼叫函式時,傳入的兩個值按照位置順序依次賦給引數 def power x,n s 1 while n 0 n n 1 s s x return s print power 5,2 預設引數 簡化函式的呼叫 def power...

python 引數 Python函式 引數

python中將函式作為引數,區分將引數直接寫成函式名和函式名 的區別。def fun1 fun print print print fun 執行fun1 fun4 時,fun為函式fun3的返回值x print type fun type fun type fun fun 執行fun1 fun4 ...

函式傳引數 python 函式引數

1.位置引數 最熟悉的一種引數形式,優點 簡單。缺點 傳遞引數不夠靈活 2.預設引數 優點 提高了 的復用性 缺點 容易產生二義性 注意事項 一是必選引數在前,預設引數在後。二是如何設定預設引數。當函式有多個引數時,把變化大的引數放前面,變化小的引數放後面。變化小的引數就可以作為預設引數。def p...