国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

掌握 Python 作用域規則的四個核心要點

開發
如果你對作用域不熟悉,可能會遇到很多讓人頭疼的問題。今天我們就一起聊聊Python作用域規則的四個核心要點。

在Python編程中,作用域是一個非常重要的概念。它規定了變量可以在哪里使用、以及它的生命周期。如果你對作用域不熟悉,可能會遇到很多讓人頭疼的問題。今天我們就一起聊聊Python作用域規則的4個核心要點。

核心要點1:全局作用域

我們先從最簡單的開始,什么是全局作用域呢?簡單來說,就是代碼里任何地方都能訪問到的變量。

# 定義一個全局變量
global_variable = "我是一個全局變量"

def my_function():
    print(global_variable)  # 在函數內部訪問全局變量

my_function()  # 輸出: 我是一個全局變量

這段代碼首先定義了一個全局變量global_variable。之后,在函數my_function()內部訪問這個變量并打印出來。可以看到,在函數內直接使用全局變量是沒有問題的。

核心要點2:局部作用域

再來看看局部作用域。局部作用域里的變量只能在它們所在的代碼塊內(如函數或類)被使用。

def local_function():
    local_variable = "我是局部變量"
    print(local_variable)

local_function()  # 輸出: 我是局部變量
print(local_variable)  # 報錯!NameError: name 'local_variable' is not defined

在這里,local_variable是在local_function()內定義的局部變量。當你嘗試在函數外訪問它時,Python會報錯,因為這個變量只存在于它的作用域范圍內。

核心要點3:LEGB規則

Python遵循所謂的LEGB規則,這是用來查找變量名字綁定的地方。這四個字母分別代表什么?

  • L(Local):局部作用域
  • E(Enclosing):嵌套作用域(閉包)
  • G(Global):全局作用域
  • B(Built-in):內置作用域

舉個例子來幫助理解。

x = "global"  # 全局變量

def outer():
    x = "enclosing"  # 外層作用域內的局部變量
    
    def inner():
        x = "local"  # 局部變量
        print(x)
    
    inner()

outer()  # 輸出: local

在這個示例中,inner()函數里面的print(x)會找到最近的作用域中的x變量,這里是inner()自己的“local”。所以最終輸出的是local。

核心要點4:使用global和nonlocal聲明改變變量綁定

最后一點要講的就是怎么在一個函數里面更改外部的變量值。

(1) 使用global

如果想在函數內部修改全局變量,就要用global關鍵字。

number = 0

def modify_global():
    global number
    number += 1

modify_global()
print(number)  # 輸出:1

在這個例子中,函數modify_global利用global關鍵字使得它可以增加全局變量number的值。

(2) 使用nonlocal

當在內嵌函數中要修改外層函數中的變量時,可以使用nonlocal關鍵字。

def counter():
    count = 0  # 外層作用域變量

    def increment():
        nonlocal count  # 聲明為非本地作用域變量
        count += 1
        return count

    return increment

increment_counter = counter()
print(increment_counter())  # 輸出: 1
print(increment_counter())  # 輸出: 2

這個例子展示了一個閉包的應用場景,其中increment()通過nonlocal聲明來修改外層函數counter中的變量count。

實戰案例

下面我們結合實際場景來練習下所學的知識點。假設你需要編寫一個計算器,用戶輸入表達式時能識別變量并計算結果。

memory = {}  # 用來保存用戶的變量定義

def evaluate_expression(expr):
    try:
        return eval(expr, globals(), memory)
    except Exception as e:
        return str(e)

def calculator():
    while True:
        expr = input("Enter an expression (or 'exit' to quit): ")
        if expr.lower() == 'exit':
            break
        
        result = evaluate_expression(expr)
        if isinstance(result, float):
            result = round(result, 4)  # 限制浮點數顯示精度
        
        print(f"Result: {result}")

# 運行計算器
calculator()

在這個實戰案例中,我們創建了一個交互式環境讓用戶定義他們自己的變量(這些變量存在字典memory中),同時也能進行常規數學運算。比如輸入x=5;y=10;x+y將會輸出結果15。這里eval()函數允許從一個字符串解析表達式,并根據傳入的全局變量字典(這里未傳額外)以及存儲自定義變量的memory字典執行它。

總結

本文詳細講解了Python作用域的四個核心要點:

  • 全局作用域讓變量可被任何地方訪問。
  • 局部作用域限定變量僅能在其定義的代碼塊內有效。
  • LEGB規則解釋變量搜索的順序:從本地出發逐級向外尋找。
  • 使用global和nonlocal聲明改變變量綁定。
責任編輯:趙寧寧 來源: 手把手PythonAI編程
相關推薦

2021-12-03 14:37:38

數據備份存儲備份

2013-01-10 09:47:09

HBase性能優化

2014-08-19 09:39:46

程序員

2019-06-26 09:00:00

DevSecOps安全漏洞

2009-03-13 09:39:34

JavaScript函數調用規則

2011-05-07 11:11:21

LCD拼接

2009-10-22 14:55:06

網絡綜合布線資料

2015-03-30 12:54:55

SQL ServerSQL Server

2023-10-12 22:25:04

微服務Spring

2011-06-21 17:24:29

外鏈SEO

2022-10-11 08:14:14

多線程鎖機制

2011-07-14 15:23:34

java

2013-09-10 17:41:56

移動網站性能優化移動web

2013-01-15 11:05:55

云計算云安全

2021-10-26 22:43:05

數據庫安全存儲

2010-06-29 09:06:39

Java思想Java虛擬機

2011-05-18 09:32:14

java

2023-10-17 08:57:21

2016-11-01 14:33:18

郝聯峰大數據

2022-05-04 12:44:57

Python編程語言
點贊
收藏

51CTO技術棧公眾號

国产精品爽爽爽| 免费a级毛片在线观看| 国产精品呻吟| 欧美一级黄色网| julia中文字幕一区二区99在线| 亚洲区一区二区| 亚洲欧洲日本韩国| 日韩欧美激情四射| 免费在线午夜视频| 91精品在线免费观看| 最新超碰在线| 亚洲精品理论电影| 老司机2019福利精品视频导航| 亚洲精品国产美女| 日韩a**中文字幕| 在线亚洲午夜片av大片| 美女久久久久久| 久久成人精品一区二区三区| 日本欧美在线| 韩国欧美亚洲国产| 清纯唯美亚洲综合一区| 91嫩草国产在线观看| 亚洲一区二区动漫| 综合久久国产| 久久综合九色综合欧美亚洲| 成人福利影院| 天天色综合天天| 五月天婷婷在线视频| 亚洲аv电影天堂网| 亚洲www啪成人一区二区| 精品自在线视频| 国产日产精品_国产精品毛片| 91欧美精品成人综合在线观看| 伊人成人在线视频| 亚洲一区尤物| 26uuu久久天堂性欧美| av五月婷婷| 欧美日韩一级视频| 精品91久久| 97在线观看免费| 欧美一区亚洲| 一区二区三区在线视频111| 99久久综合精品| 在线黄色国产电影| 亚洲自拍与偷拍| 精品无人乱码一区二区三区| 欧美偷拍一区二区| 午夜影院观看视频免费| 99精品国产91久久久久久| 久久99久久99精品免观看粉嫩| 黄色大片在线免费看| 91在线播放网址| 日精品一区二区| 中文字幕在线亚洲精品| 久久综合九色综合97婷婷女人| 色网址在线观看| 亚洲国产成人久久| 日韩精品社区| 亚洲欧美成人一区| 亚洲视频在线观看一区| 婷婷av在线| 欧美一区二区三区免费观看| 久久久久国产一区| 欧美亚洲自拍偷拍| 露出调教综合另类| 国产成人天天5g影院在线观看| 久久久久久久97| 美女久久久精品| 黄页免费在线| 欧美丝袜美女中出在线| 日本在线一区二区| 91青青草免费观看| 久久日韩精品一区二区五区| 一区二区三区视频网| 精品福利在线视频| 国产精品888| 欧妇女乱妇女乱视频| 亚洲成人av中文| 国精品产品一区| 国产经品一区二区| 26uuu色噜噜精品一区二区| 在线看女人毛片| 国产精品夜色7777狼人| 国产毛片精品视频| jizz在线观看中文| 日韩av色在线| 久久综合色婷婷| 亚洲综合伊人久久大杳蕉| 国产欧美日韩中文字幕在线| 91日韩精品一区| 丁香花视频在线观看| 91亚洲精品一区二区| 久久久99久久| 高清成人在线| 亚洲国产精品视频一区| 色综合中文字幕| 欧美人妖在线| 18成人免费观看视频漫画| 日韩在线视频观看| 激情综合色丁香一区二区| 岛国成人毛片| av资源一区二区| 午夜精品福利一区二区三区av| 美女av一区| 伊人久久精品视频| 成人18精品视频| 久久青草视频| 久久99精品久久久久久秒播放器| 亚洲国产精品va| 日韩免费网站| 国产精品伦子伦免费视频| 欧美午夜黄色| 亚洲在线视频福利| 欧美一级日韩一级| 久久99久久精品欧美| 午夜精品成人av| 国产精品视频网| 国产福利视频一区二区三区| 性一爱一乱一交一视频| 亚洲欧美日韩爽爽影院| 久久99最新地址| 久久一二三四| 亚洲图区在线| 久久欧美在线电影| 成人av手机在线观看| 视频在线日韩| 免费在线黄网站| 一区二区三区视频免费| 精品国产一区探花在线观看| 成人h在线观看| 国产盗摄精品一区二区酒店| 男人久久天堂| 成人线上播放| 一道本一区二区| 精品在线一区二区三区| 亚洲日本一区二区三区| 91久久国产最好的精华液| 欧美成人r级一区二区三区| 亚洲视频欧美视频| 国产精品高清在线观看| 日韩在线观看网站| 欧美亚洲一区三区| 亚洲一区二区三区四区在线免费观看 | 97久久网站| 黄色片视频在线观看| 亚洲一区 在线播放| 欧洲av一区| 亚洲一区二区三区免费看| 国产精品区一区| 91精品网站| 国产精品久久中文| 97成人精品区在线播放| 成人性视频欧美一区二区三区| 中文字幕精品在线| 污污在线观看| 国产精品一区二区三区四区在线观看 | 中文字幕 在线观看| 撸视在线观看免费视频| 一二三区高清| 久久91导航| 神马影视一区二区| 播五月开心婷婷综合| 亚洲主播在线播放| 久久影视电视剧免费网站| 国产69精品久久久久99| 国产欧美一区二区三区久久| 国产亚洲精品网站| 欧美性video| 美国一区二区三区在线播放| 在线日韩国产精品| 日韩中文av在线| 欧美精品一区在线| 波多野结衣中文字幕久久| 成人直播视频| 欧美日本不卡| 亚洲欧美福利一区二区| 久久久久久久久久久亚洲| 大片免费播放在线视频| 国产一区二区三区免费在线观看| 久久久亚洲影院| 黄色网页在线免费看| 国模一区二区三区白浆| 色一区av在线| 天堂av电影在线观看| 亚洲国产国产| 亚洲精品国产无天堂网2021| 日韩视频不卡中文| 成人羞羞国产免费网站| 亚洲成人激情社区| 91麻豆免费观看| 久久久精品一区二区三区| 91精品国产99| 国产又黄又爽免费视频| 天堂地址在线www| 久久久水蜜桃av免费网站| 亚洲精品一区av在线播放| 日本一本中文字幕| 国产综合色区在线观看| 福利一区在线观看| 91嫩草在线|