Python学习之路5 - 函数
函数
定义方式:
def func():
"这里面写函数的描述"
这里写代码
return x #如果没有返回值就叫"过程",函数和过程的区别就是有无返回值
实例
def fun1():
"这里是测试"
print('这是第一个函数')
return 0
fun1() #调用函数
函数传参
def test(x,y,z):
print(x)
print(y)
print(z)
test(3,3,5) #这样传的参数叫做位置参数, 位置是一一对应的
test(x=5,y=4,z=3) #这样传的参数叫做关键参数, 位置可以不用一一对应
这里需要注意的是,关键参数是不能写在位置参数前面的。
例如 test(x=4,5,5)
这样x是用了关键参数,y和z用了位置参数,这样就是错的。
但是 test(3,y=4,z=6)
这样位置参数x在关键参数y和z的前面,这样就是可以的。
同理 test(3,z=6,y=4)
这样也是可以的。
参数组
如果我要传入的参数数量不固定,就在形参列表里写 *变量名 来实现。
def test(*args):
print(args) #打印出来的是一个元组
test(3,3,5) #这样我传多少个参数都没问题了
test(*[3,4,5,6,6,4]) #这是第二种传值方式
传入字典
如果我想传入字典就在形参的位置用 **变量名 来实现
def test(**args):
print(args) #打印出来的是一个字典
test(name='vector',age=3)
高阶函数(满足下列条件之一就是高阶函数)
a:把一个函数名当作形参传给另一个函数(在不修改被装饰函数源代码的情况下修改其功能,但是调用方式变了)
def bar():
print('this is bar...')
bar()
print('----------------------------------')
def test(func): #在这里增加了功能
print(func)
test(bar) #但是这里修改了调用方式
b:返回值中包含函数名(不修改函数的调用方式,而修改函数功能)
def bar():
print('this is bar...')
bar()
print('----------------------------------')
def test(func): #在这里增加了功能
print(func)
return func #这里返回了函数地址
bar = test(bar) #将函数地址赋给一个变量,该变量和传入函数同名
bar() #这个变量加上括号,就可以当函数用了,同时又没有修改函数的调用方式
嵌套函数
x = 1
def test1():
def test2():
def test3():
x = 3
print(x)
test3()
test2()
test1()
像这样在一个函数里面再定义一个函数就叫做嵌套函数。