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 相关文章推荐
urllib和BeautifulSoup爬取维基百科的词条简单实例
Jan 17 Python
python scp 批量同步文件的实现方法
Jan 03 Python
解决Python中pandas读取*.csv文件出现编码问题
Jul 12 Python
简单了解django缓存方式及配置
Jul 19 Python
python实现倒计时小工具
Jul 29 Python
解决python 文本过滤和清理问题
Aug 28 Python
tensorflow中tf.slice和tf.gather切片函数的使用
Jan 19 Python
keras模型可视化,层可视化及kernel可视化实例
Jan 24 Python
python GUI库图形界面开发之PyQt5拖放控件实例详解
Feb 25 Python
python爬虫要用到的库总结
Jul 28 Python
python如何实现DES加密
Sep 21 Python
基于Django集成CAS实现流程详解
Nov 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 翻页 实例代码
2009/08/07 PHP
如何在smarty中增加类似foreach的功能自动加载数据
2013/06/26 PHP
php文件操作小结(删除指定文件/获取文件夹下的文件名/读取文件夹下图片名)
2016/05/09 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
实例讲解通过​PHP创建数据库
2019/01/20 PHP
document.getElementById的简写方式(获取id对象的简略写法)
2010/09/10 Javascript
javascript判断iphone/android手机横竖屏模式的函数
2011/12/20 Javascript
js关闭子窗体刷新父窗体实现方法
2012/12/04 Javascript
jQuery页面图片伴随滚动条逐渐显示的小例子
2013/03/21 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
深入解析Javascript闭包的功能及实现方法
2016/07/10 Javascript
javascript中sort排序实例详解
2016/07/24 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
详解Vue3.0 前的 TypeScript 最佳入门实践
2019/06/18 Javascript
微信小程序 腾讯地图SDK 获取当前地址实现解析
2019/08/12 Javascript
Python中的CURL PycURL使用例子
2014/06/01 Python
使用python进行拆分大文件的方法
2018/12/10 Python
解决Python pip 自动更新升级失败的问题
2020/02/21 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
Html5原创俄罗斯方块(基于canvas)
2019/01/07 HTML / CSS
耐克巴西官方网站:Nike巴西
2016/08/14 全球购物
泰坦健身器材:Titan Fitness
2018/02/13 全球购物
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
建筑工程技术应届生自荐信
2013/09/27 职场文书
教师实习期自我鉴定
2013/10/06 职场文书
中学老师的自我评价
2013/11/07 职场文书
音乐教学随笔感言
2014/02/19 职场文书
新任教师自我鉴定
2014/02/24 职场文书
4s店市场专员岗位职责
2014/04/09 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
村长反四风问题个人对照检查材料
2014/09/21 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
班主任2015新年寄语
2014/12/08 职场文书
经理岗位职责范本
2015/04/15 职场文书
预备党员考察意见范文
2015/06/01 职场文书