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的GUI框架PySide的安装配置教程
Feb 16 Python
Python中实现最小二乘法思路及实现代码
Jan 04 Python
分析python请求数据
Aug 19 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
对pytorch网络层结构的数组化详解
Dec 08 Python
在OpenCV里实现条码区域识别的方法示例
Dec 04 Python
python 实现dict转json并保存文件
Dec 05 Python
如何给Python代码进行加密
Jan 10 Python
Tensorflow 卷积的梯度反向传播过程
Feb 10 Python
k-means 聚类算法与Python实现代码
Jun 01 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
Feb 18 Python
Python与C/C++的相互调用案例
Mar 04 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和ACCESS写聊天室(六)
2006/10/09 PHP
php数组编码转换示例详解
2014/03/11 PHP
php实现遍历多维数组的方法
2015/11/25 PHP
php 时间time与日期date之间的使用详解及区别
2016/11/07 PHP
php strftime函数获取日期时间(switch用法)
2018/05/16 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
js禁止小键盘输入数字功能代码
2011/08/01 Javascript
Jquery通过Ajax访问XML数据的小例子
2013/11/18 Javascript
用模版生成HTML的的框架jquery.tmpl使用详解
2015/01/07 Javascript
jQuery中hover方法和toggle方法使用指南
2015/02/27 Javascript
树结构之JavaScript
2017/01/24 Javascript
jQuery、layer实现弹出层的打开、关闭功能
2017/06/28 jQuery
jQuery使用bind函数实现绑定多个事件的方法
2017/10/11 jQuery
详解基于vue-cli配置移动端自适应
2018/01/13 Javascript
Vue.js单向绑定和双向绑定实例分析
2018/08/14 Javascript
微信小程序页面间值传递的两种方法
2018/11/26 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
jquery 插件重新绑定的处理方法分析
2019/11/23 jQuery
jquery实现淡入淡出轮播图效果
2020/12/13 jQuery
jQuery实现手风琴特效
2021/01/11 jQuery
CentOS6.5设置Django开发环境
2016/10/13 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
NetworkX之Prim算法(实例讲解)
2017/12/22 Python
pandas通过索引进行排序的示例
2018/11/16 Python
Python+OpenCV感兴趣区域ROI提取方法
2019/01/10 Python
基于python实现KNN分类算法
2020/04/23 Python
利用pyshp包给shapefile文件添加字段的实例
2019/12/06 Python
TensorFlow实现自定义Op方式
2020/02/04 Python
Django 解决distinct无法去除重复数据的问题
2020/05/20 Python
python pymysql库的常用操作
2020/10/16 Python
利用CSS3 动画 绘画 圆形动态时钟
2018/03/20 HTML / CSS
主要的Ajax框架都有什么
2013/11/14 面试题
学习教师敬业奉献模范事迹材料思想汇报
2014/09/19 职场文书
学校运动会报道稿
2014/09/23 职场文书
女儿满月酒致辞
2015/07/29 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL