06-撩課-Python面試寶典-第六篇
阿新 • • 發佈:2018-11-19
一. 函式的概念是什麼? 在Python中如何定義?使用場景是什麼?
概念
寫了一段程式碼實現了某個小功能; 然後把這些程式碼集中到一塊, 起一個名字; 下一次就可以根據這個名字再次使用這個程式碼塊, 這就是函式定義
def 函式名稱(引數1, 引數2...): pass # 具體的函式執行程式碼 return None # 預設, 可以根據需求設定返回值
- 使用場景
將需要多次執行的重複性程式碼, 進行封裝成函式, 方便程式碼的重用def xxx(): print(1) print(2) print(3)
將有規律的重複性程式碼, 封裝成函式, 更加靈活方便
def xxx(num): for i in range(0, num): print(i)
分解任務, 簡化程式邏輯, 使程式碼更加模組化
def firstStep(): pass def secondStep(): pass def thirdStep(): pass firstStep() secondStep() thirdStep()
二. 嘗試封裝一個函式, 計算不定資料的累加和, 返回給外界
def 累加和(num): result = 0 for i in range(1, num + 1): result += i return result print(累加和(4)) # 10 print(累加和(10)) # 55
三. 如何定義不定長引數函式?
def 函式名(*args): pass def 函式名(**kwargs): pass
前者是普通引數
後者適用於關鍵字引數
需要注意: 傳遞之後的拆包操作
- 裝包
把傳遞的引數, 包裝成一個集合, 稱之為"裝包"- 拆包
把集合引數, 再次分解成單獨的個體, 稱之為"拆包"
四. 預設引數代表什麼含義?
- 場景
當我們使用一個函式的時候, 如果大多數情況下, 使用的某個資料是一個固定值, 或者屬於主功能之外的小功能實現;
則可以使用預設值
這種引數, 稱為"預設引數" - 定義
def 函式名(變數名1=預設值1, 變數名2=預設值2):
函式體
函式體中, 即使外界沒有傳遞指定變數, 也可以使用, 只不過值是給定的預設值 - 使用
函式名(變數1, 變數2)
此處如果是預設引數, 則可以不填寫
def sum(a, b = 0):
print(a + b)
sum(6) # 6
sum(2, 6) # 8
五. Python函式中, 值是引用傳遞還是值傳遞?
-
值傳遞和引用傳遞
1.1 值傳遞
是指傳遞過來的, 是一個數據的副本;
修改副本, 對原件沒有任何影響
1.2引用傳遞
是指傳遞過來的, 是一個變數的地址
通過地址, 可以操作同一份原件 -
在Python當中, 你沒得選, 只有引用傳遞(地址傳遞)
但是
如果資料型別是可變型別, 則可以改變原件
如果資料型別是不可變型別, 則不可以改變原件