一. 函數(shù)的概念是什么? 在Python中如何定義?使用場景是什么?
概念
寫了一段代碼實現(xiàn)了某個小功能; 然后把這些代碼集中到一塊, 起一個名字; 下一次就可以根據(jù)這個名字再次使用這個代碼塊, 這就是函數(shù)定義
def 函數(shù)名稱(參數(shù)1, 參數(shù)2...): pass # 具體的函數(shù)執(zhí)行代碼 return None # 默認, 可以根據(jù)需求設(shè)置返回值
- 使用場景
將需要多次執(zhí)行的重復(fù)性代碼, 進行封裝成函數(shù), 方便代碼的重用def xxx(): print(1) print(2) print(3)
將有規(guī)律的重復(fù)性代碼, 封裝成函數(shù), 更加靈活方便
def xxx(num): for i in range(0, num): print(i)
分解任務(wù), 簡化程序邏輯, 使代碼更加模塊化
def firstStep(): pass def secondStep(): pass def thirdStep(): pass firstStep() secondStep() thirdStep()
二. 嘗試封裝一個函數(shù), 計算不定數(shù)據(jù)的累加和, 返回給外界
def 累加和(num):
result = 0
for i in range(1, num + 1):
result += i
return result
print(累加和(4)) # 10
print(累加和(10)) # 55
三. 如何定義不定長參數(shù)函數(shù)?
def 函數(shù)名(*args): pass def 函數(shù)名(**kwargs): pass
前者是普通參數(shù)
后者適用于關(guān)鍵字參數(shù)
需要注意: 傳遞之后的拆包操作
- 裝包
把傳遞的參數(shù), 包裝成一個集合, 稱之為"裝包"- 拆包
把集合參數(shù), 再次分解成單獨的個體, 稱之為"拆包"
四. 缺省參數(shù)代表什么含義?
- 場景
當我們使用一個函數(shù)的時候, 如果大多數(shù)情況下, 使用的某個數(shù)據(jù)是一個固定值, 或者屬于主功能之外的小功能實現(xiàn);
則可以使用默認值
這種參數(shù), 稱為"缺省參數(shù)" - 定義
def 函數(shù)名(變量名1=默認值1, 變量名2=默認值2):
函數(shù)體
函數(shù)體中, 即使外界沒有傳遞指定變量, 也可以使用, 只不過值是給定的默認值 - 使用
函數(shù)名(變量1, 變量2)
此處如果是缺省參數(shù), 則可以不填寫
def sum(a, b = 0):
print(a + b)
sum(6) # 6
sum(2, 6) # 8
五. Python函數(shù)中, 值是引用傳遞還是值傳遞?
值傳遞和引用傳遞
1.1 值傳遞
是指傳遞過來的, 是一個數(shù)據(jù)的副本;
修改副本, 對原件沒有任何影響
1.2引用傳遞
是指傳遞過來的, 是一個變量的地址
通過地址, 可以操作同一份原件在Python當中, 你沒得選, 只有引用傳遞(地址傳遞)
但是
如果數(shù)據(jù)類型是可變類型, 則可以改變原件
如果數(shù)據(jù)類型是不可變類型, 則不可以改變原件