Python基本語法 函式 引數的多型別傳值

2021-09-22 23:38:27 字數 3961 閱讀 5211

軟體

一般而言,形參和實參的數量要一致。但是當實參為序列資料型別時,我們可以將多個實參傳遞到形參中。

我們可以在實參列表中以 * 或者 ** 識別符號來限制傳入的實參必須為 tuple/list 或 dict 的型別物件。

其實不定長引數本質是將冗餘的實參轉換為tuple資料型別後再傳遞給函式。下面的例子傳遞了乙個tuple型別實參給函式,和使用不定長引數效果是一樣的。需要注意的是,不定長引數需要放到函式形參列表的後端,而tuple型別形參可以隨意放置。

in [33]: %pycat func1test.py

#!/usr/bin/env python

#filename:func1test.py

import sys

defprintyourenter

(input1,input2):

print input1

print input2

for var in input2:

print var

if __name__ == '__main__':

enter1 = raw_input("ple enter your living cities:")

enter2 = raw_input("ple enter your name:")

enter3 = raw_input("ple enter your age:")

tuple1 = (enter2,enter3)

printyourenter(enter1,tuple1) # 這裡沒有限制實參型別,可以傳入任意型別物件

in [34]: run func1test.py

ple enter your living cities:bj

ple enter your name:jmilk

ple enter your age:23

bj('jmilk', '23')

jmilk

23

注意:向函式傳度tuple還有一種形式:

in [91]: %pycat tupletest.py

#!/usr/bin/env python

#filename:tupletest.py

deftest

(x,y):

print x*y

if __name__ == '__main__':

t = (2,3)

test(*t) # 限制只能傳入 tuple 型別物件

in [92]: run tupletest.py

6

在呼叫函式的時候,使用 * 識別符號:標識將 t 元組中的元素以迭代的方式傳遞給形參。但是這種時候要求元組元素的個數與形參的個數要一致。

向函式傳遞list型別物件,與傳遞tuple型別物件類似。

in [61]: %pycat func1test.py

#!/usr/bin/env python

#filename:func1test.py

defprintyourenter

(input1,x,y):

print input1

print x

print y

if __name__ == '__main__':

enter1 = raw_input("ple enter your living cities:")

enter2 = raw_input("ple enter your name:")

enter3 = int(raw_input("ple enter your age:"))

li1 = [enter2,enter3]

printyourenter(enter1,*li1)

in [62]: run func1test.py

ple enter your living cities:bj

ple enter your name:jmilk

ple enter your age:23

bjjmilk

23

想函式傳遞dic資料型別需要注意下面幾點:

1.形參名與dic中的key相同,形參會自左往右的匹配第乙個與自己同名的key,並將此key對映的value傳遞到形參。

2.若有形參在dic中並沒有找到匹配的key,則會報錯。

3.若dic中有多個同名的key,則自右往左的優先順序來匹配。

4.形參與dic的key:value順序無關。

注意:若dic中有key不能與形參匹配時,需要人為的指定dic中key給形參,並傳遞其value給形參,否則會報錯。本質是將dic中的value值先取出來再傳遞到函式形參

functionname(dic[x][,...])
example:

in [45]: %pycat func1test.py

#!/usr/bin/env python

#filename:func1test.py

defprintyourenter

(input1,cities,name,age):

print input1

print cities

print name

print age

if __name__ == '__main__':

enter1 = raw_input("ple enter your living cities:")

enter2 = raw_input("ple enter your name:")

enter3 = int(raw_input("ple enter your age:"))

dic =

printyourenter('a',**dic)

in [46]: run func1test.py

ple enter your living cities:bj

ple enter your name:jmilk

ple enter your age:23abj

jmilk

23

當限制向函式傳遞乙個dic資料型別時,在呼叫函式時要使用 ** 來標識是乙個對映,即傳遞乙個字典型別的物件。而且在函式定義時,函式的形參必須與字典的key一致,才可以實現將字典的value傳遞給函式中對應的形參。

也可以寫成下面這種形式:

in [49]: %pycat func1test.py

#!/usr/bin/env python

#filename:func1test.py

defprintyourenter

(input1,dic):

print input1

print dic['cities']

print dic['name']

print dic['age']

if __name__ == '__main__':

enter1 = raw_input("ple enter your living cities:")

enter2 = raw_input("ple enter your name:")

enter3 = int(raw_input("ple enter your age:"))

dic =

printyourenter('a',dic)

in [50]: run func1test.py

ple enter your living cities:bj

ple enter your name:jmilk

ple enter your age:23abj

jmilk

23

jmilk

python語法引數 Python基本語法 函式

前言 目錄軟體環境 系統ubuntukylin 14.04 軟體python 2.7.4 ipython 4.0.0 引數的多型別傳值 一般而言,形參和實參的數量要一致。但是當實參為序列資料型別時,我們可以將多個實參傳遞到形參中。我們可以在實參列表中以 或者 識別符號來限制傳入的實參必須為 tupl...

Python 詳解基本語法 函式

python 詳解基本語法 概要 函式的返回值是函式重要的組成部分。函式的根本在於實現程式的部分功能,所以很多時候我們需要將函式執行後的結果返回給程式再由程式作出進一步的操作。可以說是函式的返回值令函式與函式之間,函式與主程式之間更加緊密的聯絡起來。函式的返回值 在python的函式中都有乙個返回值...

Python 函式的語法及引數傳遞

1.儲存可執行 在需要時多次呼叫 2.減少 數量 3.便於維護。1 語法 2def 函式名 形參1 形參2 形參3.3 塊 示例 def s a,b 函式定義 print a b a b s 1 2 函式呼叫函式名必須符合識別符號的規範 包含字母 數字 下劃線,不能以數字開頭。print是函式物件 ...