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模块之re正则表达式详解
Feb 03 Python
Python解惑之True和False详解
Apr 24 Python
python 以16进制打印输出的方法
Jul 09 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
Django实现auth模块下的登录注册与注销功能
Oct 10 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python神经网络编程实现手写数字识别
May 27 Python
python 图像判断,清晰度(明暗),彩色与黑白实例
Jun 04 Python
利用python 下载bilibili视频
Nov 13 Python
python实现xml转json文件的示例代码
Dec 30 Python
如何将numpy二维数组中的np.nan值替换为指定的值
May 14 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笔记之:初探PHPcms模块开发介绍
2013/04/26 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP三种方式实现链式操作详解
2017/01/21 PHP
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
javascript获取作用在元素上面的样式属性代码
2012/09/20 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
js图片延迟技术一般的思路与示例
2014/03/20 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
JS实现带提示的星级评分效果完整实例
2015/10/30 Javascript
AngularJS Ajax详解及示例代码
2016/08/17 Javascript
微信分享调用jssdk实例
2017/06/08 Javascript
bootstrap table支持高度百分比的实例代码
2018/02/28 Javascript
[53:10]2018DOTA2亚洲邀请赛 4.6 淘汰赛 VP vs VG 第一场
2018/04/11 DOTA
python中元类用法实例
2014/10/10 Python
Python实现的选择排序算法示例
2017/11/29 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
对Python中range()函数和list的比较
2018/04/19 Python
解决tensorflow1.x版本加载saver.restore目录报错的问题
2018/07/26 Python
Python3.5面向对象与继承图文实例详解
2019/04/24 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
pandas创建DataFrame的7种方法小结
2020/06/14 Python
基于Python和C++实现删除链表的节点
2020/07/06 Python
基于python实现复制文件并重命名
2020/09/16 Python
python3字符串输出常见面试题总结
2020/12/01 Python
不可轻视HTML5!App三年内将被html5顶替彻底消失
2015/11/18 HTML / CSS
葬礼司仪主持词
2014/03/31 职场文书
平安校园建设方案
2014/05/02 职场文书
建筑投标担保书
2014/05/20 职场文书
2014年党员整改措施
2014/10/24 职场文书
给上级领导的感谢信
2015/01/22 职场文书
土木工程毕业答辩开场白
2015/05/29 职场文书
2016大学军训心得体会
2016/01/11 职场文书
巧用 -webkit-box-reflect 倒影实现各类动效(小结)
2021/04/22 HTML / CSS
使用python求解迷宫问题的三种实现方法
2022/03/17 Python