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实现拉钩网上的FizzBuzzWhizz问题示例
May 05 Python
Python中的异常处理相关语句基础学习笔记
Jul 11 Python
python with提前退出遇到的坑与解决方案
Jan 05 Python
django ajax json的实例代码
May 29 Python
Pycharm设置utf-8自动显示方法
Jan 17 Python
python三方库之requests的快速上手
Mar 04 Python
python 解决flask uwsgi 获取不到全局变量的问题
Dec 22 Python
python字符串常用方法及文件简单读写的操作方法
Mar 04 Python
详解如何在pyqt中通过OpenCV实现对窗口的透视变换
Sep 20 Python
python自动打开浏览器下载zip并提取内容写入excel
Jan 04 Python
Pandas之缺失数据的实现
Jan 06 Python
Python实现Excel自动分组合并单元格
Feb 22 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
Ajax PHP 边学边练 之三 数据库
2009/11/26 PHP
PHP 柱状图实现代码
2009/12/04 PHP
PHP登陆后跳转到登陆前页面实现思路及代码
2014/01/17 PHP
php将csv文件导入到mysql数据库的方法
2014/12/24 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
详细讲解JS节点知识
2010/01/31 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
2011/10/21 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jquery动态改变form属性提交表单
2014/06/03 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
AngularJS基础 ng-keypress 指令简单示例
2016/08/02 Javascript
jQuery基于ajax操作json数据简单示例
2017/01/05 Javascript
JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】
2017/08/18 Javascript
通过实例学习React中事件节流防抖
2019/06/17 Javascript
基于ssm框架实现layui分页效果
2019/07/27 Javascript
CentOS 8.2服务器上安装最新版Node.js的方法
2020/12/16 Javascript
python学习数据结构实例代码
2015/05/11 Python
浅谈python numpy中nonzero()的用法
2018/04/02 Python
pandas DataFrame数据转为list的方法
2018/04/11 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
Python父目录、子目录的相互调用方法
2019/02/16 Python
使用Python计算玩彩票赢钱概率
2019/06/26 Python
Python使用贪婪算法解决问题
2019/10/22 Python
python生成器用法实例详解
2019/11/22 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
matplotlib 多个图像共用一个colorbar的实现示例
2020/09/10 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
HTML5 Canvas中使用用路径描画圆弧
2015/01/01 HTML / CSS
Ruby如何实现动态方法调用
2012/11/18 面试题
优秀应届生推荐信
2013/11/09 职场文书
物业招聘计划书
2014/01/10 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
2019终止劳动合同协议书最新范本!
2019/07/09 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
Canvas如何做个雪花屏版404的实现
2021/09/25 HTML / CSS
鲲鹏 CentOS 7 安装Python3.7
2022/05/11 Servers