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]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值