python装饰器和内置函数
一、装饰器
import time
#语法糖 @
def timmer(f):
def inner():
start_time = time.time()
time.sleep(0.1)
f()
end_time = time.time()
print('----> 执行效率%s' % (end_time - start_time))
return inner
@timmer # func = timmer(func)
def func():
print('嘻嘻更健康')
func() # inner()
wraper可以是假的指向变成真的指向
from functools import wraps
import time
#语法糖 @
def timmer(f):
@wraps(f)
def inner():
start_time = time.time()
time.sleep(0.1)
f()
end_time = time.time()
print('----> 执行效率%s' % (end_time - start_time))
return inner
@timmer # func = timmer(func)
def func():
print('嘻嘻更健康')
func() # func()
带参数的装饰器
from functools import wraps
F = True # step 1 装饰器的开关变量
def outer(flag): # step 2
def wrapper(func): # step 4
@wraps(func)
def inner(*args, **kwargs): # stpe 6
if flag: # step 9
print('before') # step 10
ret = func(*args, **kwargs) # step 11 执行原函数
print('after') # step13
else:
ret = func(*args, **kwargs)
print('123')
return ret # step 14
return inner # step 7
return wrapper # step 5
@outer(F) # 先执行step 3 :outer(True)这个函数,然后step 6:@wrapper #此处把开关参数传递给装饰器函数
def hahaha():
print("主函数") # step 12
hahaha() # step 8 相当于inner()
二、内置函数
函数名 | 描述 | 重要程度 |
---|---|---|
abs() | 返回数字的绝对值。 | ☆☆ |
all() | 用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。 | ☆ |
any() | 用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。 | ☆ |
ascii() | ascii() 函数类似 repr() 函数, 返回一个表示对象的字符串, 但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符 | ☆ |
bin() | 返回一个整数 int 或者长整数 long int 的二进制表示 | ☆☆ |
bool() | 用于将给定参数转换为布尔类型,如果没有参数,返回 False | ☆☆ |
bytearray() | 方法返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。 | ☆ |
bytes() | 返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列 | ☆ |
callable() | 函数用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。 | ☆☆ |
chr() | 用一个整数作参数,返回一个对应的字符。 | ☆☆ |
compile() | 函数将一个字符串编译为字节代码。 | ☆ |
complex() | 函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。 | ☆ |
dict() | 函数用于创建一个字典。 | ☆☆☆ |
dir() | 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。 | ☆☆☆ |
divmod() | 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b) | ☆☆ |
enumerate() | 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 | ☆☆☆☆ |
eval() | 函数用来执行一个字符串表达式,并返回表达式的值。 | ☆☆☆ |
exec() | 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。 | ☆☆☆ |
float() | 用于将整数和字符串转换成浮点数。 | ☆☆ |
format() | 格式化函数 | ☆☆ |
frozenset() | 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。 | ☆☆☆ |
globals() | 以字典类型返回当前位置的全部全局变量 | ☆☆ |
hash() | 用于获取取一个对象(字符串或者数值等)的哈希值。 | ☆ |
help() | 用于查看函数或模块用途的详细说明。 | ☆ |
hex() | 函数用于将一个指定数字转换为 16 进制数 | ☆ |
id() | 用于获取对象的内存地址。 | ☆☆☆ |
input() | 受一个标准输入数据,返回为 string 类型。 | ☆☆☆☆☆ |
int() | 用于将一个字符串或数字转换为整型。 | ☆☆☆☆☆ |
isinstance() | 判断一个对象是否是一个已知的类型,类似 type() | ☆☆☆ |
iter() | 用来生成迭代器 | ☆☆☆ |
len() | 返回对象(字符、列表、元组等)长度或项目个数。 | ☆☆☆☆☆ |
list() | 用于将元组或字符串转换为列表 | ☆☆☆ |
locals() | 以字典类型返回当前位置的全部局部变量。 | ☆☆☆ |
max() | 返回给定参数的最大值,参数可以为序列。 | ☆☆☆ |
memoryview() | 返回给定参数的内存查看对象(Momory view) | ☆ |
min() | 返回给定参数的最小值,参数可以为序列。 | ☆☆☆ |
next() | 返回迭代器的下一个项目。 | ☆☆☆ |
oct() | 将一个整数转换成8进制字符串。 | ☆☆ |
open() | 用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 | ☆☆☆☆☆ |
ord() | 是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。 | ☆ |
pow() | 返回 xy(x的y次方) 的值。 | ☆☆ |
print() | 用于打印输出 | ☆☆☆☆☆ |
range() | 回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表 | ☆☆☆☆☆ |
repr() | 将对象转化为供解释器读取的形式。 | ☆☆☆ |
reversed() | 返回一个反转的迭代器。 | ☆☆☆☆ |
round() | 返回浮点数x的四舍五入值 | ☆☆☆ |
set() | 创建一个无序不重复集合,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等 | ☆☆☆☆ |
slice() | 实现切片对象,主要用在切片操作函数里的参数传递 | ☆ |
str() | 将对象转化为适于人阅读的形式。 | ☆☆☆☆ |
sum() | 对系列进行求和计算。 | ☆☆☆☆ |
tuple() | 将列表转换为元组。 | ☆☆☆☆ |
type() | 如果你只有第一个参数则返回对象的类型,三个参数返回新的类型对象 | ☆☆ |
vars() | 返回对象object的属性和属性值的字典对象。 | ☆ |
zip() | 用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。 | ☆☆☆☆ |
__import__() | 用于动态加载类和函数 | ☆☆☆ |
三、匿名函数(lambda)
lambda 参数:返回值
四、sorted()
对所有可迭代的对象进行排序操作
sorted 语法:sorted(iterable, key=None, reverse=False)
参数说明:
- iterable – 可迭代对象。
- key – 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
- reverse – 排序规则,reverse = True 降序 , reverse = False 升序(默认)。
返回值:返回重新排序的列表。
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list = sorted(example_list, key=lambda x: x*-1)
print(result_list)
# [7, 6, 5, 4, 3, 2, 1, 0]
五、filter()
用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。
语法:filter(function, iterable)
参数:
- function – 判断函数。
- iterable – 可迭代对象。
返回值
返回一个迭代器对象
tmplist = filter(lambda x:x%2==1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
newlist = list(tmplist)
print(newlist)
# [1, 3, 5, 7, 9]
六、map()
根据提供的函数对指定序列做映射。
语法:map(function, iterable, …)
参数:
- function – 函数
- iterable – 一个或多个序列
返回值:返回迭代器
print(list(map(lambda x: x ** 2, [1, 2, 3, 4, 5])))
# [1, 4, 9, 16, 25]