全局变量和局部变量 | 学习笔记

简介: 快速学习 全局变量和局部变量

开发者学堂课程【Python入门 2020年版全局变量和局部变量】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10330


全局变量和局部变量


全局变量和局部变量

1. a=100#这个变量是全局变量,在整个 py 文件里都可以访问,无论在哪里写,这个文件都可以访问。

Def test():

X=’hello’

#这个变量是在函数内部定义的变量,它是局部变量,只能在函数内部使用,如果在外部写一个就会报错,出了函数以后就不能使用。

Print’X={}’.formatx))

Printa在函数内部就可以使用,

Print函数外部a={}’.format(a) 该变量是一个全局变量,在函数内部跟外部都能使用的一个变量。

Printx这个函数会报错,#x只能在函数内部使用

Print函数内部a={}’.format(a)

运行结果:

函数外部 a=100 函数外部可以使用,为什么函数内部没有打印,因为没有调用,调用一下,

Test()

Printx

Print(函数外部a={}’.format(a)

运行结果

函数外部 a=100

函数内部 a=100

这个比较简单,是最最基本的一个情况,

2. 假如现在这样写 a=10,会怎么样,在函数内部生成的变量是一个局部变量,a=100在函数外部生成的变量是一个全局变量,a=10是一个什么变量,有两个选择#

1. 在函数内部又定义了一个新的局部变量

2.修改了外部的全局变量。

Def test():

X=’hello’

Print’X={}’.formatx))

a=10

Print函数内部a={}’.format(a)

Test()

Printx

Print(函数外部a={}’.format(a)

运行结果:

函数内部 a=10

函数外部 a=100

所以是1.在函数内部又定义了一个新的局部变量。

#如果局部变量的名和全局变量同名,会在函数内部又定义一个新的局部变量,而不是修改全局变量

3.global 关键字的使用

word=’你好

#函数内部如果想要修改全局变量?

Global word

Word=’OK’

Test()

Print(‘函数外部word={}’.formatword)

运行结果:

函数外部 word=ok

#使用 global 对变量进行声明,可以通过函数修改全局变量的值。

A 没有写 global,就没有写外面的,是一个新的局部变量,global 之后它就会修改外部的全局变量,只要调用了 test函数,test 函数对 word 进行修改,之后再在后面写 word,结果都是 ok

4.#内置函数

globals()可以查看全局变量 , locals()可以查看局部变量。

print( ' locals = {},globals = {'.format(locals() globals()))

不调用不修改 word,调用了以后查看 word,永远都是 ok,

运行结果:

locals = ("x ' : "'hello' , ' a ': 10)},globals = {'_name_ ': '_main_', '_doc_ ': None, '_package_ ': None,'}

注意:

会打印函数里的局部变量,locals 中没有 word,对整个变量来说,test 也是一个变量,这个函数对应的值是一个函数,同名中会出错,所以起名字时要注意,写的时候将光标放到那里,shadows name’a’from outer scope,表示在外部的环境里有一个 a 变量,局部变量的名字跟全局变量的名字起的相同了。

5.#python 里,只有函数可以分割作用域,全局变量全局范围里都可以使用,局部变量只能在这个范围内使用。

例:

If 3>2:

m =’hi’

printm

m 是一个全局变量,还是局部变量,是一个全局变量,在 if 语句中写的全局变量,在外面依然可以访问,

运行结果:

Hi   (是一个全局变量)

Printglobal是())

运行结果:’m’,’hi

虽然是全局变量,但这个写法不太正确,打印 m 就会报错,因为他认为你没有定义。

相关文章
|
移动开发 缓存 网络协议
Websocket协议原理及Ws服务器代码实现
Websocket协议原理及Ws服务器代码实现
|
9月前
|
存储 人工智能 物联网
云计算助力医疗信息化,推动智慧医疗新模式。
云计算正深刻改变医疗行业,通过高效数据存储、管理与共享,优化医疗资源分配,推动远程医疗发展。它解决了“数据孤岛”问题,强化了数据安全与隐私保护,同时助力智慧医疗建设,降低信息化成本并提升服务效率。未来,云计算将与5G、AI等技术融合,进一步促进医疗服务智能化与规范化,为医疗行业带来全新可能。
481 7
|
传感器 存储 编解码
基于STM32的智能手环设计与实现(上)
基于STM32的智能手环设计与实现(上)
1071 0
|
Web App开发 JavaScript 前端开发
Node.js 文件系统操作指南
Node.js 文件系统操作指南
408 0
|
12月前
|
敏捷开发 监控 数据可视化
项目管理仪表盘详解:高效团队协作从这里开始
从IT开发到工程建设、从市场营销到研发项目,仪表盘都可以通过整合和可视化关键数据,帮助团队协作、监控进度、优化资源配置,从而确保项目按时、高质量交付。
558 0
项目管理仪表盘详解:高效团队协作从这里开始
|
算法 Java
数据结构与算法学习五:双链表的增、删、改、查
双链表的增、删、改、查操作及其Java实现,并通过实例演示了双向链表的优势和应用。
195 0
数据结构与算法学习五:双链表的增、删、改、查
|
存储 算法 程序员
C 语言递归算法:以简洁代码驾驭复杂逻辑
C语言递归算法简介:通过简洁的代码实现复杂的逻辑处理,递归函数自我调用解决分层问题,高效而优雅。适用于树形结构遍历、数学计算等领域。
|
运维 Prometheus 监控
「架构」云上自动化运维及其应用
企业在云上采用自动化运维,通过Prometheus+Grafana实现监控,Ansible进行配置管理,Jenkins+GitLab+SonarQube支持CI/CD,提升效率,降低成本。关键指标包括系统可用性、故障恢复时间等。通过自动化监控、配置管理和持续集成/部署,保证服务稳定性,促进快速迭代,确保市场竞争力。持续改进与培训是维持领先的关键。
408 0
|
消息中间件 缓存 监控
海量订单系统优化
海量订单系统优化
224 0
|
人工智能 算法 决策智能
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
动态规划之背包问题(01背包问题、完全背包问题、方案数填满型背包问题)
664 1