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

歡迎訪問 生活随笔!

生活随笔

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

python

python中使用函数的优点_Python基础之函数基本用法与进阶详解

發布時間:2025/4/17 python 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python中使用函数的优点_Python基础之函数基本用法与进阶详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文實例講述了Python基礎之函數基本用法與進階。分享給大家供大家參考,具體如下:

目標

函數參數和返回值的作用

函數的返回值 進階

函數的參數 進階

遞歸函數

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

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

無參數,無返回值

無參數,有返回值

有參數,無返回值

有參數,有返回值

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

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

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

1.1 無參數,無返回值

此類函數,不接收參數,也沒有返回值,應用場景如下:

只是單純地做一件事情,例如 顯示菜單

在函數內部 針對全局變量進行操作,例如:新建名片,最終結果 記錄在全局變量 中

注意:

如果全局變量的數據類型是一個 可變類型,在函數內部可以使用 方法 修改全局變量的內容 —— 變量的引用不會改變

在函數內部,使用賦值語句 才會 修改變量的引用

1.2 無參數,有返回值

此類函數,不接收參數,但是有返回值,應用場景如下:

采集數據,例如 溫度計,返回結果就是當前的溫度,而不需要傳遞任何的參數

1.3 有參數,無返回值

此類函數,接收參數,沒有返回值,應用場景如下:

函數內部的代碼保持不變,針對 不同的參數 處理 不同的數據

例如 名片管理系統 針對 找到的名片 做 修改、刪除 操作

1.4 有參數,有返回值

此類函數,接收參數,同時有返回值,應用場景如下:

函數內部的代碼保持不變,針對 不同的參數 處理 不同的數據,并且 返回期望的處理結果

例如 名片管理系統 使用 字典默認值 和 提示信息 提示用戶輸入內容

如果輸入,返回輸入內容

如果沒有輸入,返回字典默認值

02. 函數的返回值 進階

在程序開發中,有時候,會希望 一個函數執行結束后,告訴調用者一個結果,以便調用者針對具體的結果做后續的處理

返回值 是函數 完成工作后,最后 給調用者的 一個結果

在函數中使用 return 關鍵字可以返回結果

調用函數一方,可以 使用變量 來 接收 函數的返回結果

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

示例 —— 溫度和濕度測量

假設要開發一個函數能夠同時返回當前的溫度和濕度

先完成返回溫度的功能如下:

def measure():

"""返回當前的溫度"""

print("開始測量...")

temp = 39

print("測量結束...")

return temp

result = measure()

print(result)

在利用 元組 在返回溫度的同時,也能夠返回 濕度

改造如下:

def measure():

"""返回當前的溫度"""

print("開始測量...")

temp = 39

wetness = 10

print("測量結束...")

return (temp, wetness)

提示:如果一個函數返回的是元組,括號可以省略

技巧

在 Python 中,可以 將一個元組 使用 賦值語句 同時賦值給 多個變量

注意:變量的數量需要和元組中的元素數量保持一致

result = temp, wetness = measure()

面試題 —— 交換兩個數字

題目要求

有兩個整數變量 a = 6, b = 100

不使用其他變量,交換兩個變量的值

解法 1 —— 使用其他變量

# 解法 1 - 使用臨時變量

c = b

b = a

a = c

解法 2 —— 不使用臨時變量

# 解法 2 - 不使用臨時變量

a = a + b

b = a - b

a = a - b

解法 3 —— Python 專有,利用元組

a, b = b, a

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)

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

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)

面試題 —— +=

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

def demo(num, num_list):

print("函數內部代碼")

# num = num + num

num += num

# 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)

3.2 缺省參數

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

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

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

例如:對列表排序的方法

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 是 %s" % (name, gender_text))

提示

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

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

缺省參數的注意事項

缺省參數的定義位置

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

所以,以下定義是錯誤的!

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

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

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

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

"""

:param title: 職位

:param name: 班上同學的姓名

:param gender: True 男生 False 女生

"""

gender_text = "男生"

if not gender:

gender_text = "女生"

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

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

print_info("小明")

print_info("老王", title="班長")

print_info("小美", gender=False)

3.3 多值參數(知道)

定義支持多值參數的函數

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

python 中有 兩種 多值參數:

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

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

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

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

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

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

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

def demo(num, *args, **kwargs):

print(num)

print(args)

print(kwargs)

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

提示:多值參數 的應用會經常出現在網絡上一些大牛開發的框架中,知道多值參數,有利于我們能夠讀懂大牛的代碼

多值參數案例 —— 計算任意多個數字的和

需求

定義一個函數 sum_numbers,可以接收的 任意多個整數

功能要求:將傳遞的 所有數字累加 并且返回累加結果

def sum_numbers(*args):

num = 0

# 遍歷 args 元組順序求和

for n in args:

num += n

return num

print(sum_numbers(1, 2, 3))

元組和字典的拆包(知道)

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

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

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

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

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

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

def demo(*args, **kwargs):

print(args)

print(kwargs)

# 需要將一個元組變量/字典變量傳遞給函數對應的參數

gl_nums = (1, 2, 3)

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

# 會把 num_tuple 和 xiaoming 作為元組傳遞個 args

# demo(gl_nums, gl_xiaoming)

demo(*gl_nums, **gl_xiaoming)

04. 函數的遞歸

函數調用自身的 編程技巧 稱為遞歸

4.1 遞歸函數的特點

特點

一個函數 內部 調用自己

函數內部可以調用其他函數,當然在函數內部也可以調用自己

代碼特點

函數內部的 代碼 是相同的,只是針對 參數 不同,處理的結果不同

當 參數滿足一個條件 時,函數不再執行

這個非常重要,通常被稱為遞歸的出口,否則 會出現死循環!

示例代碼

def sum_numbers(num):

print(num)

# 遞歸的出口很重要,否則會出現死循環

if num == 1:

return

sum_numbers(num - 1)

sum_numbers(3)

4.2 遞歸案例 —— 計算數字累加

需求

定義一個函數 sum_numbers

能夠接收一個 num 的整數參數

計算 1 + 2 + … num 的結果

def sum_numbers(num):

if num == 1:

return 1

# 假設 sum_numbers 能夠完成 num - 1 的累加

temp = sum_numbers(num - 1)

# 函數內部的核心算法就是 兩個數字的相加

return num + temp

print(sum_numbers(2))

提示:遞歸是一個 編程技巧,初次接觸遞歸會感覺有些吃力!在處理 不確定的循環條件時,格外的有用,例如:遍歷整個文件目錄的結構

希望本文所述對大家Python程序設計有所幫助。

總結

以上是生活随笔為你收集整理的python中使用函数的优点_Python基础之函数基本用法与进阶详解的全部內容,希望文章能夠幫你解決所遇到的問題。

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