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连接mssql数据库编码问题解决方法
Jan 01 Python
Python使用Matplotlib实现Logos设计代码
Dec 25 Python
python实现外卖信息管理系统
Jan 11 Python
Python实现求数列和的方法示例
Jan 12 Python
Python学生信息管理系统修改版
Mar 13 Python
python自动重试第三方包retrying模块的方法
Apr 24 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
Python mutiprocessing多线程池pool操作示例
Jan 30 Python
Python简单处理坐标排序问题示例
Jul 11 Python
python tkinter窗口最大化的实现
Jul 15 Python
django rest framework 过滤时间操作
Jul 12 Python
浅析Python中字符串的intern机制
Oct 03 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
浅谈Eclipse PDT调试PHP程序
2014/06/09 PHP
PHP删除字符串中非字母数字字符方法总结
2019/01/20 PHP
PhpStorm连接服务器并实现自动上传功能
2020/12/09 PHP
js中判断控件是否存在
2010/08/25 Javascript
jquery isType() 类型判断代码
2011/02/14 Javascript
如何用ajax来创建一个XMLHttpRequest对象
2012/12/10 Javascript
js中实现多态采用和继承类似的方法
2014/08/22 Javascript
jQuery移动web开发中的页面初始化与加载事件
2015/12/03 Javascript
JS上传组件FileUpload自定义模板的使用方法
2016/05/10 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
AngularJs表单验证实例代码解析
2016/11/29 Javascript
JS基于面向对象实现的拖拽功能示例
2016/12/20 Javascript
JavaScript编写九九乘法表(两种任选)
2017/02/04 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
vue 注册组件的使用详解
2018/05/05 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
使用Python的Zato发送AMQP消息的教程
2015/04/16 Python
深入探究Python中变量的拷贝和作用域问题
2015/05/05 Python
浅谈python和C语言混编的几种方式(推荐)
2017/09/27 Python
Python3实战之爬虫抓取网易云音乐的热门评论
2017/10/09 Python
Python模块文件结构代码详解
2018/02/03 Python
详解Django 中是否使用时区的区别
2018/06/14 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
pandas factorize实现将字符串特征转化为数字特征
2019/12/19 Python
Python 解析xml文件的示例
2020/09/29 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
德国电子商城:ComputerUniverse
2017/04/21 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
仓库组长岗位职责
2014/01/29 职场文书
党员政治学习材料
2014/05/14 职场文书
2014大四本科生自我鉴定总结
2014/10/04 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2016自主招生教师推荐信范文
2015/03/23 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
写给同事的离职感言
2015/08/04 职场文书