1.函数
1.1 定义:
def 函数名(参数列表):
语句
return 表达式
解释:
def : 函数代码块以def关键字开始
函数名:遵循标识符规则
参数列表:任何传入函数的参数和变量,必须放在小括号之间,使用逗号分隔,函数从函数的调用者那里获取信息【调用者给函数传递的信息】
():是参数列表的开始以及结束
冒号:函数内容【封装的功能】以冒号开始,并且缩进
语句:函数封装的功能
return:一般用于结束函数,并且返回信息给函数的调用者
表达式:要返回给函数调用者的信息
注意:最后的return表达式可以不写,若不写的情况下默认return None
参数列表 = 参数1,参数2,…,参数n
1.2 函数的调用
语法:函数名([参数])
若函数需要此参数则传递,不需要则不传递注意:1.函数不调用的时候,不执行。2.定义函数写在上面,调用写在下面。
1.3 最简单的函数
最简单的函数,即无参数、无返回值的函数
#定义函数
def myPrint():
print("you are a good man")
#调用函数
myPrint()
1.4 参数的传递
参数传递的本质:实参给形参赋值的过程
传递的参数与函数参数列表中的参数个数保持一致
1.5 位置参数
位置参数又称必选参数
参数传递与其位置有关.位置不能随意更改。
[值传递]指传递不可变类型,一般指string、tuple和number类型
[引用传递]一般传递的是可变类型,一般指list,dict和set
注意:对于可变类型来讲在函数中更改传递进来的参数的时候, 会将其原值也进行更改。
说明:引用传递的本质上还是值传递,只不过传递的是地址,
1.6 关键字参数
概念:用于函数调用时,通过“键-值”的形式加以指定,可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求
def func(name, age):
print("I am %s, and I am %d year old"%(name, age))
#一般调用
func("lili", 18)
#使用关键字参数
func(age = 18, name = "lili")
关键字参数之间是不存在先后顺序的
当赋值的时候打乱顺序,只能使用关键字。
当位置参数与关键字参数同时存在的时候,将关键字参数写在位置参数的后面。
1.7 默认函数
在定义函数的时候,我们为参数提供了默认值,若调用函数的时候,
没有传此参数,则会使用默认值,若传了此参数,则使用传递的参数。
优点:简化了函数的调用
def func(name, age=18)
print("I am %s, and I am %d year old"%(name, age))
#一般的函数调用
func('lilei', 19)
#关键字参数调用
func(name = 'leilei')
#使用默认参数调用
func('lili')
使用默认参数的时候需注意:
1.位置参数在前,默认参数在后,否则python解释器会报错
2.默认参数必须指向不变对象(字符串等),不然像列表这种前面的变化会影响到后面的输出结果。
3.如何设置默认参数
当函数有多个参数时,把变化大的参数放在前面,变化小的放在后面,变化小的可以作为默认参数。
有多个默认参数的时候,可以按顺序提供默认参数,当不按顺序提供参数的时候需要使用关键字参数进行调用。
不定长参数:
定义函数的时候,不确定会有多少参数,这种情况下我们可以使用不定长参数来处理。即包裹位置参数或者包裹关键字参数
特点:能处理比声明时候更多的参数【传递多少参数处理多少参数,不传递则不处理】
1.8 包裹位置参数--*args
添加了星号(*)的变量名会存放所有 未命名的变量参数
如果在函数调用时没有指定参数,它就是一个空的//元组//
包裹位置参数实质上就是一个元组,将传递的参数进行收集,
并不是所有的参数都进行收集,它只收集除位置参数以外多余的参数【位置参数】
1.9 包裹关键字传递--**kwargs
本质:是一个字典(dict),将关键字参数的变量作为key,将其值作为value。
收集所有的关键字参数。传递参数必须使用关键字传参。
传递规则:
注意,参数定义与调用的顺序必须是:必选参数【位置参数】、可变参数【包裹位置参数】、默认参数、包裹关键字参数
1.10匿名函数
定义:不需要定义函数名的函数或者是子程序。
特点:匿名函数不使用def定义函数,而是使用lambda来定义。
1.lambda只是一个表达式,函数体比def简单
2.关键字lambda表示匿名函数,冒号前面的x表示函数参数.
3.匿名函数有个限制,就是只能有一个表达式,不用写return,返回值就是该表达式的结果.
好处: 函数没有名字,不必担心函数名冲突
调用:把匿名函数赋值给一个变量,再利用变量来调用该函数.
语法:
lambda 参数1,参数2,…,参数n: expression[表达式]
func = lambda a,b : a+b print(func(10,20))
'''
需求:求三角形的面积
输入三角形底边,与三角形的高。
'''
mianji = lambda bian,height : bian*height/2
print(mianji(20,10))
print(type(mianji))
网友评论