一. 函數(shù)的返回值的概念,語(yǔ)法以及注意事項(xiàng)?
- 場(chǎng)景
當(dāng)我們通過(guò)某個(gè)函數(shù), 處理好數(shù)據(jù)之后, 想要拿到處理的結(jié)果 - 語(yǔ)法
def 函數(shù)():
函數(shù)體
return 數(shù)據(jù)
- 注意事項(xiàng)
3.1 return 后續(xù)代碼不會(huì)被執(zhí)行
3.2 只能返回一次
3.3 如果想要返回多個(gè)數(shù)據(jù), 可先把多個(gè)數(shù)據(jù)包裝成一個(gè)集合, 整體返回- 列表
- 元組
- 字典
- ...
二. 在實(shí)際開發(fā)的過(guò)程中, 你是如何給一個(gè)函數(shù)添加描述信息的?
- 場(chǎng)景
當(dāng)我們編寫三方函數(shù), 為了方便他人使用, 就需要描述清楚我們所寫的函數(shù)功能以及使用方式等信息 - 定義格式
直接在函數(shù)體的最上面, 添加三個(gè)雙引號(hào)對(duì)注釋
def 函數(shù)():
''' 這里寫幫助信息 '''
- 查看函數(shù)使用文檔
help(函數(shù)) - 保命經(jīng)驗(yàn)
一般函數(shù)的描述, 需要說(shuō)明如下幾個(gè)信息- 函數(shù)的功能
- 參數(shù)
- 含義
- 類型
- 是否可以省略
- 默認(rèn)值
- 返回值
- 含義
- 類型
def sum(num1, num2=0):
"""
負(fù)責(zé)計(jì)算兩個(gè)數(shù)值的和, 并返回給外界
:param num1: 第一個(gè)參數(shù), 參數(shù)類型: int / float, 不能被省略, 無(wú)默認(rèn)值
:param num2: 第二個(gè)參數(shù), 參數(shù)類型: int / float, 能被省略, 默認(rèn)值: 0
:return: 計(jì)算結(jié)果
"""
return num1 + num2
三. 偏函數(shù)的概念和意義?
- 概念&場(chǎng)景
當(dāng)我們寫一個(gè)參數(shù)比較多的函數(shù)時(shí), 如果有些參數(shù), 大部分場(chǎng)景下都是某一個(gè)固定值, 那么為了簡(jiǎn)化使用, 就可以創(chuàng)建一個(gè)新函數(shù), 指定我們要使用的函數(shù)的某個(gè)參數(shù), 為某個(gè)固定的值; 這個(gè)新函數(shù)就是"偏函數(shù)"
- 語(yǔ)法
- 方式1
自己寫一個(gè)新的 - 方式2
借助functools模塊的partial函數(shù)
import functools
newFunc = functools.partial(函數(shù), 特定參數(shù)=偏愛值)
- 場(chǎng)景
- 問(wèn)題
int(x, base=10)
將一個(gè)數(shù)字字符轉(zhuǎn)換成整型數(shù)據(jù)時(shí), 默認(rèn)是按10進(jìn)制的數(shù)據(jù)進(jìn)行處理x
如果想按2進(jìn)制進(jìn)行處理x, 需要這么調(diào)用: int(x, 2)
如果需要經(jīng)常使用這個(gè)2進(jìn)制處理x轉(zhuǎn)換, 每次都寫參數(shù)值2太麻煩- 解決
方式1:方式2:def int2(x): return int(x, 2)
import functools int2 = functools.partial(int, base=2) print(int2("110")) # 6
四. 高階函數(shù)的定義以及應(yīng)用場(chǎng)景舉例?
- 概念
當(dāng)一個(gè)函數(shù)A的參數(shù), 接收的又是另一個(gè)函數(shù)時(shí), 則把這個(gè)函數(shù)A稱為是"高階函數(shù)" - 例如
sorted函數(shù) 就是一個(gè)高階函數(shù)person1 = {"name": "sz", "score": "60"} person2 = {"name": "sz2", "score": "90"} person3 = {"name": "sz3", "score": "80"} persons = [person1, person2, person3] def sort_key(dic): return dic["score"] print(sorted(persons, key=sort_key)) # 打印結(jié)果如下: # [{'name': 'sz', 'score': '60'}, {'name': 'sz3', 'score': '80'}, {'name': 'sz2', 'score': '90'}]
五. 解釋下匿名函數(shù)?
- 概念
也稱為 "lambda函數(shù)"
顧名思義, 就是指沒(méi)有名字的函數(shù) - 語(yǔ)法
lambda 參數(shù)1, 參數(shù)2.. : 表達(dá)式 - 限制
- 只能寫一個(gè)表達(dá)式
- 不能直接return
- 表達(dá)式的結(jié)果就是返回值
- 所以, 只適用于一些簡(jiǎn)單的操作處理
- 應(yīng)用場(chǎng)景
一些臨時(shí)性的使用 - 案例
person1 = {"name": "sz", "score": "60"}
person2 = {"name": "sz2", "score": "90"}
person3 = {"name": "sz3", "score": "80"}
persons = [person1, person2, person3]
# 此處key對(duì)應(yīng)的函數(shù), 就沒(méi)有必要單獨(dú)定義出來(lái)
# 因?yàn)榫退约河? 又很簡(jiǎn)單
print(sorted(persons, key=lambda dic: dic["score"]))