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应用程序在windows下不出现cmd窗口的办法
May 29 Python
零基础写python爬虫之使用urllib2组件抓取网页内容
Nov 04 Python
在Python的Flask框架中使用日期和时间的教程
Apr 21 Python
python中利用await关键字如何等待Future对象完成详解
Sep 07 Python
python实现两个文件合并功能
Apr 01 Python
python实现画一颗树和一片森林
Jun 25 Python
python matlibplot绘制3D图形
Jul 02 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
使用tensorboard可视化loss和acc的实例
Jan 21 Python
解决django框架model中外键不落实到数据库问题
May 20 Python
python的pip有什么用
Jun 17 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及Zend Engine的线程安全模型分析
2011/11/10 PHP
有关PHP性能优化的介绍
2013/06/20 PHP
Laravel框架使用Seeder实现自动填充数据功能
2018/06/13 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
Windows系统下Node.js的简单入门教程
2015/06/23 Javascript
jQuery轻松实现表格的隔行变色和点击行变色的实例代码
2016/05/09 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
JavaScript6 let 新语法优势介绍
2016/07/15 Javascript
JavaScript里 ==与===区别详解
2016/08/16 Javascript
Bootstrap实现各种进度条样式详解
2017/04/13 Javascript
jQuery插件FusionCharts绘制的2D条状图效果【附demo源码】
2017/05/13 jQuery
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
js微信应用场景之微信音乐相册案例分享
2017/08/11 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
VUE实现可随意拖动的弹窗组件
2018/09/25 Javascript
微信小程序制作扭蛋机代码实例
2019/09/24 Javascript
详解vue高级特性
2020/06/09 Javascript
使用Protocol Buffers的C语言拓展提速Python程序的示例
2015/04/16 Python
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python中的编码知识整理汇总
2016/01/26 Python
scrapy爬虫实例分享
2017/12/28 Python
安装python3的时候就是输入python3死活没有反应的解决方法
2018/01/24 Python
Python中的单继承与多继承实例分析
2018/05/10 Python
Python3中exp()函数用法分析
2019/02/19 Python
Python生成个性签名图片获取GUI过程解析
2019/12/16 Python
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
世界上最大的在线汽车租赁预订平台:Rentalcars.com(支持中文)
2018/10/12 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
面试后的英文感谢信
2014/02/01 职场文书
专业技术职务聘任书
2014/03/29 职场文书
投标人法定代表人授权委托书格式
2014/09/28 职场文书
党员活动总结
2015/02/04 职场文书
法定代表人资格证明书
2015/06/18 职场文书
第四次工业革命,打工人与机器人的竞争
2022/04/21 数码科技
SQLServer常见数学函数梳理总结
2022/08/05 MySQL