首页 > 编程语言 >Python 中的作用域

Python 中的作用域

时间:2023-01-26 23:22:57浏览次数:39  
标签:function 函数 访问 作用域 Python var outter

变量的作用域是指变量的作用范围,是程序可以访问该变量的正文区域。例如:

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 行的文本区域
它的作用域类型是 Builtin 作用域
在第 2 行,在函数 function 内访问它
在第 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 作用域
在第 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 行的文本区域
它的作用域类型是 Local 作用域
在第 2 行,在函数 function 内访问它
在第 3 行,在函数 function 内访问它
只能在函数内部访问局部变量
运行时会产生异常 NameError
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 行的文本区域
函数 outter 是外部函数
函数 inner 是内部函数
它的作用域类型是 Encloing 作用域
在第 2 行,在外部函数 outter 内访问它
在第 5 行,在外部函数 inner 内访问它
————————————————
版权声明:本文为CSDN博主「很酷的站长」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/linyichao123/article/details/128768094

标签:function,函数,访问,作用域,Python,var,outter
From: https://www.cnblogs.com/10zhan/p/17068383.html

相关文章

  • Python int 最大最小值
    Pythonint最大最小值若有错误还请大佬指出Answer不多说,先上答案:注:这是理论上\(\mid\):这个表示整除e.g.:\(5\mid2=2\)max32位\[2^{32\times(2^{31}-1)\mid......
  • Python pip
    Pythonpip设置全局镜像pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple安装指定版本的包pipinstall[包名]==[版本号]这个方法也可......
  • 02 python初识
    Python初识一、入门基础1.第一个Python程序python代码都是编写在以.py结尾的文件中。我们随便新建一个文件,并将文件后缀名改为.py,在里面编写我们的第一个python......
  • objectarx调用python注意点
    1.用conda先装好虚拟环境,为了兼容cad2010,最高只能用python3.5(已经不维护了),如果cad高版本建议python3.6+2.能用pip安装的就用pip安装,不能用pip安装的不要直接用co......
  • Serverless架构下用Python轻松实现图像分类和预测
    Serverless架构下用Python轻松实现图像分类和预测图像分类是人工智能领域的一个热门话题。通俗解释就是,图像分类是一种根据各自在图像信息中所反映的不同特征,把不同类别的......
  • Python内置函数
    5.6Python内置函数Python自带的所有内置函数如下:Python函数以上为Python3.10中所有的内置函数,其中绝大部分在前面的学习当中都已经接触过了。这里在补充介绍下没有......
  • Python入门之选择语句&循环语句练习
    """选择语句ifbool类型的条件:pass满足条件执行的语句else:不满足条件执行的语句----------------------------......
  • Python入门之初识while循环
    """循环语句while条件:循环体"""#死循环:循环条件永远是满足的。whileTrue:usd=int(input("请输入美元:"))print(usd*6.9)i......
  • python3.10调用邮件SMTP报错: ssl.SSLError: [SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] s
    一:python3.10调用邮件SMTP报错:ssl.SSLError:[SSL:SSLV3_ALERT_HANDSHAKE_FAILURE]sslv3alerthandshakefailure(_ssl.c:997)解决报错内容File"c:\Users\Le......
  • 浙大“python->机器语言“的学习二(循环计算)
    辗转相除Euclid设a,b为两个自然数,欲求a,b的最大公约数若a%b为0,则b就是a,b的最大公约数,计算结束否则令a为b,而b为原来的a%b,重复步骤2a,b=map(int,input().spli......