1. 程式人生 > >06-撩課-Python面試寶典-第六篇

06-撩課-Python面試寶典-第六篇

一. 函式的概念是什麼? 在Python中如何定義?使用場景是什麼?

  1. 概念
    寫了一段程式碼實現了某個小功能; 然後把這些程式碼集中到一塊, 起一個名字; 下一次就可以根據這個名字再次使用這個程式碼塊, 這就是函式

  2. 定義

def 函式名稱(引數1, 引數2...):
       pass # 具體的函式執行程式碼
       return None # 預設,  可以根據需求設定返回值
  1. 使用場景
    將需要多次執行的重複性程式碼, 進行封裝成函式, 方便程式碼的重用
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

前者是普通引數
後者適用於關鍵字引數
需要注意: 傳遞之後的拆包操作

  1. 裝包
    把傳遞的引數, 包裝成一個集合, 稱之為"裝包"
  2. 拆包
    把集合引數, 再次分解成單獨的個體, 稱之為"拆包"

四. 預設引數代表什麼含義?

  1. 場景
    當我們使用一個函式的時候, 如果大多數情況下, 使用的某個資料是一個固定值, 或者屬於主功能之外的小功能實現;
    則可以使用預設值
    這種引數, 稱為"預設引數"
  2. 定義
    def 函式名(變數名1=預設值1, 變數名2=預設值2):
    函式體
    函式體中, 即使外界沒有傳遞指定變數, 也可以使用, 只不過值是給定的預設值
  3. 使用
    函式名(變數1, 變數2)
    此處如果是預設引數, 則可以不填寫
def sum(a, b = 0):
    print(a + b)

sum(6) # 6
sum(2, 6) # 8

五. Python函式中, 值是引用傳遞還是值傳遞?

  1. 值傳遞和引用傳遞
    1.1 值傳遞
    是指傳遞過來的, 是一個數據的副本;
    修改副本, 對原件沒有任何影響
    1.2引用傳遞
    是指傳遞過來的, 是一個變數的地址
    通過地址, 可以操作同一份原件

  2. 在Python當中, 你沒得選, 只有引用傳遞(地址傳遞)
    但是
    如果資料型別是可變型別, 則可以改變原件
    如果資料型別是不可變型別, 則不可以改變原件