函數對象

函數是第一類對象

一、函數名是能夠被引用的python

二、函數名能夠當參數使用函數

三、函數名能夠看成返回值使用spa

四、函數名能夠被當作容器類型的元素code

PS:傳參的時候沒有特殊需求,必定不要加括號,加括號會當場執行對象

函數的嵌套調用:在函數內調用函數

def index():
    def home():
        print('from home')
    home()
index()


打印結果:
from home

名稱空間:存放名稱的空間

名稱空間的分類

一、內置名稱空間

在python提早給定義完的名字,就是存在的內置名稱空間blog

二、全局名稱空間

存放於文件及的變量名字,就是全局名稱空間生命週期

if,while,for內容定義的名字執行以後都存放於全局作用域

三、局部名稱空間

函數內部的全部名字都是存放於當前函數的內置名稱空間class

生命週期

一、內置名稱空間

在python解釋器啓動時候生效,關閉解釋器失效容器

二、全局名稱空間

當你啓動當前py文件時生效,當前頁面代碼執行結束後失效

三、局部名稱空間

當你調用當前函數時生效,函數體代碼左後一行執行結束後就失效

名稱空間的查找順序

局部:局部——>>>全局——>>>內置

全局:全局——>>>內置

內置:找不到就會報錯

PS:函數內部使用的名字,在定義階段已經規定了,與你的調用位置無關

做用域

做用域的分類:

一、全局做用域

全局做用域能夠調用的名字就存在於全局做用域

內置名稱空間 + 全局名稱空間

二、局部做用域

局部能夠調用的名字就存放於局部做用域

局部名稱空間

關鍵字

global:聲明全局變量

x = 1
def index():
    global x    # 聲明全局變量
    x = 2

index()
print(x)

打印結果
2

nonlocal:在局部名稱空間聲明局部變量(可變類型除外)可變類型能夠在局部修改外部值

def index1():
    x = 1
    def index2():
        nonlocal x    #聲明局部變量(改寫了上層的值)
        x = 2
    index2()
    print(x)
index1()


打印結果:
2
相關文章
相關標籤/搜索