亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

Python 中的作用域

變量的作用域是指變量的作用范圍,是程序可以訪問該變量的正文區域。例如:

g = 123

def function():
    print(g)

print(g)    
  • 程序總共有 6 行
  • 在第 1 行,定義了變量 g
  • 在第 4 行,在函數 function 內部訪問變量 g
  • 在第 6 行,在全局范圍訪問變量 g

因為可以在程序的任意位置(從第 1 行到第 6行)訪問到該變量,變量 g 的作用域就是從第 1 行到第 6行的正文區域。

1. 四種作用域

1.1 概述

在 Python 中,存在 4 種類型的作用域:

  • Builtin 作用域,能夠訪問內置函數和內置變量的正文區域
  • Global 作用域,能夠訪問全局變量的正文區域
  • Local 作用域,能夠訪問函數參數和局部變量的正文區域
  • Enclosing 作用域,如果函數是嵌套定義的,能夠訪問外部函數的參數和局部變量的正文區域

1.2 Builtin 作用域

Builtin 作用域是能夠訪問內置函數和內置變量的正文區域。示例說明 Builtin 作用域:

def function():
    print(max(1, 2))

print(max(3, 4))
  • max 是內置函數
    • 它的作用域類型是 Builtin 作用域
    • 在第 2 行,在函數 function 內訪問它
    • 在第 4 行,在全局范圍訪問它
  • max 的作用域是從第 1 行到第 4 行的文本區域

1.3 Global 作用域

Global 作用域是能夠訪問全局變量的正文區域。示例說明 Global 作用域:

global_var = 123

def function():
    print(global_var)

print(global_var)
  • global_var 是全局變量
    • 它的作用域類型是 Global 作用域
    • 在第 1 行,在全局范圍訪問它
    • 在第 4 行,在函數 function 內訪問它
    • 在第 6 行,在全局范圍訪問它
  • global_var 的作用域是從第 1 行到第 6 行的文本區域

1.4 Local 作用域

Local 作用域是能夠訪問函數參數和局部變量的正文區域。示例說明 Local 作用域:

def function():
    local_var = 123
    print(local_var)

print(local_var)
  • local_var 是函數 function 的局部變量
    • 它的作用域類型是 Local 作用域
    • 在第 2 行,在函數 function 內訪問它
    • 在第 3 行,在函數 function 內訪問它
  • 在第 5 行,在函數 function 外訪問變量
    • 只能在函數內部訪問局部變量
    • 運行時會產生異常 NameError
  • local_var 的作用域是從第 2 行到第 3 行的文本區域

1.5 Enclosing 作用域

假設函數是嵌套定義的,Enclosing 作用域是能夠訪問外部函數的參數和局部變量的正文區域。示例說明 Local 作用域:

def outter():
    outter_var = 123
    def inner():
        inner_var = 456
        print(outter_var)

outter()        
  • 函數嵌套定義
    • 函數 outter 是外部函數
    • 函數 inner 是內部函數
  • outter_var 是外部函數 outter 的局部變量
    • 它的作用域類型是 Encloing 作用域
    • 在第 2 行,在外部函數 outter 內訪問它
    • 在第 5 行,在外部函數 inner 內訪問它
  • outter_var 的作用域是從第 2 行到第 5 行的文本區域