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网络编程学习笔记(六):Web客户端访问
Jun 09 Python
在Python中操作列表之List.pop()方法的使用
May 21 Python
编写Python脚本抓取网络小说来制作自己的阅读器
Aug 20 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)
Mar 12 Python
TensorFlow 滑动平均的示例代码
Jun 19 Python
python的concat等多种用法详解
Nov 28 Python
对python中基于tcp协议的通信(数据传输)实例讲解
Jul 22 Python
Python3 解决读取中文文件txt编码的问题
Dec 20 Python
Python PyPDF2模块安装使用解析
Jan 19 Python
python通用数据库操作工具 pydbclib的使用简介
Dec 21 Python
pytorch损失反向传播后梯度为none的问题
May 12 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 download.php实现代码 跳转到下载文件(response.redirect)
2009/08/26 PHP
解析CI即CodeIgniter框架在Nginx下的重写规则
2013/06/03 PHP
PHP检测数据类型的几种方法(总结)
2017/03/04 PHP
基于PHP实现堆排序原理及实例详解
2020/06/19 PHP
PHP并发场景的三种解决方案代码实例
2021/02/27 PHP
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
js获取和设置属性的方法
2014/02/20 Javascript
巧用replace将文字表情替换为图片
2014/04/17 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JavaScript字符串常用的方法
2016/03/10 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
Bootstrap表单控件使用方法详解
2017/01/11 Javascript
基于Vuejs和Element的注册插件的编写方法
2017/07/03 Javascript
详解基于webpack2.x的vue2.x的多页面站点
2017/08/21 Javascript
vue父组件向子组件(props)传递数据的方法
2018/01/02 Javascript
详解webpack4升级指南以及从webpack3.x迁移
2018/06/12 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
2018/08/01 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
[03:49]DOTA2英雄基础教程 光之守卫
2014/01/14 DOTA
Python字符串格式化%s%d%f详解
2018/02/02 Python
Django自定义过滤器定义与用法示例
2018/03/22 Python
pytz格式化北京时间多出6分钟问题的解决方法
2019/06/21 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
idea2020手动安装python插件的实现方法
2020/07/17 Python
HTML5的一个显示电池状态的API简介
2015/06/18 HTML / CSS
Marlies Dekkers内衣法国官方网上商店:国际知名的荷兰内衣品牌
2019/03/18 全球购物
会计岗位职责范本
2014/03/07 职场文书
《分一分》教学反思
2014/04/13 职场文书
党的群众路线教育实践活动个人剖析材料
2014/10/07 职场文书
2015年教研室工作总结范文
2015/05/23 职场文书
2015暑期社会实践调查报告
2015/07/14 职场文书
《春酒》教学反思
2016/02/22 职场文书
2019奶茶店创业计划书范本!
2019/07/15 职场文书
mysql下的max_allowed_packet参数设置详解
2022/02/12 MySQL