python 之 初识函数
膜拜大神
有很多大神写了介绍函数是什么的好博文,我自问无法超越,但是引用还是可以的,真的很好,适合反复阅读
我在这里获得过很多的帮助,所以膜拜他们
感觉自己没有写下去的必要了…..
函数的返回值return
return的作用:
1.函数执行完毕后,可以给调用者返回数据
2.一旦遇到return,结束当前函数的运行
不写return是没有返回值的,或者,return后面没有内容,也是返回None。
return返回一个值
return返回一个值的情况,只需在return后面写上要返回的内容即可。
return返回多个值
可以返回任意多个、任意数据类型的值
返回的多个值会被组织成元组被返回,也可以用多个值来接收
函数的参数
默认参数
为什么要有默认参数:将变化最小的值设置成默认参数,在进行传参时,如果参数不变,就不用传入
节省了输入工作量,不用每一个都输一遍一样的值
默认参数陷进:默认参数一定要指向不可变类型
形参
形式参数,没有具体的值,只在调用的时候,才有确定的值
实参
实际参数,有实际的值
关键参数
必须放在位置参数后面
两种传参方式(按位置传参,按关键字传参)
位置参数必须传值
非固定参数
*args:使用方法,打包成列表,并加 *[]。注意:会截胡所有位置参数
**kwargs:接受未定义的关键字参数, **{}
总结:
1.定义:def 关键词开头,空格之后接函数名称和圆括号()。 2.参数:圆括号用来接收参数。若传入多个参数,参数之间用逗号分割。 参数可以定义多个,也可以不定义。 参数有很多种,如果涉及到多种参数的定义,应始终遵循位置参数、*args、默认参数、**
kwargs顺序定义。 如上述定义过程中某参数类型缺省,其他参数依旧遵循上述排序 3.注释:函数的第一行语句应该添加注释。 4.函数体:函数内容以冒号起始,并且缩进。 5.返回值:return [表达式] 结束函数。不带表达式的return相当于返回 None def 函数名(参数1,参数2,*args,默认参数,**kwargs): """注释:函数功能和参数说明""" 函数体 …… return 返回值
调用函数的规则
1.函数名() 函数名后面+圆括号就是函数的调用。 2.参数: 圆括号用来接收参数。 若传入多个参数: 应按先位置传值,再按关键字传值 具体的传入顺序应按照函数定义的参数情况而定 3.返回值 如果函数有返回值,还应该定义“变量”接收返回值 如果返回值有多个,也可以用多个变量来接收,变量数应和返回值数目一致 无返回值的情况: 函数名() 有返回值的情况: 变量= 函数名() 多个变量接收多返回值: 变量1,变量2,... = 函数名()
函数变量与Global
函数变量分为 局部变量 和 全局变量
定义在函数外部的一级变量,叫做全局变量
局部变量只能在局部生效(即在函数内部定义的变量,只能在函数内部生效)
在函数内部可以引用全局变量
在函数中就修改全局变量
在函数中使用Global 修改全局变量
name = 'black girl' def change_name(): global name name = '黑姑娘' print('在', name, '里面', id(name)) change_name() print(name, id(name))
在函数内部可以修改全局列表等可变集合,只能是可变集合
name = 'black girl' l = [1, 2, 3] def change_name(): global name name = '黑姑娘' l[1] = 5 del l[2] print('在', name, '里面', id(name)) change_name() print(name, id(name)) print(l)
嵌套函数
定义:函数内部,再次定义了一个函数,无法直接在全局被调用
只有在外层函数中被调用了,才会执行
age = 19 def func1(): global age def func2(): print(age) func2() age = 72 func1() print(age)
想一下,执行结果是什么?
函数作用域
定义:作用域,就是变量的作用范围,函数中的变量的作用域就是函数内部
定义完成后,作用域就生成,作用域链向上查找
无论在任何地方调用,都会回到定义它的作用域内
全局作用域:包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效
局部作用域:局部名称空间,只能在局部范围内生效
匿名函数
定义:匿名函数,是指,定义一个函数,不用函数名,以lambda 开头
只能定义简单的函数,最复杂的就是三元函数
它的主要作用是和其它函数配合使用,如:map(生成一个map对象,通过函数对参数内的每个值进行同样的操作)
list1 = [1, 2, 3] list2 = list(map(lambda x: x*6, list1)) print(list2)
高阶函数
定义:把一个函数以参数的形式,传递给另一个函数,就是高阶函数
满足以下任意一个条件,即是高阶函数
接受一个或多个函数作为输入
return另外一个函数
age = 19 def func(): print(age) def func1(func): global age func() age = 72 func1(func) print(age)
def fun(x, y): return x+y