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牛刀小试密码爆破
Feb 03 Python
Python监控主机是否存活并以邮件报警
Sep 22 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
详解Python多线程Selenium跨浏览器测试
Apr 01 Python
python3基于OpenCV实现证件照背景替换
Jul 18 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Tensorflow中的dropout的使用方法
Mar 13 Python
Python实现爬取并分析电商评论
Jun 19 Python
tensorflow图像裁剪进行数据增强操作
Jun 30 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
python爬虫用request库处理cookie的实例讲解
Feb 20 Python
利用Python实现Picgo图床工具
Nov 23 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边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
php不用正则采集速度探究总结
2008/03/24 PHP
用PHP程序实现支持页面后退的两种方法
2008/06/30 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP基于递归实现的约瑟夫环算法示例
2017/08/27 PHP
浅析js中取绝对值的2种方法
2013/07/09 Javascript
jQuery实现鼠标滑过遮罩并高亮显示效果
2013/07/16 Javascript
JS 实现导航栏悬停效果
2013/09/23 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
Vue.js报错Failed to resolve filter问题的解决方法
2016/05/25 Javascript
Vue.js每天必学之表单控件绑定
2016/09/05 Javascript
laydate.js日期时间选择插件
2017/01/04 Javascript
JavaScript中从setTimeout与setInterval到AJAX异步
2017/02/13 Javascript
微信小程序实现简单input正则表达式验证功能示例
2017/11/30 Javascript
详解webpack 入门与解析
2018/04/09 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
详解Vue源码学习之callHook钩子函数
2018/07/25 Javascript
实例详解ztree在vue项目中使用并且带有搜索功能
2018/08/24 Javascript
基于Vue全局组件与局部组件的区别说明
2020/08/11 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
[03:11]DOTA2上海特锦赛小组赛第一日recap精彩回顾
2016/02/28 DOTA
Python实现简易Web爬虫详解
2018/01/03 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
python 格式化输出百分号的方法
2019/01/20 Python
python绘制地震散点图
2019/06/18 Python
PyQt5组件读取参数的实例
2019/06/25 Python
详解用python计算阶乘的几种方法
2019/08/14 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
Web页面中八种创建多列等高(等高列布局)的实现技术
2012/12/24 HTML / CSS
2014年五一活动策划方案
2014/03/15 职场文书
小学学雷锋活动总结
2014/04/25 职场文书
2014年机关作风建设工作总结
2014/10/23 职场文书
卡特教练观后感
2015/06/08 职场文书
公司联欢会主持词
2015/07/04 职场文书
高一作文之乐趣
2019/11/21 职场文书
如何自己动手写SQL执行引擎
2021/06/02 MySQL