日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python函数参数学习_python学习笔记-11.函数参数和返回值进阶

發布時間:2023/12/2 python 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python函数参数学习_python学习笔记-11.函数参数和返回值进阶 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

函數根據有沒有參數以及有沒有返回值,可以相互組合,共有4種形式:

無參數,無返回值

無參數,有返回值

有參數,無返回值

有參數,有返回值

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

如果函數內部處理的數據不確定,就可以將外界的數據以參數傳遞到函數內部。

如果希望一個函數執行完成后,向外界匯報執行結果,就可以增加函數的返回值。

2. 函數的返回值進階

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

元組-可以包含多個數據,因此可以使用元組讓函數一次返回多個值;

如果函數返回的類型是元組,小括號可以省略;

如果函數返回的類型是元組,同時希望單獨處理元組種的元素,可以使用多個變量,一次接收函數的返回結果;

注意,使用多個變量接收結果時,變量的個數應和元組中元素的個數保持一致。

舉個栗子

# 測量溫度和濕度

def measure():

print("測量開始")

temp = 39

wet = 56

print("測量結束")

return temp,wet # 返回的數據類型為元組,可省略'()'

gl_temp, gl_wet = measure() # 定義兩個變量接收返回的結果

print(gl_temp)

output:

測量開始

測量結束

39

56

舉個栗子-交換數字(經典面試題)

在不使用其他變量的情況下,交換a和b的值。

a = 6

b = 100

a,b = b,a # python專有,利用元組。等號右邊是一個元組,只是把小括號省略了

print(a)

print(b)

output:

100

6

3. 函數的參數進階

3.1 不可變和可變的參數

問題1:在函數內部,針對參數使用賦值語句,會不會影響調用函數時傳遞的實參變量?——不會!

無論傳遞的參數是可變還是不可變,只要針對參數使用賦值語句,會在函數內部修改局部變量的引用,不會影響到外部變量的引用。

舉個栗子

def demo(num,num_list):

print("函數內部的代碼")

# 在函數內部,針對參數使用賦值語句

num = 100 # 不可變的參數

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)

output:

函數內部的代碼

100

[1, 2, 3]

函數執行完成

99

[4, 5, 6]

問題2:如果傳遞的參數是可變類型,在函數內部,使用方法修改了數據的內容,同樣會影響到外部的數據。

舉個栗子

def demo(num_list):

print("函數內部的代碼")

# 使用方法修改列表的內容,此時并不會修改列表的引用

num_list.append(9)

print(num_list)

print("函數執行完成")

gl_list = [1,2,3]

demo(gl_list)

print(gl_list)

output:

函數內部的代碼

[1, 2, 3, 9]

函數執行完成

[1, 2, 3, 9]

舉個栗子- += (面試題)

在python中,列表變量調用 += 本質上實在執行列表變量的extend方法,不會修改變量的引用。

def demo(num,num_list):

print("函數開始")

# num = num + num

num += num

# 列表變量使用 += 不會做相加再賦值的操作!

# num_list = num_list + num_list

# 本質上是在調用列表的extend方法

# num_list.extend(num_list)

num_list += num_list

print(num)

print(num_list)

print("函數完成")

gl_num = 9

gl_list = [1,2,3]

demo(gl_num,gl_list)

print(gl_num)

print(gl_list)

output:

函數開始

18

[1, 2, 3, 1, 2, 3]

函數完成

9

[1, 2, 3, 1, 2, 3]

3.2 缺省參數

3.2.1 什么是缺省參數

定義函數時,可以給某個參數指定一個默認值,具有默認值的參數就叫做缺省參數;

調用函數時,如果沒有傳入缺省參數的值,則在函數內部使用定義函數時指定的參數默認值;

函數的缺省參數,將常見的值設置為參數的缺省值,從而簡化函數的調用。

舉個栗子-對列表排序的方法

sort方法中的reverse即為缺省參數。

gl_list = [6,3,9]

# 默認按照升序排序 - 日常使用可能會更多

gl_list.sort()

print(gl_list)

# 如果需要降序排序,需要指定reverse參數

gl_list.sort(reverse=True)

print(gl_list)

output:

[3, 6, 9]

[9, 6, 3]

3.2.2 怎么指定函數的缺省參數

在參數后使用賦值語句,可以指定參數的缺省值。

– 缺省參數,需要使用最常見的值作為默認值。

– 如果一個參數的值不能確定,則不應該設置默認值,具體的數值在調用函數時,由外界傳遞!

舉個栗子

def print_info(name, gender=True):

"""

:param name: 班上同學的姓名

:param gender: True 男生 False 女生

"""

gender_text = "男生"

if not gender: # not取反

gender_text = "女生"

print("%s 是 %s" % (name, gender_text))

# 假設班上的同學,男生居多!

# 提示:在指定缺省參數的默認值時,應該使用最常見的值作為默認值。

print_info("小明")

print_info("老王")

print_info("小麗",False)

output:

小明 是 男生

老王 是 男生

小麗 是 女生

3.2.3 缺省參數的注意事項

1) 缺省參數的定義位置

必須保證帶有默認值的缺省參數在參數列表的末尾。

2)調用帶有多個缺省參數的函數

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

舉個栗子

def print_info(name, title="", gender=True):

"""

:param title: 職位

:param name: 班上同學的姓名

:param gender: True 男生 False 女生

"""

gender_text = "男生"

if not gender: # not取反

gender_text = "女生"

print("[%s] %s 是 %s" % (title, name, gender_text))

# 假設班上的同學,男生居多!

# 提示:在指定缺省參數的默認值時,應該使用最常見的值作為默認值。

print_info("小明")

print_info("老王")

print_info("小麗",gender=False) # 如果有多個缺省參數,需指定參數名

output:

[] 小明 是 男生

[] 老王 是 男生

[] 小麗 是 女生

3.3 多值參數(了解)

定義支持多值參數的函數

有時候可能需要一個函數能夠處理的參數個數是不確定的,這時就可以使用多值參數。

python有兩種多值參數:

– 參數名前增加一個*可以接收元組

– 參數名前增加一個**可以接收字典

一般在給多值參數命名時,習慣使用以下兩個名字

– *args 存放元組參數,前面有一個*

– **kwargs 存放字典參數,前面有兩個*

args 是 arguments的縮寫,有變量的含義

kw 是 keyword的縮寫,kwargs可以記憶鍵值對參數

舉個栗子

def demo(num, *nums, **person):

print(num)

print(nums)

print(person)

demo(1,2,3,4,5,name="小明",age=18)

output:

1

(2, 3, 4, 5)

{‘name’: ‘小明’, ‘age’: 18}

舉個栗子-計算任意多個數字的和

def sum_nums(*args):

num = 0

print(args)

# 循環遍歷

for n in args:

num += n

return num

result = sum_nums(1,2,3,4,5,6)

print(result)

output:

(1, 2, 3, 4, 5, 6)

21

3.4 元組和字典的拆包(了解)

在調用帶有多值參數的函數時,如果希望:

– 將一個元組變量,直接傳遞給args

– 將一個字典變量,直接傳遞給kwargs

就可以使用拆包,簡化參數的傳遞,拆包的方式為:

– 在元組變量前,增加一個*

– 在字典變量前,增加兩個*

def demo(*args,**kwargs):

print(args)

print(kwargs)

# 元組變量/字典變量

gl_nums = (1,2,3)

gl_dict = {"name":"小明","age":18}

# 拆包語法,簡化元組變量/字典變量的傳遞

demo(*gl_nums,**gl_dict)

output:

(1, 2, 3)

{‘name’: ‘小明’, ‘age’: 18}

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的python函数参数学习_python学习笔记-11.函数参数和返回值进阶的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。