python函数局部变量、全局变量、递归知识点总结

作者:laozhang 时间:2023-08-03 14:49:41 

函数局部变量 全局变量 及其作用域


#简单类型(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、递归会占用大量内存

以上实例很简单,大家可以本次测试下。

来源:https://www.cnblogs.com/flags-blog/p/11863191.html

标签:python,基础函数
0
投稿

猜你喜欢

  • Python类绑定方法及非绑定方法实例解析

    2022-08-10 11:36:38
  • Python PyMySQL操作MySQL数据库的方法详解

    2024-01-21 17:44:24
  • 基于webpack.config.js 参数详解

    2024-05-02 16:28:30
  • Python使用smtp和pop简单收发邮件完整实例

    2022-01-07 05:48:40
  • python爬虫开发之使用Python爬虫库requests多线程抓取猫眼电影TOP100实例

    2021-02-25 11:13:42
  • 利用二进制文件安装etcd的教程详解

    2023-07-22 00:23:47
  • 详解python中的json的基本使用方法

    2022-03-15 22:29:13
  • 在数据库中自动生成编号的实现方法分享

    2011-11-03 16:55:24
  • vue.js如何在网页中实现一个金属抛光质感的按钮

    2024-04-28 09:21:26
  • MySQL中TIMESTAMP类型返回日期时间数据中带有T的解决

    2024-01-17 01:32:25
  • SQL 特殊语句(学习笔记)

    2012-06-06 19:51:33
  • selenium跳过webdriver检测并模拟登录淘宝

    2023-06-14 18:22:52
  • 详解git merge 与 git rebase的区别

    2023-04-07 20:02:49
  • Asp用分页符实现长文章分页

    2007-10-19 18:35:00
  • MySQL 存储过程中执行动态SQL语句的方法

    2024-01-12 21:22:22
  • 从云数据迁移服务看MySQL大表抽取模式的原理解析

    2024-01-24 01:45:41
  • SQL server 管理事务和数据库介绍

    2024-01-21 18:54:32
  • Python+OpenCV解决彩色图亮度不均衡问题

    2023-02-08 23:14:53
  • pytorch实现查看当前学习率

    2022-05-29 06:02:04
  • 泛泛而谈界面中的斑马纹设计

    2010-07-15 12:59:00
  • asp之家 网络编程 m.aspxhome.com