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 相关文章推荐
go语言计算两个时间的时间差方法
Mar 13 Python
Python中使用OpenCV库来进行简单的气象学遥感影像计算
Feb 19 Python
Flask数据库迁移简单介绍
Oct 24 Python
Python实现进程同步和通信的方法
Jan 02 Python
Python 字符串操作(string替换、删除、截取、复制、连接、比较、查找、包含、大小写转换、分割等)
Mar 19 Python
Python 爬取携程所有机票的实例代码
Jun 11 Python
基于Python的微信机器人开发 微信登录和获取好友列表实现解析
Aug 21 Python
django中间键重定向实例方法
Nov 10 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
python numpy实现多次循环读取文件 等间隔过滤数据示例
Mar 14 Python
Python selenium键盘鼠标事件实现过程详解
Jul 28 Python
python UIAutomator2使用超详细教程
Feb 19 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
Breeze 文章管理系统 v1.0.0正式发布
2006/12/14 PHP
php debug 安装技巧
2011/04/30 PHP
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
原创javascript小游戏实现代码
2010/08/19 Javascript
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
原生js制作简单的数字键盘
2015/04/24 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
BootStrap table使用方法分析
2016/11/08 Javascript
懒加载实现的分页&amp;&amp;网站footer自适应
2016/12/21 Javascript
AngularJS表格样式简单设置方法示例
2017/03/03 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
NodeJS、NPM安装配置步骤(windows版本) 以及环境变量详解
2017/05/13 NodeJs
vue改变对象或数组时的刷新机制的方法总结
2019/04/24 Javascript
Nodejs 识别图片类型的方法
2019/08/15 NodeJs
vue实现表格过滤功能
2019/09/27 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
[02:08]DOTA2英雄基础教程 马格纳斯
2014/01/17 DOTA
[50:02]完美世界DOTA2联赛循环赛 Magma vs IO BO2第一场 11.01
2020/11/02 DOTA
浅谈Python生成器generator之next和send的运行流程(详解)
2017/05/08 Python
浅谈python爬虫使用Selenium模拟浏览器行为
2018/02/23 Python
Python 实现网页自动截图的示例讲解
2018/05/17 Python
基于python的图片修复程序(实现水印去除)
2018/06/04 Python
Django ForeignKey与数据库的FOREIGN KEY约束详解
2020/05/20 Python
详解python日志输出使用配置文件格式
2021/02/10 Python
后勤采购员岗位职责
2013/12/19 职场文书
护士的自我鉴定
2014/02/07 职场文书
幼儿园大班家长评语
2014/04/17 职场文书
公司感恩节活动策划书
2014/10/11 职场文书
高中生期中考试失利检讨书
2014/10/23 职场文书
领导干部群众路线对照检查材料
2014/11/05 职场文书
经理助理岗位职责
2015/02/02 职场文书
不同意离婚上诉状
2015/05/23 职场文书
2015年高三年级组工作总结
2015/07/21 职场文书
2016年清明节红领巾广播稿
2015/12/17 职场文书
初一英语教学反思
2016/02/15 职场文书
Go语言基础函数基本用法及示例详解
2021/11/17 Golang