Python局部变量与全局变量区别原理解析


Posted in Python onJuly 14, 2020

1、局部变量

name = "Yang Li"
def change_name(name):
  print("before change:",name)
  name = "你好"
  print("after change", name)
change_name(name)
print("在外面看看name改了么?",name)

输出:

before change: Yang Li
after change 你好
在外面看看name改了么? Yang Li

2、全局变量

NAME = "alex" 
def yangjian():
   global NAME       # 已经声明,NAME就是全局的的那个变量
   print('1我的名字', NAME)
   NAME = "land"     # 修改 全局的变量
   print('2我的名字', NAME)

def qupengfei():
   name = "yang"
   print('3我的名字', NAME)  

yangjian()  
qupengfei()

输出:

1我的名字 alex  
2我的名字 land
3我的名字 yang

######## 全局变量变量名大写
######## 局部变量变量名小写
#函数中 优先读取局部变量,能读取全局变量,无法对全局变量重新赋值;但是对于可变类型,可以对内部元素进行操作;如果函数中有global关键字,变量本质上就是全局的那个变量,可读取可赋值

3、nonlocal

name = "刚娘"

def weihou():
  name = "陈卓"
  def weiweihou():
    nonlocal name  # nonlocal,指定上一级变量,如果没有就继续往上直到找到为止
    name = "冷静"
    print(name)
  weiweihou()
  print(name)

print(name)
weihou()
print(name)
# 刚娘
# 陈卓
# 陈卓
# 刚娘

全局与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:
在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

函数返回值

要想获取函数的执行结果,就可以用return语句把结果返回

注意:

函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
如果未在函数中指定return,那这个函数的返回值为None

嵌套函数

name = "Alex"
def change_name():
  name = "Alex2"
  def change_name2():
    name = "Alex3"
    print("第3层打印",name)
  change_name2() #调用内层函数
  print("第2层打印",name)
change_name()
print("最外层打印",name)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
对Python新手编程过程中如何规避一些常见问题的建议
Apr 01 Python
python通过邮件服务器端口发送邮件的方法
Apr 30 Python
django+js+ajax实现刷新页面的方法
May 22 Python
Python递归函数定义与用法示例
Jun 02 Python
django项目运行因中文而乱码报错的几种情况解决
Nov 07 Python
Numpy中stack(),hstack(),vstack()函数用法介绍及实例
Jan 09 Python
TensorFlow搭建神经网络最佳实践
Mar 09 Python
python实现一个简单的并查集的示例代码
Mar 19 Python
Python中函数的返回值示例浅析
Aug 28 Python
Python正则表达式急速入门(小结)
Dec 16 Python
python飞机大战 pygame游戏创建快速入门详解
Dec 17 Python
Django web自定义通用权限控制实现方法
Nov 24 Python
Python迭代器协议及for循环工作机制详解
Jul 14 #Python
windows10在visual studio2019下配置使用openCV4.3.0
Jul 14 #Python
解决python pandas读取excel中多个不同sheet表格存在的问题
Jul 14 #Python
Python matplotlib读取excel数据并用for循环画多个子图subplot操作
Jul 14 #Python
python3 循环读取excel文件并写入json操作
Jul 14 #Python
Python爬虫实例——scrapy框架爬取拉勾网招聘信息
Jul 14 #Python
Python爬虫爬取新闻资讯案例详解
Jul 14 #Python
You might like
PHP 文件缓存的性能测试
2010/04/25 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
PHP的mysqli_sqlstate()函数讲解
2019/01/23 PHP
Laravel使用RabbitMQ的方法示例
2019/06/18 PHP
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
原生js实现给指定元素的后面追加内容
2013/04/10 Javascript
jQuery判断复选框是否勾选的原理及示例
2014/05/21 Javascript
js弹出对话框方式小结
2015/11/17 Javascript
Bootstrap每天必学之导航条
2015/11/27 Javascript
浅谈js控制li标签排序问题 js调用php函数的方法
2016/10/16 Javascript
Javascript 两种刷新方法以及区别和适用范围
2017/01/17 Javascript
JavaScript使用原型和原型链实现对象继承的方法详解
2017/04/05 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
vue之数据交互实例代码
2017/06/20 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
2018/06/10 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
vue观察模式浅析
2018/09/25 Javascript
js prototype和__proto__的关系是什么
2019/08/23 Javascript
Element图表初始大小及窗口自适应实现
2020/07/10 Javascript
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
python求斐波那契数列示例分享
2014/02/14 Python
python生成随机验证码(中文验证码)示例
2014/04/03 Python
在RedHat系Linux上部署Python的Celery框架的教程
2015/04/07 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
对numpy中的where方法嵌套使用详解
2018/10/31 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
Python安装并操作redis实现流程详解
2020/10/13 Python
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
诺心蛋糕官网:LE CAKE
2018/08/25 全球购物
关于保护环境的建议书
2014/08/26 职场文书
2014最新开业庆典策划方案(5篇)
2014/09/15 职场文书
镇班子对照检查材料思想汇报
2014/09/24 职场文书
2014年绿化工作总结
2014/12/09 职场文书
个人事迹材料范文
2014/12/29 职场文书
学校党支部公开承诺书
2015/04/30 职场文书
2019个人半年工作总结
2019/06/21 职场文书