函数小结
Posted wick2019
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了函数小结相关的知识,希望对你有一定的参考价值。
目录
函数的定义
def 函数名():
pass
函数的三种定义方式
空函数
def func():
pass
有参函数
def func(args):
pass
无参函数
def func():
pass
函数的调用
函数名()
函数的返回值
- return可以返回值
- return可以终止函数
- return可以返回多个值,用元组返回
函数的参数
形参
位置形参
从左到右依次接受位置实参
默认形参
具有默认值,必须放在位置实参后面
实参
位置实参
从左到右依次传值给位置实参
关键字实参
按照形参名传值,必须放在放在位置实参后面
可变长参数
*
*形参:接受多余的位置实参,用元组接受
*实参:打散可迭代对象,当作位置实参传给形参
**
**形参:接受多余的关键字实参,用字典接收
**实参:打散字典,当作关键字实参传给形参
def func(*args,**kwargs): # 接收所有多余的值
pass
函数对象
def func():
pass
引用
f1 = func
容器类元素
lt = [func]
函数的返回值
def f2():
return func
f3 = f2()
函数的参数
def f2(func):
pass
f2(func)
函数嵌套
def f1():
def f2():
pass
名称空间和作用域
内置名称空间
内置函数
全局名称空间
除了内置和局部都是全局
局部名称空间
函数内部的
执行顺序
内置》全局》局部
搜索顺序
从当前开始 局部》全局》内置
全局作用域
全局的x和局部的x没有关系
局部作用域
局部1和局部2的x没有关系
global
nonlocal
可变数据类型会打破作用域关系
闭包函数
def a():
x =10
def b():
print(x)
return b
装饰器
- 本质就是函数
- 不修改源代码
- 不改变调用方式
二层装饰器
import time
def index():
pass
def time_count(func):
def wrapper(*args,**kwargs):
start = time.time()
res = func(*args,**kwargs)
end = time.time()
print(end - start)
return res
return wrapper
index = time_count(index)
index() # wrapper()
两层装饰器模板
def deco(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
return res
return wrapper
@deco
def index():
pass
三层装饰器
def sanceng(x):
def deco(func):
def wrapper(*args,**kwargs):
res = func(*args,**kwargs)
return res
return wrapper
return deco
@sanceng(x)
def index():
pass
迭代器
可迭代对象
含有iter方法的(除了数字)
迭代器对象
含有iter和next的方法 (文件)
三元表达式
列表推导式
字典生成式
生成器表达式
g = [123,2,3,4]
print(next(g)) # g.__next__()
生成器
含有yield的函数
- 暂停函数,
- 一个next可以取一个yield的值
递归
函数调用函数本身:有退出条件
count = 0
def a():
print(count)
count +=1
if count == 100:
return
a()
递归能做的事,绝大部分能用循环代替
匿名函数
lambda 参数:返回值
一般与max/min/filter/map/sorted/sum
内置函数
enumerate获取索引+值
面向过程编程
类似流水线
以上是关于函数小结的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中创建构造函数的代码片段或快捷方式