Python 作用域:局部作用域、全局作用域和使用 global 关键字
变量只在创建它的区域内可用。这被称为作用域。
局部作用域
在函数内部创建的变量属于该函数的局部作用域,并且只能在该函数内部使用。
示例:在函数内部创建的变量在该函数内部可用:
def myfunc():
x = 300
print(x)
myfunc()
函数内部的函数
如上面的示例所解释的那样,变量 x 在函数外部不可用,但可以在函数内部的任何函数中使用:
示例:局部变量可以从函数内部的函数中访问:
def myfunc():
x = 300
def myinnerfunc():
print(x)
myinnerfunc()
myfunc()
全局作用域
在 Python 代码的主体部分创建的变量是全局变量,属于全局作用域。全局变量可以在任何作用域中使用,包括全局作用域和局部作用域。
示例:在函数外部创建的变量是全局的,并且可以被任何人使用:
x = 300
def myfunc():
print(x)
myfunc()
print(x)
变量命名
如果在函数内部和外部使用相同的变量名称,Python 将把它们视为两个不同的变量,一个在全局作用域(函数外部)中可用,另一个在局部作用域(函数内部)中可用:
示例:该函数将打印局部变量 x,然后代码将打印全局变量 x:
x = 300
def myfunc():
x = 200
print(x)
myfunc()
print(x)
global 关键字
如果需要创建一个全局变量,但又受限于局部作用域,可以使用 global 关键字。global 关键字将变量声明为全局变量。
示例:如果使用 global 关键字,变量将属于全局作用域:
def myfunc():
global x
x = 300
myfunc()
print(x)
此外,如果您希望在函数内部更改全局变量的值,也可以使用 global 关键字。
示例:要在函数内部更改全局变量的值,请使用 global 关键字引用该变量:
x = 300
def myfunc():
global x
x = 200
myfunc()
print(x)
最后
为了方便其他设备和平台的小伙伴观看往期文章:公众号搜索Let us Coding,或者扫描下方二维码,关注公众号,即可获取最新文章。
看完如果觉得有帮助,欢迎点赞、收藏和关注

Python 作用域:局部作用域、全局作用域和使用 global 关键字的更多相关文章
- 【Laravel】为Eloquent 模型设置全局作用域和局部作用域进行查询
全局作用域 所谓「全局作用域」,指的是预置过滤器在注册该「全局作用域」的模型类的所有查询中生效,不需要指定任何额外条件. 以 User 模型类为例,我们在系统中可能只想针对已经验证过邮箱的用户进行操作 ...
- 【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】
一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(Firs ...
- python基础(7)-函数&命名空间&作用域&闭包
函数 动态参数 *args def sum(*args): ''' 任何参数都会被args以元组的方式接收 ''' print(type(args)) # result:<class 'tupl ...
- Py修行路 python基础 (九)作用域 函数嵌套 闭包
名称空间与作用域 变量,函数 分成三种 #内置名称空间 内置函数, 系统函数内部自定义的. python查看内置函数,命令: import builtins dir(builtins) #全局名称空 ...
- python函数名称空间与作用域、闭包
一.命名空间概念 1.命名空间(name space) 名称空间是存放名字的地方. 若变量x=1,1存放在内存中,命名空间是存放名字x.x与1绑定关系的地方. 2.名称空间加载顺序 python te ...
- Python新式类 单例模式与作用域(四)
1 新式类与旧式类 新式类拥有经典类的全部特性之外,还有一些新的特性,比如 __init__发生变化,新增了静态方法__new__,python3目前都采用新式类,新式类是广度优先,旧式类是深度优先 ...
- Python 函数返回值、作用域
函数返回值 多条return语句: def guess(x): if x > 3: return "> 3" else: return "<= 3&qu ...
- Python基本语法_变量作用域LEGB
目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作 ...
- python函数----名称空间和作用域
一 名称空间 名称空间即存放名字与对象映射/绑定关系的地方. 对于x=3,Python会申请内存空间存放对象3,然后将名字x与3的绑定关系存放于名称空间中,del x表示清除该绑定关系. 在程序执行 ...
- JS基础_全局作用域
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
随机推荐
- [SDOI2008] 仪仗队【题解】
题目描述 作为体育委员,C 君负责这次运动会仪仗队的训练.仪仗队是由学生组成的 \(N \times N\) 的方阵,为了保证队伍在行进中整齐划一,C 君会跟在仪仗队的左后方,根据其视线所及的学生人数 ...
- Linux切换Root权限配置和无法切换排查
1.wheel组 普通用户禁止su切换root 在默认的情况下,普通用户通过su可以切换到root用户下,为了加强系统安全性,使用Linux的特殊用户组wheel来实现,只有用户加入到wheel组当中 ...
- AMH安装Nextcloud出现Access denied
AMH部署了LAMP或者LNMP,然后常规安装Nextcloud,安装完成后跳转到首页就出现Access denied.Nextcloud的文件夹权限已经修改,可读写.http://127.0.0.1 ...
- 我开源了团队内部基于SpringBoot Web快速开发的API脚手架v1.6.0更新
什么是 rest-api-spring-boot-starter rest-api-spring-boot-starter 适用于SpringBoot Web API 快速构建让开发人员快速构建统一规 ...
- 关于No changes detected
查看app在settings.py文件夹中是否有注册.
- 医疗知识图谱问答 ——Neo4j 基本操作
前言 说到问答机器人,就不得不说一下 ChatGPT 啦.一个预训练的大预言模型,只要是人类范畴内的知识,似乎他回答得都井井有条,从写文章到写代码,再到解决零散琐碎的问题,不光震撼到我们普通人,就百度 ...
- Rollup 编译资源离不开 plugin
rollup 也是一个 JavaScript 的模块化编译工具,可以帮助我们处理资源. 与webpack比较 rollup相比 webpack 理念更为简单,能处理的场景也更有限. 资源类型 处理方式 ...
- 【go笔记】使用标准库flag解析命令行参数
前言 Go语言标准库中提供了一个包flag可以解析命令行参数. 示例代码:文件读取 package main import ( "fmt" "flag" &qu ...
- python语法笔记
最近抽时间恶补了一下python语法,做个笔记. 比较运算符的结果为bool类型,示例:a=10,b=20 print("a>b吗?",a>b) 运行结果: ...
- [ABC151E] Max-Min Sums
2023-03-11 题目 题目传送门 翻译 翻译 难度&重要性(1~10):5 题目来源 AtCoder 题目算法 数学 解题思路 对于一个正数 \(x,x\in A\) 一定会有 \(C_ ...