函数:
1、引用传递
2、可变参数、命名参数、万能参数
3、匿名函数(lambda)
4、闭包(有点难)
5、递归
6、偏函数
7、函数作为参数传递
8、函数调用全局变量
9、全局变量和局部变量
函数的参数
-----函数的返回值
------可变参数,,命名参数等等
--------递归
装饰器(函数的深层次使用)
1、引用传递
引用传递,实质是在传递内存地址
2、函数默认值
# 在python,可以为函数的参数给予默认值
# 一旦某个存在默认值,那么如果在调用的时候,
# 不传递这个参数,则按照默认值
# 减少调用时的繁杂操作
注意:在定义函数时,如果存在有默认值的参数,一定要写在没有默认值的参数后面,
否则在调用时,无法确定参数到底传给哪个参数。
3、全局变量和局部变量
全局变量:就是定义在py文件中,能被任何函数、类能够正常访问的变量。
局class variable:
a = '我是类变量'
def showvarible(self):
b = '我是函数变量'
print(variable.a)
print(b)
variable().showvarible()
注意:函数本身是对象,存储在堆中,但是函数的调用是在栈中调用,压栈
4、参数问题
1、默认值参数
2、可变参数
3、命名参数
4、万能参数
在Python中,函数是对象,函数中参数可以是任何类型
注意:所以说在Python中,函数的参数可以是函数
5、匿名函数
lambda表达式
lambda:语言
def a():
print("hello world")
# lambda:print("hello world")
def add(x, y):
return x + y
# lambda x,y: x + y
优点:简化代码书写
缺点:降低了代码的可读性,增加代码的维护成本
6、递归
递归的必要条件:
1、函数自身调用自身
递归函数
递归函数用最简单的一句话说应该就是:在A函数内部调用A函数了。
随便写个代码 举个列子
def recursive_test(n):
print(‘数字:’,n)
recursive_test(n-1)
recursive_test(5)
1
2
3
4
5
上面这个就是一个不完整的递归函数 recursive_test在函数内部 不断的调用自己
下面是输出的结果
2、要有终止条件(死循环)