python-10-函數參數和返回值的作用

目標

●函數參數和返回值的作用
●函數的返回值進階
●函數的參數進階
●遞歸函數

01.函數參數和返回值的作用

函數根據有沒有參數以及有沒有返回值,可以相互組合,共有4種組合形式
1.無參數,無返回值
2.無參數,有返回值
3.有參數,無返回值
4.有參數,有返回值
在這裏插入圖片描述

定義函數時,是否接收參數,或者是否返回結果,是根據實際的功能需求來決定的!

02.函數的返回值進階

●在程序開發中,有時候,會希望-個函數執行結束後,告訴調用者-個結果,以便調用者針對具體的結果做後續的處理
●返回值是函數完成工作後,最後給調用者的-個結果
●在函數中使用return 關鍵字可以返回結果
●調用函數一方,可以使用變量來接收函數的返回結果

問題: 一個函數執行後能否返回多個結果?

示例–溫度和溼度測量

●假設要開發-一個函數能夠同時返回當前的溫度和溼度
●先完成返回溫度的功能如下:

def measure():
"""返回當前的溫度"""
print("開始測量...")
temp = 39
print("測量結束...")
return temp
result = measure( )
print(result)

03.函數的參數進階

3.1.不可變和可變的參數
問題1:在函數內部,針對參數使用賦值語句,會不會影響調用函數時傳遞的實參變量?——不會!
●無論傳遞的參數是可變還是不可變

  • 只要針對參數使用賦值語句,會在函數內部修改局部變量的引用,不會影響到外部變量的引用
def demo(num, num _list):
print ("函數內部")
#賦值語句!
num =200
num _list = [1, 2, 3]
print( num)
print(num_ list)
print("函數代碼完成”)
gL _num = 99
gl_ list = [4, 5, 6]
demo(gL_ num, gl list)
print(gL_ num)
print(gl list)
  • 如果傳遞的參數是可變類型,在函數內部, 使用方法修改了數據的內容,同樣會影響到外部的數據
def mutable(num _list):
#num_list = [1, 2, 3]
num_ list.extend([1, 2, 3])
print(num_ list)
gL_ list = [6, 7, 8]
mutable(gl_ list)
print(gL list)

3.1缺省參數

●定義函數時,可以給某個參數指定一個默認值,具有默認值的參數就叫做缺省參數
●調用函數時,如果沒有傳入缺省參數的值,則在函數內部使用定義函數時指定的參數默認值
●函數的缺省參數,將常見的值設爲參數的缺省值,從而簡化函數的調用
●例如:對列表排序的方法

gL_ num list = [6, 3, 9]
#默認就是升序排序,因爲這種應用需求更多
gL_num_list.sort()
print(gl_num_list)
#只有當需要降序排序時,才需要傳遞'reverse'參數
gl_num_list.sort(reverse=True)
print(gl num_list)

指定函數的缺省參數
●在參數後使用賦值語句,可以指定參數的缺省值

def print_info(name, gender=True):
	gender_text = "男生"
	if not gender:
		gender_text = "女生"
	print("%S是8s" % (name, gender_text) )

提示
1.缺省參數,需要使用最常見的值作爲默認值!
2.如果一個參數的值不能確定,則不應該設置默認值,具體的數值在調用函數時,由外界傳遞!
在這裏插入圖片描述
缺省參數的注意事項
1)缺省參數的定義位置
●必須保證帶有默認值的缺省參數在參數列表末尾
●所以,以下定義是錯誤的!

def print_ info(name, gender=True, title):

2)調用帶有多個缺省參數的函數
●在調用函數時,如果有多個缺省參數,需要指定參數名,這樣解釋器才能夠知道參數的對應關係!

3.2多值參數(知道)

定義支持多值參數的函數
●有時可能需要一個函數能夠處理的參數個數是不確定的,這個時候,就可以使用多值參數
●python中有兩種多值參數:

  • 參數名前增加一個*可以接收元組
  • 參數名前增加兩個*可以接收字典
    ●一般在給多值參數命名時,習慣使用以下兩個名字
  • args–存放元組參數,前面有一個
  • *kwargs–存放字典參數,前面有兩個
    ●args是arguments的縮寫,有變量的含義
    ●kw是keyword的縮寫,kwargs 可以記憶鍵值對參數
def demo(num, *args, **kwargs):

	print (num)
	print(args )
	print( kwargs)
	
demo(1, 2, 3, 45, name="小明",age=18, gender=True)

多值參數案例–計算任意多個數字的和
需求
1.定義一個函數sum_numbers ,可以接收的任意多個整數
2.功能要求:將傳遞的所有數字累加並且返回累加結果

def sum_numbers(*args):
num=0
#遍歷args元組順序求和
for n in args:
num += n
return num
print(sum_numbers(1, 2, 3))
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章