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获取GY-85九轴模块信息示例
Dec 05 Python
python实现随机密码字典生成器示例
Apr 09 Python
Python获取当前路径实现代码
May 08 Python
python 第三方库的安装及pip的使用详解
May 11 Python
Python 爬虫之超链接 url中含有中文出错及解决办法
Aug 03 Python
Python编写一个优美的下载器
Apr 15 Python
python实现五子棋小游戏
Mar 25 Python
基于python历史天气采集的分析
Feb 14 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
python分布式编程实现过程解析
Nov 08 Python
python实现图片转字符画
Feb 19 Python
python生成随机数、随机字符、随机字符串
Apr 06 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
Linux下 php5 MySQL5 Apache2 phpMyAdmin ZendOptimizer安装与配置[图文]
2008/11/18 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
php检测图片主要颜色的方法
2015/07/01 PHP
php实现websocket实时消息推送
2018/03/30 PHP
基于Jquery的淡入淡出的特效基础练习
2010/12/13 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
JavaScript 弹出子窗体并返回结果到父窗体的实现代码
2016/05/28 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
vue源码入口文件分析(推荐)
2018/01/30 Javascript
[06:16]第十四期-国士无双绝地翻盘之撼地神牛
2014/06/24 DOTA
[46:21]Liquid vs LGD 2018国际邀请赛淘汰赛BO3 第一场 8.23
2018/08/24 DOTA
Python中os.path用法分析
2015/01/15 Python
python 查找文件名包含指定字符串的方法
2018/06/05 Python
对python字典过滤条件的实例详解
2019/01/22 Python
Python字典遍历操作实例小结
2019/03/05 Python
对Django中static(静态)文件详解以及{% static %}标签的使用方法
2019/07/28 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
python可视化实现KNN算法
2019/10/16 Python
python字符串的拼接方法总结
2019/11/18 Python
Python实现读取并写入Excel文件过程解析
2020/05/27 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
英国综合网上购物商城:The Hut
2018/07/03 全球购物
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
化妆品活动策划方案
2014/05/23 职场文书
主要负责人任命书
2014/06/06 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2015年党员自评材料
2014/12/17 职场文书
一年级语文下册复习计划
2015/01/17 职场文书
继续教育个人总结
2015/03/03 职场文书
教师岗位职责范本
2015/04/02 职场文书
Python实现天气查询软件
2021/06/07 Python