python函数局部变量、全局变量、递归知识点总结


Posted in Python onNovember 15, 2019

函数局部变量 全局变量 及其作用域

#简单类型(int str等)变量的局部变量与全局变量及其作用域的关系
name = "xxx" #第一级顶头定义的变量都称为全局变量,其作用域从变量定义的位置开始到此程序结束
def Print_Name():
  print("name before change:", name)
#由于name在此函数之前已经被定义为全局变量,此处函数读取变量name是读取的全局变量name “xxx”,函数内部就不能再定义其同名局部变量,否则无法区分变量为局部变量还是全局变量
#  name = "yyy" #此语句放开以后会报错:IndentationError: unindent does not match any outer indentation level
Print_Name()

def Change_Name():
  name = "yyy" #函数内部首先定义全局变量的同名局部变量,则整个函数内部操作的为局部变量(一个与全局变量同名的临时变量)
  print("name after change is", name)

Change_Name() # yyy实际输出的是局部变量的值
print("global name is", name) # xxx此处访问的是全局变量,因为此print语句不是在Change_Name内部。

#函数内部需要强制对全局变量进行修改,使用global关键字
def Change_global_Name():
  global name
  print("name before change is :", name)
  name = "yyy"
Change_global_Name() # xxx 修改前的全局变量
print("global name is :", name) # yyy此处由于函数内强制声明name为global变量,整个函数内部可以对global进行操作

#复杂数据类型列表 集合 字典等复杂数据结构如果函数外部定义了函数里面是可以不用global声明也操作的是全局变量,没有局部变量一说了
names = ['111', '222', '333']
def Change_Names():
  names[0] = "444"
  print("in function names :", names)
Change_Names() #in function names : ['444', '222', '333']
print("global names :", names) #in function names : ['444', '222', '333'] 对于复杂的数据类型,函数内直接操作全局变量,不会再生成局部变量

递归

#函数内部可以调用其它函数,如果函数在内部调用自己就被称为递归函数
def Half_fun(n):
  print(n)
  if n < 2:
    return n
  Half_fun(n/2)
Half_fun(100)
#递归特性:1、必须有一个明确的结束条件 2、每次递归调用问题复杂度需要相比上次简化 3、递归会占用大量内存

以上实例很简单,大家可以本次测试下,感谢你的阅读和对三水点靠木的支持。

Python 相关文章推荐
在Python的Bottle框架中使用微信API的示例
Apr 23 Python
python交互式图形编程实例(三)
Nov 17 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
Jul 26 Python
Django添加KindEditor富文本编辑器的使用
Oct 24 Python
Python中使用双下划线防止类属性被覆盖问题
Jun 27 Python
Python+OpenCV+pyQt5录制双目摄像头视频的实例
Jun 28 Python
pygame实现俄罗斯方块游戏(基础篇3)
Oct 29 Python
PyCharm第一次安装及使用教程
Jan 08 Python
不到20行实现Python代码即可制作精美证件照
Apr 24 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
Apr 27 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
分享提高 Python 代码的可读性的技巧
Mar 03 Python
python matplotlib如何给图中的点加标签
Nov 14 #Python
Python中的引用和拷贝实例解析
Nov 14 #Python
使用python快速在局域网内搭建http传输文件服务的方法
Nov 14 #Python
通过python扫描二维码/条形码并打印数据
Nov 14 #Python
VSCode中自动为Python文件添加头部注释
Nov 14 #Python
python中的函数递归和迭代原理解析
Nov 14 #Python
使用python实现对元素的长截图功能
Nov 14 #Python
You might like
关于文本留言本的分页代码
2006/10/09 PHP
数据库查询记录php 多行多列显示
2009/08/15 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
php类中private属性继承问题分析
2012/11/01 PHP
深入解析Session是否必须依赖Cookie
2013/08/02 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
JS:window.onload的使用介绍
2013/11/13 Javascript
javascript实现动态模态绑定grid过程代码
2014/09/22 Javascript
jQuery简单实现网页选项卡特效
2014/11/24 Javascript
javascript实现日期按月份加减
2015/05/15 Javascript
JS区分浏览器页面是刷新还是关闭
2016/04/17 Javascript
JavaScript常用正则验证函数实例小结【年龄,数字,Email,手机,URL,日期等】
2017/01/23 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
微信小程序实现页面跳转传递参数(实体,对象)
2019/08/12 Javascript
VUE项目初建和常见问题总结
2019/09/12 Javascript
Python使用os模块和fileinput模块来操作文件目录
2016/01/19 Python
Python实现数据库并行读取和写入实例
2017/06/09 Python
简单易懂的python环境安装教程
2017/07/13 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
Python接口测试环境搭建过程详解
2020/06/29 Python
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
eBay德国站:eBay.de
2017/09/14 全球购物
沃尔玛加拿大:Walmart.ca
2020/03/02 全球购物
留学推荐信写作指南
2014/01/25 职场文书
实习报告评语
2014/04/26 职场文书
投标保密承诺书
2014/05/19 职场文书
工作态度不端正检讨书
2014/10/04 职场文书
2015年入党决心书
2015/02/05 职场文书
婚庆主持词大全
2015/06/30 职场文书
运动会班级前导词
2015/07/20 职场文书
2016年“6.26”禁毒宣传月系列活动总结
2016/04/05 职场文书
Django项目配置Memcached和Redis, 缓存选择哪个更有优势
2021/04/06 Python