博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器和内置函数
阅读量:4967 次
发布时间:2019-06-12

本文共 5284 字,大约阅读时间需要 17 分钟。

一,装饰器

1、什么是装饰器?

 装饰器本质上就是一个python函数,他可以让其他函数在不需要做任何代码变动的前提下,增加额外的功能,装饰器的返回值也是一个函数对象。

装饰器的本质其实就是闭包

(1)求函数运行时间

 

import timeprint(time.time())#从1970年开始,按秒计算

 

import timedef func():    start_time = time.time()  # 代码运行之前的时间    print('这是一个func函数')    time.sleep(3)  # 阻塞,睡一下, 1 是睡一秒    print(time.time() - start_time)  # 代码运行后的时间func()#这是一个func函数#3.0027832984924316
import timedef func():    print('这是func函数')    time.sleep(1)def func1():    print('这是func1函数')    time.sleep(2)def func2():    print('这是func2函数')    time.sleep(3)def times():    start_time = time.time()  # 代码运行之前的时间    func2()    print(time.time() - start_time)  # 代码运行后的时间times()
View Code
import timedef func():    def inner():        time.sleep(2)        print('这是inner函数')    return innerinner = func()inner()

 

 

二、内置函数

什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。

圈起来的部分之后补充

print(abs(-98))          # 求绝对值  正的负的 出来后全都是正的  **
print(all([1,0,3,4]))    # all 判断元素中都为真的才是真  * 
print(any([1,False,0]))  # any 判断元素中只要有一个为真就是真 *
print(ascii('你'))       #  查看元素对应的内容
print(bin(10))           # 将10进制转行2进制       **
print(bool([1]))         # 将内容转换成布尔值
b = bytearray('meet'.encode('utf-8'))# 返回一个新的元组,元组可以切片,切片的内容对应的ascii表print(b[3])
print(bytes('你',encoding='utf-8'))                *print('你'.encode('utf-8'))
def func():    passprint(callable(func))   # 检查这个对象是否可以调用    True
print(chr(65))  # 输入数字,返回对应的ascii表位上对应的内容   **
a = compile('input(">>>")','','exec')exec(a)   #无用
print(complex(8))  # 复数
print(dict(key=1,name=2))
print(dir([1,2]))  # 查看对象的所有方法     ***
print(divmod(5,2))   # 返回一个元组,元组的第一个元素是商,第二个元素是余数  **
# print(enumerate)   # 枚举li = [1,2,3,4,5,6,7]for i,em in enumerate(li,1):  # enumerate不写值默认是0         ****    # enumerate  第一个参数是可迭代对象,第二参数是计数    print(i,em)
s = """9+4+3"""    # 将字符串中内容执行print(eval(s))     # 上班以后禁止使用
li = [1,23,4,]s = """def func():    print(1)func()"""g = exec(s)print(g)print(li)         # 公司非常禁止
print(float(20))
i = 3.56print(int(i))
# 's'.format()  # 字符串的方法print(format('a','>10'))      # 公用函数  右对齐print(format('a','<10'))      # 公用函数  左对齐print(format('a','^10'))      # 公用函数  居中print(format(3,'b'))print(format(3,'08b'))  # 00000011   二进制print(format(3,'o'))    # 八进制print(format(3,'x'))    # 八进制
a = 1def func():    passprint(globals())  # 查看全局都哪些内容            **print(b)print(globals().get('b'))
dic = {[1,2,3]:1}print(hash([1,2,3]))  #求对象的哈希值
print(help(input))      # 不知道怎么用的时候可以使用help查看一下
print(hex(33))           #  将10进制转换成16进制  *
print(id('s'))             # 查看数据的内存地址   ***
print(input(">>>"))         # 获取用户输入的内容  *****
print(int())                  # 将数据转换成整型    *****
print(isinstance([1,2,3],str))   #判断这个数据时什么类型  ***
#iter                             # 判断是不是可迭代对象   *** 
# len()                              # 获取数据的长度     *****
list()                              # 转换成一个列表  ***
def func():    a = 1    print(locals())  # 查看局部空间的内容       ***func()
print(max(1,2,3,4,5))   # 求最大值              ***
print(min(1,2,3,4))       # 求最小值            ***
print(memoryview(b'a'))        # 查看字节的内存地址
print(next())               # 迭代器中的取下一个值  ***
print(oct(9))                 # 将10进制转换成8进制  **
print(ord('中'))     # 输入的是unicode编码的内容    **print(chr(20013))    # 输入的是unicode的内容        **
print(pow(2,3))  #两个参数的时候求幂运算print(pow(2,3,3))    #三个参数的时候先求幂运算在取余
print('你好','我好',sep=' ',end='')print('大家好')print('你好',file=open('a','w',encoding='utf-8'))print('123')         # 是处理后给你显示的    *****print(repr('123'))   # 显示的是原数据        ***
print(list(reversed()))  # 反转 元组,列表,字符串    ****
print(round(5.472343212,3))   #四舍五入      ***
li = [1,2,3,4]# s = slice(2)   #切片print(li[3])
print(sum({1:4,2:5}))   #求和     ***
print(type('aasas'))    # 获取数据类型
nt(vars(str))print(locals())    #没啥用
li = [1,2,3,4]ls = [5,6,7,4,5,6]lst = ['a','b','c','d','e']print(list(zip(li,ls,lst)))  #拉链                  ****
__import__('time')   # 导入的方式 ---- > 反射

 

************************************************  重要的   :*************************************************

lambda  匿名函数,为了解决一些简单的需求而设计的一句话函数

 lambda 关键字  x参数:x是返回值           lambda 的返回值只能是一个

print((lambda x:x)(5))
f = lambda x,y:x*yprint(f.__name__)     #
print(f(5,6))

 

 

sorted   排序函数

print(sorted([7,2,3,4],reverse=True))

 

li = ['你好啊','我好','大家都挺好']def func(li):    return len(li)print(sorted(li,key=func)) # key指定一个排序的规则print(sorted(li,key=lambda x:len(x)))
li = [    {
'age':19}, {
'age':52}, {
'age':48}, {
'age':30},]def func(li): return li['age']print(sorted(li,key=func))print(sorted(li,key=lambda x:x['age']))

 

 

filter   筛选过滤

语法: filter(function,iterable)

function: 用来筛选的函数,在filter中会自动的把iterable中的元素传递给function,然后根据function返回的True或者False来判断是否保留此项数据

li = [1,2,3,4]def func(a):    if a > 2:        return aprint(list(filter(func,li)))
li = [1,2,3,4]def func(li):    for i in li:        if i > 2:            print(i)func(li)li = [1,2,3,4]print(list(filter(lambda x:x>2,li)))

 

 

map  映射函数

语法: map(function,iterable) 可以对可迭代对象中的每一个元素进映射,分别取执行function

li = [1,2,3,4,5]def func(i):    return i+10print(list(map(func,li)))  #映射
li = [1,2,3,4,5]print(list(map(lambda x:x+10,li)))

 

 

reduce     是做累计算的

from functools import reduceli = [1,2,3,4,5]def func(x,y):        # x=12345    return x*10+y     # reduce 是做累计算的print(reduce(func,li))

 

转载于:https://www.cnblogs.com/Xiao_Xu/p/10554927.html

你可能感兴趣的文章
模板的文件名和方法名一定要一致!!
查看>>
**p
查看>>
优先队列详解
查看>>
VS2012 创建项目失败,,提示为找到约束。。。。
查看>>
外观模式(Facade Pattern)
查看>>
oracle初级(续)
查看>>
011_TCP专项研究监控(滑动窗口和流控)
查看>>
递归分析 【2014】三2
查看>>
刚刚安装完nginx,服务启动,通过浏览器无法访问的问题
查看>>
注解使用案例
查看>>
jQuery获取Select选择的Text和 Value(转)
查看>>
window.onload和body.onload的区别
查看>>
poj3469_dinic
查看>>
poj2352_树状数组+离散化
查看>>
php数字补零的两种方法
查看>>
DevExpress GridControl使用教程:之 添加 checkbox 复选框
查看>>
PHP5.4 + IIS + Win7的配置
查看>>
绝对定位案例
查看>>
SSM整合步骤
查看>>
Android 应用性能测试
查看>>