最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

Day14-函式參數

XAMPP下载 admin 787浏览 0评论
 參數
函式定義時的參數稱為「形式參數(parameter、formal argument)」,函式呼叫時的參數稱為「實際參數(argument、actual argument)」。實際參數是呼叫時從外界真正傳入的物件,形式參數則是定義時指定的名稱,定義時尚未指向某物件,呼叫時才會進行綁定動作、指向傳入的物件,此時在涵式內才能以形式參數的名稱來存取。所以呼叫會建立形式參數與實際參數之見的綁定關係,這動作就如同指派述句,把某物件指派給某名稱,如以下例子說明(在此會多做參數的註解):

def num(x,y):            #定義函式,x,y為形式參數
return x**2+y**2

>>>num(1,2)              #呼叫函式,傳入字面值建立物件
5
>>>a,b = 3,4
>>>num(a+b,a-b)          #呼叫函式,傳入運算式
50
>>>l = [0,1,2]
>>>num(len(li),sum(range(3)))  #函式呼叫也是運算式,也可當實際參數
18
那麼有個問題點是,你在呼叫時多給參數或少給參數,均會呼叫失敗,如下所示:

def Area(width,height):
a = width*height
return a

>>> Area(1,2,3)
Traceback (most recent call last):
File “<pyshell#10>”, line 1, in <module>
Area(1,2,3)
TypeError: Area() takes 2 positional arguments but 3 were given     #說明多個參數的錯誤訊息
>>> Area(1)
Traceback (most recent call last):
File “<pyshell#11>”, line 1, in <module>
Area(1)
TypeError: Area() missing 1 required positional argument: ‘height’  #說明少個參數的錯誤訊息
所以有一種特殊情況是,Python允許在定義函式時提供預設值,即在函式定義時使用。格式為def 函式名稱(參數1, 參數2=值…),我們拿之前印星星的例子來看看:

def star(s=3):         #預設3
for n in range(s):
for m in range(n+1):
print(‘*’,end=”)
print()

>>> star()            #輸出預設值
*
**
***
>>> star(5)
*
**
***
****
*****
此外,除了上述提的位置參數外,還有一種是關鍵字參數,也就是在呼叫時明確寫上形式參數的名稱。通常是在參數很多個的時候,避免設計者混淆,例如:

def color(red, green, blue, alpha = 1.0):     #alpha來代表透明度,1.0為完全不透明
pass

>>> color(red=0, green=0.5, blue=0.4)         #alpha使用預設值1.0
>>> color(red=0, green=0.5, blue=0.4, alpha = 0.5)   #為半透明
>>> color(0, 0.5,0.4, 0.5)                    #若用位置參數確實很難分辨哪個顏色
>>> color(blue=4, green=9, red=6)             #位置換掉,但名稱仍有對應也是可以的
>>> color(9, red=6, blue=4)                   #其中有少的話就會錯誤喔
Traceback (most recent call last):
File “<pyshell#16>”, line 1, in <module>
color(9, red=6, blue=4)
TypeError: color() got multiple values for argument ‘red’
最後一個要提的是不定數目的參數函式,如果想要有很多參數進行運算,Python函式建立接受沒有預先設定的參數個數,方法是在參數名稱前加星號就行了,語法為:

def 函式名稱(*參數):

def func(*arg):

實際例子

def calsum(*params):
total = 0
for p in params:
total += p
return total

print(‘3個參數總和:%d’%calsum(4,5,9))
print(‘4個參數總和:%d’%calsum(4,5,9,15))
補充
弱弱的補一下,有預設值的參數必須放在一般參數後面,因為呼叫傳入資料時,都會先給一般參數值,再依照先後順序分配,預設值就是拿來補足空缺的拉~那如果程式內有兩個相同名稱的函式,後面建立的函式則會覆蓋掉前面得喔!

转载请注明:XAMPP中文组官网 » Day14-函式參數

您必须 登录 才能发表评论!