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的Django框架中settings文件的部署建议
May 30 Python
Python 类与元类的深度挖掘 I【经验】
May 06 Python
浅谈Python中的可变对象和不可变对象
Jul 07 Python
Mac中Python 3环境下安装scrapy的方法教程
Oct 26 Python
python+ffmpeg视频并发直播压力测试
Mar 06 Python
利用python numpy+matplotlib绘制股票k线图的方法
Jun 26 Python
python list转置和前后反转的例子
Aug 26 Python
python内置模块collections知识点总结
Dec 19 Python
python代码区分大小写吗
Jun 17 Python
python 第三方库paramiko的常用方式
Feb 20 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
Python 视频画质增强
Apr 28 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 n个不重复的随机数生成代码
2009/06/23 PHP
PHP采集类Snoopy抓取图片实例
2014/06/19 PHP
PHP创建单例后台进程的方法示例
2017/05/23 PHP
php中的依赖注入实例详解
2019/08/14 PHP
Yii使用DbTarget实现日志功能的示例代码
2020/07/21 PHP
javascript 中String.match()与RegExp.exec()的区别说明
2013/01/10 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
jquery中页面Ajax方法$.load的功能使用介绍
2014/10/20 Javascript
简单谈谈json跨域
2016/03/13 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
Angular指令封装jQuery日期时间插件datetimepicker实现双向绑定示例
2017/01/22 Javascript
基于JS实现翻书效果的页面切换样式
2017/02/16 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
JavaScript之Map和Set_动力节点Java学院整理
2017/06/29 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
[54:57]DOTA2-DPC中国联赛定级赛 Aster vs DLG BO3第二场 1月8日
2021/03/11 DOTA
Python判断文件和字符串编码类型的实例
2017/12/21 Python
浅谈Python中的模块
2020/06/10 Python
Python 读取位于包中的数据文件
2020/08/07 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
HTML5的结构和语义(4):语义性的内联元素
2008/10/17 HTML / CSS
Bailey帽子官方商店:Bailey Hats
2018/09/25 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
行政副总岗位职责
2014/02/23 职场文书
团代会宣传工作方案
2014/05/08 职场文书
宿舍标语大全
2014/06/19 职场文书
学校门卫岗位职责范本
2014/06/30 职场文书
公司授权委托书范文
2014/08/02 职场文书
2014年会计主管工作总结
2014/12/20 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
2016年教师节感恩寄语
2015/12/04 职场文书
2016年小学感恩节活动总结
2016/04/01 职场文书
整理Python中常用的conda命令操作
2021/06/15 Python