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 相关文章推荐
使用C语言扩展Python程序的简单入门指引
Apr 14 Python
速记Python布尔值
Nov 09 Python
Python中getpass模块无回显输入源码解析
Jan 11 Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 Python
浅谈python在提示符下使用open打开文件失败的原因及解决方法
Nov 30 Python
用scikit-learn和pandas学习线性回归的方法
Jun 21 Python
详细介绍Python进度条tqdm的使用
Jul 31 Python
python实现把二维列表变为一维列表的方法分析
Oct 08 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
Pandas加速代码之避免使用for循环
May 30 Python
python 利用PyAutoGUI快速构建自动化操作脚本
May 31 Python
jupyter notebook保存文件默认路径更改方法汇总(亲测可以)
Jun 09 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中sprintf与printf函数用法区别解析
2014/02/17 PHP
ThinkPHP3.1新特性之内容解析输出详解
2014/06/19 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
9段PHP实用功能的代码推荐
2014/10/14 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
JavaScript的parseInt 取整使用
2011/05/09 Javascript
ASP.NET jQuery 实例4(复制TextBox的文本到本地剪贴板上)
2012/01/13 Javascript
让ie6也支持websocket采用flash封装实现
2013/02/18 Javascript
Js动态添加复选框Checkbox的实例方法
2013/04/08 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
js实现三张图(文)片一起切换的banner焦点图
2015/08/25 Javascript
JavaScript事件类型中UI事件详解
2016/01/14 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
JS使用tofixed与round处理数据四舍五入的区别
2017/10/25 Javascript
Vue项目history模式下微信分享爬坑总结
2019/03/29 Javascript
layer扩展打开/关闭动画的方法
2019/09/23 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
简单介绍Python下自己编写web框架的一些要点
2015/04/29 Python
Python实现Linux的find命令实例分享
2017/06/04 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python常用函数与用法示例
2019/07/02 Python
pytorch 批次遍历数据集打印数据的例子
2019/12/30 Python
基于Python和PyYAML读取yaml配置文件数据
2020/01/13 Python
CSS3实现swap交换动画
2016/01/19 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
NBA欧洲商店(西班牙):NBA Europe Store ES
2019/04/16 全球购物
服装公司总经理岗位职责
2013/11/30 职场文书
幼教个人求职信范文
2013/12/02 职场文书
大学生优秀团员事迹材料
2014/01/30 职场文书
医院深入开展党的群众路线教育实践活动实施方案
2014/08/27 职场文书
2014年十八届四中全会思想汇报范文
2014/10/17 职场文书
2014年班干部工作总结
2014/11/25 职场文书
美术教师个人总结
2015/02/06 职场文书
Golang之sync.Pool使用详解
2021/05/06 Golang
redis使用不当导致应用卡死bug的过程解析
2021/07/01 Redis