函數(shù)根據(jù) 有沒有參數(shù) 以及 有沒有返回值,可以 相互組合,一共有 4 種 組合形式
成都創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)與策劃設(shè)計(jì),烏達(dá)網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:烏達(dá)等地區(qū)。烏達(dá)做網(wǎng)站價(jià)格咨詢:13518219792定義函數(shù)時(shí),是否接收參數(shù),或者是否返回結(jié)果,是根據(jù) 實(shí)際的功能需求 來決定的!
此類函數(shù),不接收參數(shù),也沒有返回值,應(yīng)用場(chǎng)景如下:
注意:
- 如果全局變量的數(shù)據(jù)類型是一個(gè) 可變類型,在函數(shù)內(nèi)部可以使用 方法 修改全局變量的內(nèi)容 —— 變量的引用不會(huì)改變
- 在函數(shù)內(nèi)部,使用賦值語句 才會(huì) 修改變量的引用
此類函數(shù),不接收參數(shù),但是有返回值,應(yīng)用場(chǎng)景如下:
此類函數(shù),接收參數(shù),沒有返回值,應(yīng)用場(chǎng)景如下:
此類函數(shù),接收參數(shù),同時(shí)有返回值,應(yīng)用場(chǎng)景如下:
示例 —— 溫度和濕度測(cè)量
def measure():
"""返回當(dāng)前的溫度"""
print("開始測(cè)量...")
temp = 39
print("測(cè)量結(jié)束...")
return temp
result = measure()
print(result)
def measure():
"""返回當(dāng)前的溫度"""
print("開始測(cè)量...")
temp = 39
wetness = 10
print("測(cè)量結(jié)束...")
return (temp, wetness)
提示:如果一個(gè)函數(shù)返回的是元組,括號(hào)可以省略
技巧:
result = temp, wetness = measure()
面試題 —— 交換兩個(gè)數(shù)字
題目要求
# 解法 1 - 使用臨時(shí)變量
c = b
b = a
a = c
解法 2 —— 不使用臨時(shí)變量
# 解法 2 - 不使用臨時(shí)變量
a = a + b
b = a - b
a = a - b
解法 3 —— Python 專有,利用元組
a, b = b, a
問題 1:在函數(shù)內(nèi)部,針對(duì)參數(shù)使用 賦值語句,會(huì)不會(huì)影響調(diào)用函數(shù)時(shí)傳遞的 實(shí)參變量? —— 不會(huì)!
def demo(num, num_list):
print("函數(shù)內(nèi)部")
# 賦值語句
num = 200
num_list = [1, 2, 3]
print(num)
print(num_list)
print("函數(shù)代碼完成")
gl_num = 99
gl_list = [4, 5, 6]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
問題 2:如果傳遞的參數(shù)是 可變類型,在函數(shù)內(nèi)部,使用 方法 修改了數(shù)據(jù)的內(nèi)容,同樣會(huì)影響到外部的數(shù)據(jù)
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)
面試題 —— +=
def demo(num, num_list):
print("函數(shù)內(nèi)部代碼")
# num = num + num
num += num
# num_list.extend(num_list) 由于是調(diào)用方法,所以不會(huì)修改變量的引用
# 函數(shù)執(zhí)行結(jié)束后,外部數(shù)據(jù)同樣會(huì)發(fā)生變化
num_list += num_list
print(num)
print(num_list)
print("函數(shù)代碼完成")
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
gl_num_list = [6, 3, 9]
# 默認(rèn)就是升序排序,因?yàn)檫@種應(yīng)用需求更多
gl_num_list.sort()
print(gl_num_list)
# 只有當(dāng)需要降序排序時(shí),才需要傳遞 `reverse` 參數(shù)
gl_num_list.sort(reverse=True)
print(gl_num_list)
指定函數(shù)的缺省參數(shù)
def print_info(name, gender=True):
gender_text = "男生"
if not gender:
gender_text = "女生"
print("%s 是 %s" % (name, gender_text))
提示
缺省參數(shù)的注意事項(xiàng)
1) 缺省參數(shù)的定義位置
2) 調(diào)用帶有多個(gè)缺省參數(shù)的函數(shù)
def print_info(name, title="", gender=True):
"""
:param title: 職位
:param name: 班上同學(xué)的姓名
:param gender: True 男生 False 女生
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print("%s%s 是 %s" % (title, name, gender_text))
# 提示:在指定缺省參數(shù)的默認(rèn)值時(shí),應(yīng)該使用最常見的值作為默認(rèn)值!
print_info("xm")
print_info("lb", title="monitor")
print_info("xm", gender=False)
定義支持多值參數(shù)的函數(shù)
一般在給多值參數(shù)命名時(shí),習(xí)慣使用以下兩個(gè)名字
def demo(num, *args, **kwargs):
print(num)
print(args)
print(kwargs)
demo(1, 2, 3, 4, 5, name="xm", age=18, gender=True)
多值參數(shù)案例 —— 計(jì)算任意多個(gè)數(shù)字的和
需求
def sum_numbers(*args):
num = 0
# 遍歷 args 元組順序求和
for n in args:
num += n
return num
print(sum_numbers(1, 2, 3))
元組和字典的拆包(知道)
def demo(*args, **kwargs):
print(args)
print(kwargs)
# 需要將一個(gè)元組變量/字典變量傳遞給函數(shù)對(duì)應(yīng)的參數(shù)
gl_nums = (1, 2, 3)
gl_xm = {"name": "xm", "age": 18}
# 會(huì)把 num_tuple 和 xm 作為元組傳遞個(gè) args
# demo(gl_nums, gl_xm)
demo(*gl_nums, **gl_xm)
函數(shù)調(diào)用自身的 編程技巧 稱為遞歸
特點(diǎn)
代碼特點(diǎn)
示例代碼
def sum_numbers(num):
print(num)
# 遞歸的出口很重要,否則會(huì)出現(xiàn)死循環(huán)
if num == 1:
return
sum_numbers(num - 1)
sum_numbers(3)
需求
def sum_numbers(num):
if num == 1:
return 1
# 假設(shè) sum_numbers 能夠完成 num - 1 的累加
temp = sum_numbers(num - 1)
# 函數(shù)內(nèi)部的核心算法就是 兩個(gè)數(shù)字的相加
return num + temp
print(sum_numbers(2))
提示:遞歸是一個(gè) 編程技巧,初次接觸遞歸會(huì)感覺有些吃力!在處理 不確定的循環(huán)條件時(shí),格外的有用,例如:遍歷整個(gè)文件目錄的結(jié)構(gòu)
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。