函數參數
Python中的函數參數很靈活,具體體現在傳遞參數有都中形式上。本節介紹幾種不同形式的參數和調用方式。
使用關鍵字參數調用函數
爲了提高函數調用的可讀性,在函數調用時可以使用關鍵字參數調用。採用關鍵字參數調用函數,在函數定義時不需要做額外工作。
實例代碼如下:
#-*- coding = utf-8 -*-
def print_area(width, height):
area = width * height
print("{0} x {1} 長方形的面積:{2}".format(width, height, area))
print_area(320.0, 48.0) # 沒有采用關鍵字參數函數調用
print_area(width = 320.0, height = 480.0) # 採用關鍵字參數函數調用
print_area(320.0, height = 480.0) # 採用關鍵字參數函數調用
# print_area(width = 32.0, height) #發生錯誤
#原因--height沒有數值,系統就會認爲是一個變量,而這個變量沒有定義聲明
print_area(height = 480.0, width = 320.0) #採用關鍵字參數函數調用
代碼很簡單,就不用了多說了
參數默認值
在定義函數的時候可以爲參數設置一個默認值,調用函數時可以忽略該參數。
實例:(下面兩段代碼是一體的)
# -*- coding = utf-8 -*-
def make_coffee(name = "卡布奇諾"):
return "製作一杯{0}咖啡".format(name)
上述代碼定義了makeCoffee()
函數,其中把卡布奇諾😋挺好喝的設置爲了默認值。在參數列表中,默認值可以跟在參數類型後面。在調用的時候,如果調用者沒有傳遞參數,則使用默認值,調用代碼如下:
coffee1 = make_coffee("拿鐵")
coffee2 = make_coffee()
print(coffee1)
print(coffee2)
其中coffee1 = make_coffee("拿鐵")
代碼是傳遞“拿鐵”,沒有使用默認值。coffee2 = make_coffee()
這一行沒有傳遞參數,因此使用默認值。
StdOut:
製作一杯拿鐵咖啡
製作一杯卡布奇諾咖啡
**提示(新手可以不看):**Java語言中make_coffee()
函數可以採用重載實現多個版本。Python不支持函數重載,而是使用參數默認值的方式提供類似的重載功能。
函數返回值
Python函數的返回值也是比較靈活的(Python的東西都比較靈活),主要有三種形式:無返回值、單一返回值和多返回值。
無返回值函數
有的函數只是爲了處理某個過程,此時可以將函數設計爲無返回值的。所謂無返回值,事實上是返回None,None表示沒有實際意義的數據。
實例代碼:打開
#-*- coding = utf-8 -*-
def show_info(sep = ':', **info): #可變參數,下面講一下
"""定義**可變參數函數, dict"""
print('-----info-----')
for key, value in info.items():
print('{0} {2} {1}'.format(key, value, sep))
return #return None
result = show_info('->', name = 'Tony', age = 18, sex = True)
print(result)
def sum(*numbers, multiple = 1):
"""定義*可變參數函數, tuple"""
if len(numbers) == 0:
return
total = 0.0
for number in numbers:
total += number
return total * multiple
print(sum(30.0, 80.0))
print(sum(multiple = 2))
StdOut:
-----info-----
name -> Tony
None
110.0
None
-
上述代碼
show_info()
函數中有一個**info
的參數,這是一個可變參數,下面詳細解釋一下。Python中函數的參數個數可以變化,這種參數稱爲可變參數。Python中的可變參數有兩種,即參數前加*
或**
形式,*
可變參數被組裝成一個元組,**
可變參數在函數中被組裝成一個字典。-
*
可變參數下面看一個實例:(部分代碼)
def sum(*numbers, multiple = 1): total = 0.0 for number in numbers: total += number return total * multiple print(sum(100.0, 20.0, 30.0)) print(sum(30.0, 80.0)) print(sum(30.0, 80.0, multiple = 2)) double_tuple = (50.0, 60.0, 0.0) print(sum(30.0, 80.0, *double_tuple))
StdOut:
150.0
110.0
220.0
220.0
不用說都懂了吧😏
-
**
可變參數下面看一個實例:(部分代碼)
def show_info(sep = ':', **info): print('-----info-----') for key, value in info.items(): print('{0} {2} {1}'.format(key, value, sep)) show_info('->', name = 'Tony', age = 18, sex = True) show_info(student_name = 'Tony', sex = True, sep = '=')
都不用說吧?挺簡單的
-
返回值爲空的時候可以用
return
或return None
都可以。
-
多返回值函數
有時候需要函數返回多個值,實現返回多個值的方式有很多,簡單的方式是使用元組返回多個值,因爲元組可以容納多個數據,另外元組是不可變的,使用起來比較安全。
實例:
#coding=utf-8
def position(dt, speed):
posx = speed[0] * dt #speed[0] 是X軸上的速度
posy = speed[1] * dt #speed[1] 是Y軸上的速度
return (posx, posy)
move = position(60.0, (10, -5)) #move是一個元組,用來存儲多個返回值
print("物體位移:({0}, {1})".format(move[0], move[1]))
求贊
如果您認爲此篇文章從對您有用,請點贊,如果寫錯,請糾正評論
urn (posx, posy)
move = position(60.0, (10, -5)) #move是一個元組,用來存儲多個返回值
print(“物體位移:({0}, {1})”.format(move[0], move[1]))
#### 求贊
如果您認爲此篇文章從對您有用,請**點贊**,如果寫錯,請糾正**評論**
==**參考:《Python從小白到大牛》——關東昇著**==