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中readline判断文件读取结束的方法
Nov 08 Python
Python使用pyshp库读取shapefile信息的方法
Dec 29 Python
PyQt5图形界面播放音乐的实例
Jun 17 Python
Pytorch实现神经网络的分类方式
Jan 08 Python
python实现udp聊天窗口
Mar 31 Python
Pycharm修改python路径过程图解
May 22 Python
Pytorch 使用 nii数据做输入数据的操作
May 26 Python
Django Admin 上传文件到七牛云的示例代码
Jun 20 Python
Python如何使用27行代码绘制星星图
Jul 20 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
python 实现学生信息管理系统的示例
Nov 28 Python
python神经网络编程之手写数字识别
May 08 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 miniBB中文乱码问题解决方法
2008/11/25 PHP
PHP中限制IP段访问、禁止IP提交表单的代码
2011/04/23 PHP
PHP 第二节 数据类型之字符串类型
2012/04/28 PHP
php数组合并的二种方法
2014/03/21 PHP
从零开始学YII2框架(五)快速生成代码工具 Gii 的使用
2014/08/20 PHP
WAMP环境中扩展oracle函数库(oci)
2015/06/26 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
捕获键盘事件(且兼容各浏览器)
2013/07/03 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jquery插件jquery.LightBox.js实现点击放大图片并左右点击切换效果(附demo源码下载)
2016/02/25 Javascript
vue2.0学习之axios的封装与vuex介绍
2018/05/28 Javascript
JavaScript使用闭包模仿块级作用域操作示例
2019/01/21 Javascript
javascript操作元素的常见方法小结
2019/11/13 Javascript
2020淘宝618理想生活列车自动领喵币js脚本的代码
2020/06/02 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
2021/02/04 jQuery
python简单实现操作Mysql数据库
2018/01/29 Python
Python实现k-means算法
2018/02/23 Python
Centos7 Python3下安装scrapy的详细步骤
2018/03/15 Python
python二维码操作:对QRCode和MyQR入门详解
2019/06/24 Python
Python版中国省市经纬度
2020/02/11 Python
Python3 ffmpeg视频转换工具使用方法解析
2020/08/10 Python
如何利用python之wxpy模块玩转微信
2020/08/17 Python
Python3+RIDE+RobotFramework自动化测试框架搭建过程详解
2020/09/23 Python
Python实现粒子群算法的示例
2021/02/14 Python
python 实现IP子网计算
2021/02/18 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
尼克松手表官网:Nixon手表
2019/03/17 全球购物
小学校园活动策划
2014/01/30 职场文书
12.4法制宣传日活动总结
2014/08/26 职场文书
学生违反校规检讨书
2014/10/28 职场文书
2015年五一劳动节慰问信
2015/03/23 职场文书
2015暑假假期总结
2015/07/13 职场文书
诚信高考倡议书
2019/06/24 职场文书
Python 内置函数速查表一览
2021/06/02 Python