Python—函数

本文围绕Python函数展开,介绍了函数的基本定义,包括不同参数和返回值情况,以及函数文档和模块调用方法。阐述了函数的值传递,涉及参数类型和集合类型传递问题。还讲解了函数的作用域,如全局、局部变量及闭包变量,最后介绍了递归函数的原理和调用栈机制。

函数的基本定义

函数定义的基本语法:

def 函数名([参数]):
	函数体
[return 返回值]
  1. 不带参数的函数
def 函数名():
	函数体
  1. 带参数的函数
def 函数名(参数):
	函数体
  1. 带返回值的函数
def 函数名():
	函数体
	return 返回值
  1. 函数文档:用'''...'''包围的对函数的解释
  2. 把函数放入模块并调用:
    a). 用import语句导入整个函数模块:import find_factor
    b). 用import导入指定函数模块:from find_factor import find_factor_1
    c). 用import导入所有函数:from find_factor import *
    d). 模块名、函数名别名方式:import find_factor as ff1
  3. 模块搜索路径:用sys.path方法指定需要访问的函数模块路径

函数的值传递

  1. 函数参数类型包括:固定参数、关键字参数、默认值、不定长参数
  2. 函数参数可以传递的类型除基本类型外,还可以传递元组、列表、字典值
  3. 在传递元组、列表、字典值使,在函数内部对参数进行修改会渗透到函数外(类似于这些集合类型是引用类型,引用同一块内存地址)——解决方法是对参数进行复制(EditFruit('西瓜',attr.copy()))。

函数的作用域

  1. 全局变量和局部变量与C++等语言类似
  2. global关键字:函数内部智能读取全局变量的值,若需要修改全局变量,则需要使用global关键字进行事先声明,否则会报错(类似变量提升)
  3. nonlocal关键字与闭包:介于全局变量和局部变量之间的一种特殊变量,要修改闭包变量,需要用nonlocal关键字修饰(类似变量提升)
  4. 匿名函数:lambda x,y:(x*y)

递归函数

递归一次,在内存中开辟一个新的地址空间,记录递归过程状态,一直递归分解到最小范围,最后得出要么找到对应的值,要么返回找不到的结果。

实际上是调用栈:每递归一次,就进栈一次,并在栈列表里记录调用内容;每返回一次,就出栈一次,并把值返回给上一个栈列表。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值