9.25 函数小结

函数的定义

def 函数名():
	pass

函数的三种定义方式

空函数

def f():
	pass

有参函数

def f(x):
	print(x)

无参函数

def f():
	print()

函数的调用

函数名()

函数的返回值

1.return可以返回值
2.return可以终止函数
3.return可以返回多个值,用元组返回

函数的参数

形参

位置形参

从左到右依次接收位置实参

默认形参

具有默认值,必须放在位置形参后面

实参

位置实参

从左到右依次传值给位置形参

关键字实参

按照形参名传值,必须在位置实参后面

可变长参数

*

*形参

接收多余位置实参,用元组接收

*实参

打散可迭代对象,当作位置实参传给形参

**

**形参

接收多余关键字实参,用字典接收

**实参

打散字典,当作关键字实参传给形参

*形参**形参

接收所有多余参数

函数对象

def func():
	pass

引用

f1 = func

作为容器类元素

lt = [func]

作为函数返回值

def f2():
	return func
f3 = f2()

作为函数参数

def f2(func):
	pass
f2(func)

函数嵌套

def f1():
	def f2():
		pass

名称空间与作用域

内置名称空间

内置函数

全局名称空间

除了内置和局部,剩下的都是全局

局部名称空间

函数内部的

执行顺序

内置→全局→局部

搜索顺序

当前位置:局部→全局→内置→报错

全局作用域

全局与局部没有联系

局部作用域

内局部与外局部没有联系

global

让全局与局部进行转换

nonlocal

让内局部与外局部进行转换

可变数据类型会打破作用域关系

闭包函数

def a(x):
	def b():
		print(x)
	return b
c = a(100)
c()

装饰器

1.本质就是函数
2.不修改源代码
3.不改变调用方式

二层装饰器

二层装饰器模版

def deco(func):
	def wrapper(*args,**kwargs):
		res = func(*args,**kwargs)
		return res
	return wrapper
	
@deco
def index()
	pass

三层装饰器

迭代器

可迭代对象

含有iter方法的 → 除了数字

迭代器对象

含有iter和next方法的 → 只有文件

三元表达式

列表推导式

字典生成式

生成器表达式

g = (i for i in range(10)
print(next(g)) ##g.__next__()

生成器

含有yield的函数

yield

1.暂停函数
2.一个next可以拿到一个yield值

递归

函数调用函数本身,要有退出条件

匿名函数

lambda 参数:返回值

内置函数

enumerate 获取索引+值

面向过程编程

类似流水线

posted @ 2019-09-25 23:00  断指轩辕  阅读(144)  评论(0编辑  收藏  举报