女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python變量的作用域

python爬蟲知識(shí)分享 ? 來源:python爬蟲知識(shí)分享 ? 作者:python爬蟲知識(shí)分享 ? 2022-03-03 16:50 ? 次閱讀

python變量的作用域

1. 作用域

Python的作用域可以分為四種:

L (Local) 局部作用域

E (Enclosing) 閉包函數(shù)外的函數(shù)中

G (Global) 全局作用域

B (Built-in) 內(nèi)建作用域

變量/函數(shù) 的查找順序: L –> E –> G –>B

意思是,在局部找不到的,便去局部外的局部作用域找(例如 閉包),再找不到的就去全局作業(yè)域里找,再找不到就去內(nèi)建作業(yè)域中找。

會(huì)影響 變量/函數(shù) 作用范圍的有

函數(shù):def 或 lambda

類:class

關(guān)鍵字:global noglobal

文件:*py

推導(dǎo)式:[],{},()等,僅限Py3.x中,Py2.x會(huì)出現(xiàn)變量泄露。

1、賦值在前,引用在后

# ------同作用域內(nèi)------
name = "MING"
print(name)

# ------不同作用域內(nèi)------
name = "MING"
def main():
    print(name)

2、引用在前,賦值在后(同一作用域內(nèi))

print(name)
name = "MING"

# UnboundLocalError: local variable 'name' referenced before assignment

3、賦值在低層,引用在高層

# L -> E -> G -> B
# 從左到右,由低層到高層
def main():
    name = "MING"

print(name)
# NameError: name 'name' is not defined

2. 閉包

閉包這個(gè)概念很重要噢。你一定要掌握。

在一個(gè)外函數(shù)中定義了一個(gè)內(nèi)函數(shù),內(nèi)函數(shù)里運(yùn)用了外函數(shù)的臨時(shí)變量,并且外函數(shù)的返回值是內(nèi)函數(shù)的引用。這樣就構(gòu)成了一個(gè)閉包。其實(shí)裝飾函數(shù),很多都是閉包。

好像并不難理解,為什么初學(xué)者會(huì)覺得閉包難以理解呢?

我解釋一下,你就明白了。

一般情況下,在我們認(rèn)知當(dāng)中,如果一個(gè)函數(shù)結(jié)束,函數(shù)的內(nèi)部所有東西都會(huì)釋放掉,還給內(nèi)存,局部變量都會(huì)消失。但是閉包是一種特殊情況,如果外函數(shù)在結(jié)束的時(shí)候發(fā)現(xiàn)有自己的臨時(shí)變量將來會(huì)在內(nèi)部函數(shù)中用到,就把這個(gè)臨時(shí)變量綁定給了內(nèi)部函數(shù),然后自己再結(jié)束。

你可以看下面這段代碼,就構(gòu)成了閉包。在內(nèi)函數(shù)里可以引用外函數(shù)的變量。

def deco():
    name = "MING"
    def wrapper():
        print(name)
    return wrapper

deco()()
# 輸出:MING

3. 改變作用域

變量的作用域,與其定義(或賦值)的位置有關(guān),但不是絕對(duì)相關(guān)。 因?yàn)槲覀兛梢栽谀撤N程度上去改變向上的作用范圍。

關(guān)鍵字:global 將 局部變量 變?yōu)槿肿兞?/p>

關(guān)鍵字:nonlocal 可以在閉包函數(shù)中,引用并使用閉包外部函數(shù)的變量(非全局的噢)

global好理解,這里只講下nonlocal。

先來看個(gè)例子

def deco():
    age = 10
    def wrapper():
        age += 1
    return wrapper

deco()()

運(yùn)行一下,會(huì)報(bào)錯(cuò)。

# UnboundLocalError: local variable 'age' referenced before assignment

但是這樣就OK

def deco():
    age = 10
    def wrapper():
        nonlocal age
        age += 1
    return wrapper

deco()()
# 輸出:11

其實(shí),你如果不使用 +=-=等一類的操作,不加nonlocal也沒有關(guān)系。這就展示了閉包的特性。

def deco():
    age = 10
    def wrapper():
        print(age)
    return wrapper

deco()()
# 輸出:10

4. 變量集合

在Python中,有兩個(gè)內(nèi)建函數(shù),你可能用不到,但是需要掌握它們。

globals() :以dict的方式存儲(chǔ)所有全局變量

locals():以dict的方式存儲(chǔ)所有局部變量

globals()

def foo():
    print("I am a func")

def bar():
    foo="I am a string"
    foo_dup = globals().get("foo")
    foo_dup()

bar()
# 輸出
# I am a func

locals()

other = "test"

def foobar():
    name = "MING"
    gender = "male"
    for key,value in locals().items():
        print(key, "=", value)

foobar()
# 輸出
# name = MING
# gender = male

審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4823

    瀏覽量

    86111
  • 作用域
    +關(guān)注

    關(guān)注

    0

    文章

    6

    瀏覽量

    6203
收藏 人收藏

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    Ansible Playbook中的變量使用技巧

    在inventory中定義的連接變量(比如ansible_ssh_user);優(yōu)先級(jí)第二。
    的頭像 發(fā)表于 04-15 10:26 ?189次閱讀

    混合示波器的原理和應(yīng)用

    的原理和功能,在電子測(cè)量領(lǐng)域發(fā)揮著重要作用。隨著無線通信、物聯(lián)網(wǎng)等新興應(yīng)用的不斷發(fā)展,混合示波器的應(yīng)用前景將更加廣闊。
    發(fā)表于 12-27 15:54

    快速理解工業(yè)交換機(jī)中的沖突與廣播

    工業(yè)交換機(jī)是工業(yè)通信網(wǎng)絡(luò)的重要組成部分,其高效的數(shù)據(jù)傳輸功能對(duì)生產(chǎn)和管理起著關(guān)鍵作用。沖突與廣播是工業(yè)網(wǎng)絡(luò)中的兩個(gè)重要概念。它們?cè)诰W(wǎng)絡(luò)設(shè)計(jì)與優(yōu)化中扮演著不同的角色。本文將以簡(jiǎn)明易懂的方式介紹這兩個(gè)概念,并探討它們?cè)诠I(yè)交換機(jī)
    的頭像 發(fā)表于 11-20 16:51 ?1146次閱讀
    快速理解工業(yè)交換機(jī)中的沖突<b class='flag-5'>域</b>與廣播<b class='flag-5'>域</b>

    對(duì)比Python與Java編程語言

    使得編寫代碼更加靈活,但也可能導(dǎo)致運(yùn)行時(shí)錯(cuò)誤。 Java 語法相對(duì)冗長(zhǎng),需要顯式聲明變量類型,增加了代碼的可讀性和安全性。 靜態(tài)類型系統(tǒng)在編譯時(shí)進(jìn)行類型檢查,減少了運(yùn)行時(shí)錯(cuò)誤。 二、性能 Python 解釋型語言,運(yùn)行速度通常比Java慢,但對(duì)于許多應(yīng)用場(chǎng)景
    的頭像 發(fā)表于 11-15 09:31 ?877次閱讀

    圖紙模板中的文本變量

    “ ?文本變量和系統(tǒng)自帶的內(nèi)置變量,可以幫助工程師靈活、高效地配置標(biāo)題欄中的信息,而不用擔(dān)心模板中的文字對(duì)象被意外修改。 ? ” 文本變量的語法 文本變量以?${VARIABLENAM
    的頭像 發(fā)表于 11-13 18:21 ?510次閱讀
    圖紙模板中的文本<b class='flag-5'>變量</b>

    如何在文本字段中使用上標(biāo)、下標(biāo)及變量

    在KiCad的任何文本字段中,都可以通過以下的方式實(shí)現(xiàn)上標(biāo)、下標(biāo)、上劃線以及顯示變量及字段值的描述: 文本變量“文本變量”可以在 原理圖設(shè)置->工程->文本變量 中設(shè)置。下圖中設(shè)置了一
    的頭像 發(fā)表于 11-12 12:23 ?497次閱讀
    如何在文本字段中使用上標(biāo)、下標(biāo)及<b class='flag-5'>變量</b>

    Linux環(huán)境變量配置方法

    Linux上環(huán)境變量配置分為設(shè)置永久變量和臨時(shí)變量兩種。環(huán)境變量設(shè)置方法同時(shí)要考慮環(huán)境Shell類型,不同類型的SHELL設(shè)置臨時(shí)變量方法和
    的頭像 發(fā)表于 10-23 13:39 ?537次閱讀

    使用Python搭建簡(jiǎn)易本地http服務(wù)器,升級(jí)WIPI模組

    01 下載python https://www.python.org/downloads/ 02 安裝python 安裝時(shí)候選擇把path加入電腦環(huán)境變量 3 由于
    的頭像 發(fā)表于 09-29 15:38 ?1184次閱讀
    使用<b class='flag-5'>Python</b>搭建簡(jiǎn)易本地http服務(wù)器,升級(jí)WIPI模組

    如何幫助孩子高效學(xué)習(xí)Python:開源硬件實(shí)踐是最優(yōu)選擇

    家長(zhǎng)們常常擔(dān)心孩子在學(xué)習(xí)Python時(shí)所面臨的挑戰(zhàn),如復(fù)雜性、興趣保持、學(xué)習(xí)進(jìn)度和可用資源。對(duì)于希望有效教授孩子Python的家長(zhǎng)而言,了解硬件的作用至關(guān)重要,因?yàn)榻Y(jié)合硬件項(xiàng)目的Python
    的頭像 發(fā)表于 09-06 09:49 ?566次閱讀

    鴻蒙原生應(yīng)用元服務(wù)開發(fā)-倉頡基本概念程序結(jié)構(gòu)

    。此外,如果需要獲取程序啟動(dòng)時(shí)的命令行參數(shù),可以聲明和使用 Array 類型參數(shù)。 例如在以下程序中,我們?cè)陧攲?b class='flag-5'>作用定義了全局變量 a 和全局函數(shù) b,還有自定義類型 C、D 和 E,以及作為程序入口
    發(fā)表于 08-13 10:57

    pytorch和python的關(guān)系是什么

    在當(dāng)今的人工智能領(lǐng)域,Python已經(jīng)成為了最受歡迎的編程語言之一。Python的易學(xué)易用、豐富的庫和框架以及強(qiáng)大的社區(qū)支持,使其成為了數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)和深度學(xué)習(xí)等領(lǐng)域的首選語言。而在深度學(xué)習(xí)領(lǐng)域
    的頭像 發(fā)表于 08-01 15:27 ?3048次閱讀

    can數(shù)據(jù)幀有哪幾個(gè)組成

    CAN總線上傳輸數(shù)據(jù)的格式。一個(gè)典型的CAN數(shù)據(jù)幀由多個(gè)組成,包括幀起始、仲裁、控制、數(shù)據(jù)、CRC和幀結(jié)束。每個(gè)
    的頭像 發(fā)表于 07-24 15:14 ?1684次閱讀

    CAN數(shù)據(jù)幀的各個(gè)及其作用

    CAN數(shù)據(jù)幀由多個(gè)組成,包括幀起始、仲裁、控制、數(shù)據(jù)和幀結(jié)束。每個(gè)都有其特定的作用
    的頭像 發(fā)表于 07-24 15:10 ?2509次閱讀

    ubuntu下(python ver 2.7.6)運(yùn)行python demo_server.py后無反應(yīng)怎么解決?

    to device, then start mesh demo. 第一步中 Run demo_server.py on the computer 請(qǐng)問此demo_server.py作用? 另外,ubuntu下
    發(fā)表于 07-22 08:20

    Win10 vscode中無法編譯,提示python.exe: command not found怎么解決?

    電腦中已經(jīng)刪除之前安裝的python,環(huán)境變量也添加了報(bào)錯(cuò)內(nèi)容中要求的python路徑,我用git bash、cmd也是可以打開python的,證明環(huán)境
    發(fā)表于 06-07 06:42