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和Perl绘制中国北京跑步地图的方法
Mar 03 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
python模拟表单提交登录图书馆
Apr 27 Python
python将一组数分成每3个一组的实例
Nov 14 Python
Python实现决策树并且使用Graphviz可视化的例子
Aug 09 Python
在Python中字符串、列表、元组、字典之间的相互转换
Nov 15 Python
Python 批量读取文件中指定字符的实现
Mar 06 Python
基于python实现查询ip地址来源
Jun 02 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Python 实现PS滤镜中的径向模糊特效
Dec 03 Python
python入门之算法学习
Apr 22 Python
Django分页器的用法你都了解吗
May 26 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
PHP 杂谈《重构-改善既有代码的设计》之五 简化函数调用
2012/05/07 PHP
推荐一款MAC OS X 下php集成开发环境mamp
2014/11/08 PHP
php内嵌函数用法实例
2015/03/20 PHP
windows平台中配置nginx+php环境
2015/12/06 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
深入理解jQuery中live与bind方法的区别
2013/12/18 Javascript
jquery live()重复绑定的解决方法介绍
2014/01/03 Javascript
JavaScript实现数字数组按照倒序排列的方法
2015/04/06 Javascript
信息页文内画中画广告js实现代码(文中加载广告方式)
2016/01/03 Javascript
JavaScript 闭包详细介绍
2016/09/28 Javascript
JS+CSS3制作炫酷的弹窗效果
2016/11/08 Javascript
Vue.js数据绑定之data属性
2017/07/07 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
JS实现“全选”和&quot;全不选&quot;功能代码实例
2020/02/06 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
2020/05/15 Javascript
[01:32]2016国际邀请赛中国区预选赛CDEC战队教练采访
2016/06/26 DOTA
Bottle框架中的装饰器类和描述符应用详解
2017/10/28 Python
TensorFlow实现Batch Normalization
2018/03/08 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
python plotly画柱状图代码实例
2019/12/13 Python
Python实现图片识别加翻译功能
2019/12/26 Python
用python计算文件的MD5值
2020/12/23 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
篮球兴趣小组活动总结
2014/07/07 职场文书
新疆民族团结演讲稿
2014/08/27 职场文书
党的群众路线教育实践活动整改落实情况报告
2014/10/28 职场文书
典型事迹材料范文
2014/12/29 职场文书
小学运动会开幕词
2015/01/28 职场文书
教师岗位职责范本
2015/04/02 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
分析ZooKeeper分布式锁的实现
2021/06/30 Java/Android