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里对list中的整数求平均并排序
Sep 12 Python
Python中的推导式使用详解
Jun 03 Python
详解Python map函数及Python map()函数的用法
Nov 16 Python
Python代码实现KNN算法
Dec 20 Python
python+opencv识别图片中的圆形
Mar 25 Python
使用matplotlib画散点图的方法
May 25 Python
pandas的排序和排名的具体使用
Jul 31 Python
python selenium循环登陆网站的实现
Nov 04 Python
Pandas操作CSV文件的读写实现方法
Nov 13 Python
解决tensorboard多个events文件显示紊乱的问题
Feb 15 Python
keras实现基于孪生网络的图片相似度计算方式
Jun 11 Python
Python3.9.1中使用split()的处理方法(推荐)
Feb 07 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 header函数分析详解
2011/08/06 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
Yii框架数据库查询、增加、删除操作示例
2019/10/14 PHP
laravel框架如何设置公共头和公共尾
2019/10/22 PHP
Laravel 自动转换长整型雪花 ID 为字符串的实现
2020/10/27 PHP
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
JQuery slideshow的一个小问题(如何发现及解决过程)
2013/02/06 Javascript
JavaScript加强之自定义callback示例
2013/09/21 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
动态加载dtree.js树treeview(示例代码)
2013/12/17 Javascript
jQuery中parent()方法用法实例
2015/01/07 Javascript
JS检测页面中哪个HTML标签触发点击事件的方法
2016/06/17 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
jQuery中页面返回顶部的方法总结
2016/12/30 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
2017/04/25 Javascript
基于node.js制作简单爬虫教程
2017/06/29 Javascript
AngularJs的UI组件ui-Bootstrap之Tooltip和Popover
2018/07/13 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
微信小程序发布新版本时自动提示用户更新的方法
2019/06/07 Javascript
Python中asyncore的用法实例
2014/09/29 Python
python 排序算法总结及实例详解
2016/09/28 Python
windows下安装python的C扩展编译环境(解决Unable to find vcvarsall.bat)
2018/02/21 Python
深入理解Python爬虫代理池服务
2018/02/28 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python利用requests模块下载图片实例代码
2019/08/12 Python
python list多级排序知识点总结
2019/10/23 Python
Python如何使用argparse模块处理命令行参数
2019/12/11 Python
整理HTML5移动端开发的常用触摸事件
2016/04/15 HTML / CSS
保安员岗位职责
2013/11/17 职场文书
酒店中秋节促销方案
2014/01/30 职场文书
请假条格式范文
2014/04/10 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
乡镇综治宣传月活动总结
2014/07/02 职场文书
唐山大地震的观后感
2015/06/05 职场文书
springmvc直接不经过controller访问WEB-INF中的页面问题
2022/02/24 Java/Android