1. 程式人生 > 其它 >python學習筆記之函式

python學習筆記之函式

python學習筆記之函式

昨日內容回顧

函式的定義與呼叫

函式必須先定義後呼叫

呼叫函式時,函式名後面必須帶上括號

函式的分類

內建函式:python直譯器提前定義好的

自定義函式:

  1. 無參函式 括號內沒有引數
  2. 有參函式 括號內有引數
  3. 空函式 函式體程式碼用pass佔位

函式的返回值

獲取函式的返回值需要用一個變數名接收

return後面是什麼,就會返回什麼。

return會結束掉函式的執行

函式的引數

形式引數

函式定義階段括號內寫入的引數

實際引數

函式呼叫階段,對傳入的資料,值

位置引數

位置形參

定義階段從左往右依次填寫的變數名

位置實參

呼叫階段從左往右依次填寫的資料,值

關鍵字實參

選擇形參對齊進行繫結的資料,值

預設形參

函式定義階段,賦予形參的值,當沒有實參傳入形參時,形參機會使用預設值。

可變長引數

在函式形參中,用於接收多餘的位置引數,多餘的引數會被組織成一個元組

**

形參中,用於接收多餘的 a = 1 形式實參,會自動轉換為字典。

*在實參中。會對值進行類似for迴圈,組織成一個元組

**在實參中。會將字典打散成v值。

今日內容概要

名稱空間

存放變數與變數值的繫結關係的地方

內建名稱空間

python直譯器提前定義好的變數,函式

print,input,len等

全域性名稱空間

在單個py檔案中,編寫的變數名或函式名會存到全域性名稱空間中

a = 1

b = 'eason'

區域性名稱空間

函式體程式碼執行產生的變數名或者函式名都是區域性空間。

def eason():
    a = 1  # a就是區域性名稱空間

存活週期

  1. 記憶體名稱

    python直譯器執行則產生

    python直譯器關閉則銷燬

  2. 全域性名稱空間

    py檔案執行則產生

    py檔案結束則銷燬

  3. 區域性名稱空間

    函式體程式碼開始執行則產生

    函式體程式碼結束執行則銷燬

名字的查詢順序

在區域性名稱空間中

  1. 區域性名稱空間
  2. 全域性名稱空間
  3. 內建名稱空間

在全域性名稱空間中

  1. 全域性名稱空間
  2. 內建名稱空間

哪怕三個空間都有相同的函式名,也是按照這個順序查詢

如果函式沒有被呼叫,那麼不管函式體有多麼複雜,函式體是什麼也不用太先去在意!

區域性名稱之間如果不是巢狀關係,那麼就互不干涉!

作用域

作用域就是名稱空間能夠作用的範圍

內建空間:全域性可使用

全域性名稱空間:全域性可使用

區域性名稱空間:區域性可用

global與nonlacal關鍵字

global:區域性修改全域性不可變型別

a = 1
def 變數名():
    global a
    a = 2
呼叫一次該函式,a的值在全域性將為2

nonlocal:區域性修改區域性

def f1():
    a = 1
    def f2():
        nonlocal a
        a = 2
    f2()
    print(a)
f1()

改變上一層巢狀的值

函式名的多種用法

  1. 函式名可用直接當變數名賦值

  2. 函式名也可以作為函式的實參

  3. 函式名也可以作為函式的返回值

  4. 函式名可以作為容器的元素

    可儲存多個元素的資料型別

函式的巢狀

函式的巢狀呼叫

def gain():                                         
    name = input('name')                            
    password = input('password')                    
    return name, password                           
                                                    
                                                    
def log_in():                                       
    name, password = gain()                         
    if name == 'eason' and password == '123':       
        print('登入成功')                               
                                                    
log_in()                                            
呼叫一個函式,函式內部可以再呼叫多個函式的叫做巢狀。

呼叫一個函式,函式呼叫自己的叫做遞迴。

函式呼叫函式,叫做函式做為實參。

今日小結

明天學裝飾器。