把一定功能进行了封装,其他要用到该功能的地方,直接调用函数即可。
在python中,本身python已经封装好了一些功能给我们使用。最常见的比如,print()就是输入内容到控制台。
这个我们本身没有做什么,而是直接调用就能实现。
第二种,就是需要我们自己定义,然后自己调用的。
通过def关键字去定义函数。
如果是我们自己封装的函数,都需要先定义,再调用,顺序不能乱。
def add(a,b):
c = a+b
print(c)
add(1,2)
注意:
1a,b是定义时候的参数,称为形参,在第5行代码调用的时候,传入的1,2是跟定义的a,b 对应的,称为实参。
2当python执行到def 定义函数的时候,不会进入函数体。等调用的时候,才会找到定义的地方去执行。
3 一个封装好的函数,可以调用多次。所以,函数的封装也是优化代码,减少代码冗余的常见使用。
4 函数体中可以写任意的代码,条件判断,循环,都可以在函数中使用。
在函数调用的时候,就是函数名()
在函数名后面加小括号进行调用。函数可以有参数,也可以没有参数。
def print22():
print('222')
print22()
1 必填参数
如果在定义函数的时候设置了形参,则在调用的时候必须传入一一对应的参数。
2 默认值参数
在函数定定义的时候,形参=默认值的形式,可以设置默认值。这个时候可以不传入这个参数对应的实参,就会使用默认值。
默认值参数要写在参数的后面,否则没有办法去判断。
def add(a,b=2):
c = a +b
print(c)
add(1)
定义b的默认值参数是2,此时调用的时候只传了1,b就默认使用2,结果为3。如果我们调用的时候给b赋值了其他参数,则以赋值的为准,不会使用默认值。
3 可变参数
如果有可变参数,要凡在默认值参数后面。
也就是说,顺序为必填参数,默认值参数,可变参数。
可变参数在定义的是有以* 开头,但是大家都默认可变参数写为 *args
def myFn(a,b=2,*args):
print(a)
print(b)
print(args) # (3, 4, 5)
print(*args) # 3 4 5
myFn(1,2,3,4,5)
可以看到,在实参调用的时候,可以传入多个值,组合成了一个元组,这个现象称之为组包。
在函数体中使用 *args,则可以把可变参数一个一个取出来,称之为解包。