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对象体系深入分析
Oct 28 Python
分析Python的Django框架的运行方式及处理流程
Apr 08 Python
Python实现PS图像调整黑白效果示例
Jan 25 Python
Django的HttpRequest和HttpResponse对象详解
Jan 26 Python
解决phantomjs截图失败,phantom.exit位置的问题
May 17 Python
浅谈利用numpy对矩阵进行归一化处理的方法
Jul 11 Python
Python HTML解析模块HTMLParser用法分析【爬虫工具】
Apr 05 Python
python flask解析json数据不完整的解决方法
May 26 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
Python django框架 web端视频加密的实例详解
Nov 20 Python
只用50行Python代码爬取网络美女高清图片
Jun 02 Python
python实现简易自习室座位预约系统
Jun 30 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编程效率的方法
2013/11/07 PHP
PHP Try-catch 语句使用技巧
2016/02/28 PHP
PHP采用超长(超大)数字运算防止数字以科学计数法显示的方法
2016/04/01 PHP
Laravel框架自定义分页样式操作示例
2020/01/26 PHP
Javascript 日期处理之时区问题
2009/10/08 Javascript
js 幻灯片的实现
2011/12/06 Javascript
js 触发select onchange事件代码
2014/03/20 Javascript
JavaScript实现继承的4种方法总结
2014/10/16 Javascript
fckeditor粘贴Word时弹出窗口取消的方法
2014/10/30 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
基于jQuery实现美观且实用的倒计时实例代码
2015/12/30 Javascript
学习javascript面向对象 理解javascript原型和原型链
2016/01/04 Javascript
JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)
2016/12/14 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
Bootstrap 响应式实用工具实例详解
2017/03/29 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
微信小程序解除10个请求并发限制
2018/12/18 Javascript
javascript/jquery实现点击触发事件的方法分析
2019/11/11 jQuery
JS实现进度条动态加载特效
2020/03/25 Javascript
jQuery实现高度灵活的表单验证功能示例【无UI】
2020/04/30 jQuery
小程序实现密码输入框
2020/11/16 Javascript
Python骚操作之动态定义函数
2019/03/26 Python
Python OpenCV调用摄像头检测人脸并截图
2020/08/20 Python
python中函数返回多个结果的实例方法
2020/12/16 Python
HTML5 canvas基本绘图之绘制线条
2016/06/27 HTML / CSS
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
俄罗斯金苹果网上化妆品和香水商店:Goldapple
2019/12/01 全球购物
教师自我鉴定范文
2014/03/20 职场文书
法人授权委托书格式
2014/04/08 职场文书
商场客服专员岗位职责
2014/06/13 职场文书
书法兴趣小组活动总结
2014/07/07 职场文书
安全生产一岗双责责任书
2014/07/28 职场文书
2014乡镇班子个人对照检查材料思想汇报
2014/09/26 职场文书
2014基建处领导班子“四风”对照检查材料思想汇报
2014/10/04 职场文书
详解Alibaba Java诊断工具Arthas查看Dubbo动态代理类
2022/04/08 Java/Android