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 Tkinter GUI编程入门介绍
Mar 10 Python
简单介绍利用TK在Python下进行GUI编程的教程
Apr 13 Python
Python基于PyGraphics包实现图片截取功能的方法
Dec 21 Python
Python下载网络文本数据到本地内存的四种实现方法示例
Feb 05 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
详解Django模版中加载静态文件配置方法
Jul 21 Python
Python numpy多维数组实现原理详解
Mar 10 Python
pycharm安装及如何导入numpy
Apr 03 Python
python3的pip路径在哪
Jun 23 Python
Pycharm制作搞怪弹窗的实现代码
Feb 19 Python
用Python爬取各大高校并可视化帮弟弟选大学,弟弟直呼牛X
Jun 11 Python
Python常遇到的错误和异常
Nov 02 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP漏洞全解(详细介绍)
2012/11/13 PHP
php猜单词游戏
2015/09/29 PHP
Zend Framework入门之环境配置及第一个Hello World示例(附demo源码下载)
2016/03/21 PHP
js下用eval生成JSON对象
2010/09/17 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
jquery通过ajax加载一段文本内容的方法
2015/01/15 Javascript
JS实现让网页背景图片斜向移动的方法
2015/02/25 Javascript
JavaScript实现向右伸出的多级网页菜单效果
2015/08/25 Javascript
JavaScript对象数组的排序处理方法
2015/10/21 Javascript
JavaScript中的数组遍历forEach()与map()方法以及兼容写法介绍
2016/05/19 Javascript
浅析Javascript的自动分号插入(ASI)机制
2016/09/29 Javascript
详解vue-cli 快速搭建单页应用之遇到的问题及解决办法
2018/03/01 Javascript
使用vue2实现带地区编号和名称的省市县三级联动效果
2018/11/05 Javascript
js form表单input框限制20个字符,10个汉字代码实例
2019/04/12 Javascript
使用webpack编译es6代码的方法步骤
2019/04/28 Javascript
详解微信小程序开发之formId使用(模板消息)
2019/08/27 Javascript
jQuery中event.target和this的区别详解
2020/08/13 jQuery
Vue自定义多选组件使用详解
2020/09/08 Javascript
深入剖析Python的爬虫框架Scrapy的结构与运作流程
2016/01/20 Python
打包发布Python模块的方法详解
2016/09/18 Python
Python检查ping终端的方法
2019/01/26 Python
Python3最长回文子串算法示例
2019/03/04 Python
Django学习笔记之为Model添加Action
2019/04/30 Python
python实现的爬取电影下载链接功能示例
2019/08/26 Python
HTML5自定义data-* data(obj)属性和jquery的data()方法的使用
2012/12/13 HTML / CSS
面向对象设计的原则是什么
2013/02/13 面试题
法院实习人员自我鉴定
2013/09/26 职场文书
探矿工程师自荐信
2014/01/24 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
上海世博会志愿者口号
2014/06/17 职场文书
小学校园文化建设汇报材料
2014/08/19 职场文书
国家领导干部党的群众路线教育实践活动批评与自我批评材料
2014/09/23 职场文书
2014年工程师工作总结
2014/11/25 职场文书
银行求职自荐信范文
2015/03/04 职场文书
小学生组织委员竞选稿
2015/11/21 职场文书