测试开发技术网站
博客
设计
设计
开发
Python
测试
unittest
运维
Linux基础应用
CI/CD
CI/CD
数据库
数据库
云计算
云计算
云原生
云原生
爬虫
爬虫
数据分析
数据分析
人工智能
人工智能
登录
注册
Python中global和nolocal关键字的使用方法
收藏本文
作者:redrose2100 类别: 日期:2022-05-09 09:17:26 阅读:938 次 消耗积分:0 分
[TOC] # 1、global的作用 global的作用就是将变量声明为全局变量 这个问题在面试中非常常见,经常会有面试官问,如下代码打印结果是啥 ```python var=10 def func(): var=var+20 print("inner:",var) print(var) func() print(var) ``` 分析:其实这段代码真正执行的时候是会报错的,提示在第三行的位置var未定义,这是因为第一行定义的var为全局变量,而在第三行中=右侧的var为局部变量,此变量在函数局部内确实未定义,这就是这段代码报错的原因,解决这个问题的方法就是在第三行代码之前,用global关键将var声明为全局变量 如下: ```python var=10 def func(): global var var=var+20 print("inner:",var) print(var) func() print(var) ``` 执行结果如下: ```python 10 inner: 30 30 ``` 这里需要记住的一个关键点是,全局变量在函数局部区域内,不能出现在赋值符号=的右侧,但是如果没有赋值符号,比如直接打印,这时又是可见的,如下: ```python var=10 def func(): print("inner:",var) print(var) func() print(var) ``` 执行结果为: ```python 10 inner: 10 10 ``` 如果在函数局部区域内对和全局变量同名的变量重新赋值时,注意此时赋值的并不是全局变量,而是一个全新的局部变量,而全局变量并未发生变化,如下: ```python var=10 def func(): var=20 print("inner:",var) print(var) func() print(var) ``` 此时执行结果为: ```python 10 inner: 20 10 ``` # 2、nonlocal的作用 * nonlocal的作用是声明既不是全局变量,也不是局部变量 * 如下代码,虽然使用global声明var,但是代码还是报错的,这是因为这里的var变量并不是全局变量,同时在最内层函数中也不是局部变量,在这种情况下就需要nonlocal关键字类声明 ```python def outer(): var=10 def inner(): global var var=var+20 print("in inner:",var) print(var) inner() print(var) outer() ``` 如下代码:使用nonlocal声明之后,就可以正常执行了,这就是nonlocal关键字的作用 ```python def outer(): var=10 def inner(): nonlocal var var=var+20 print("in inner:",var) print(var) inner() print(var) outer() ``` 执行结果如下: ```python 10 in inner: 30 30 ```
始终坚持开源开放共享精神,同时感谢您的充电鼓励和支持!
版权所有,转载本站文章请注明出处:redrose2100, http://blog.redrose2100.com/article/120
上一篇:
Liquibase----SQL格式通过update更新MySQL数据库
下一篇:
Python中的魔法函数__init__/__del__/__new__的使用方法
搜索
个人成就
出版书籍
《Pytest企业级应用实战》
测试开发技术全栈公众号
测试开发技术全栈公众号
DevOps技术交流微信群
加微信邀请进群
常用网站链接
开源软件洞察
云原生技术栈全景图
Python语言官方文档
Golang官方文档
Docker官方文档
Jenkins中文用户手册
Scrapy官方文档
VUE官方文档
Harbor官方文档
openQA官方文档
云原生开源社区
开源中国
Kubernetes中文文档
Markdown语法官方教程
Kubernetes中文社区
Kubersphere官方文档
BootStrap中文网站
JavaScript中文网
NumPy官方文档
Pandas官方文档
GitLink确实开源网站
数据库排名网站
编程语言排名网站
SEO综合查询网站
数学加减法练习自动生成网站
Kickstart Generator
文章分类
最新文章
最多阅读
特别推荐
×
Close
登录
注册
找回密码
登录邮箱:
登录密码:
图片验证码:
注册邮箱:
注册密码:
邮箱验证码:
发送邮件
注册邮箱:
新的密码:
邮箱验证码:
发送邮件