今天我要写的知识点是函数
我不想说函数的那些什么概念,只写几句代码来描述再简单不过的函数:
def fun(a,b,c):
pass
这就是一个最最简单是函数的样子,fun是函数名,abc分别是它的三个参数,也是函数内部的三个变量,pass语句是填充语句,用来替代函数的执行语句。
先说函数的参数
函数的参数分为普通参数和缺省参数
普通 参数就行上面的那个fun函数一样,
缺省参数就是给参数定一个默认值,如:
def fun1(a=1,b=2,c=3):
pass
func1函数里面的abc参数都给他赋值了,但是需要注意,如果我们在使用函数时,给abc传递了新的参数进去,那么缺省参数就不会起作用,函数是使用我们传递进去的参数,如果我们在使用函数时没有传递参数进去,那么就可以使用缺省参数。可以这么理解,后面传递的参数的优先级大于缺省参数。
函数传参有几种形式,比较常用的有三种:
第一种:
位置传参,顾名思义,就是按照位置的先后顺序传递,如:
def fun(a,b,c):
pass
func(1,2.3)
这里把1,2,3以此传递给a,b,c,顺序很重要,不同的顺序,传递进去的结构就不一样
第二种:
关键字传参,就是我们主动要求我要把哪个值传递给制定的参数变量,如:
def fun(a,b,c):
pass
fun(b=1,c=2,a=3)
这种方式就不需要顾及顺序了,反正都是指定的,顺序什么的根本没有影响
第三种:
这种就厉害了,可以说是万精油,叫单星号元组传参和双星号字典传参,如:
def fun(*args,**kwargs):
pass
func(传递任意个数和形式的参数)
第三种要注意,总有一天会有用的
函数的参数还可以传入一个函数,相当于把一个函数以参数的形式传递给另一个函数,这样在另一个函数中就可以使用传入的函数了。
ps:函数内除了pass这个比较特殊的语句,还有个有用的单词,叫return,return这个单词放到函数内,作用有很多,第一,结束函数,让程序返回到调用函数的地方,第二,返回需要的值,调用函数就得到返回值。
匿名函数:这种函数顾名思义,就是没有函数名,它的语法为:
lambda [形参]:表达式
这种匿名函数只有这么一句,形参可以有多个,表达式只能有一个
函数中变量的作用域
前面多多少少提到一些,简单总结就是:在函数内部的变量只能在函数内部使用,当然也包含参数,函数外部无法使用函数内部的变量,函数外部的变量可以被函数内部使用。不严谨的说:函数外部可以说是全局变量,函数内部可以说是局部变量。局部变量只能在局部使用,全部变量可以在任何地方使用。
python中有两个声明变量的方法:globa 变量1,变量2… ,nonlocal 变量1,变量2…
globa声明的变量为全局变量,nonlocal声明的变量为局部变量
高阶函数
1.把一个函数以参数的形式传递给另一个函数
2.一个函数的返回值还是一个函数
只要哪个函数满足以上两点中的任意一点,这个函数就是高阶函数,高阶函数的使用还是很多的,后面在很多地方用到。
写在最后:函数的名字也是有规则的,命名规则大致和变量的命名规则差不多,不能以数字开头,可以由字母,下划线,数字组成。