装饰器-内置函数

# 一、    装饰器
#
# 3.函数即变量:在Python中,函数就是一个变量,函数名就是一个变量,这个函数名里面存的是这个函数的内存地址,它把函数体放到内存里,在调用的时候从函数名里面的这个内存地址找到函数体然后运行这个函数(函数名加上括号就是调用这个函数,如果只写这个函数名就是打印一下这个函数的内存地址)

# def hello():
# print('hello world')
#
# 4.高阶函数
# 如果一个函数的参数是一个函数的话,这个函数就是一个高阶函数
# 把函数名赋值给另一个变量,然后使用这个变量完成跟函数一样的功能

# def add(x,y,z): #这个函数接收三个参数,z是一个函数
# print(z(x)+z(y)) #执行函数体,x+y
# add(2,-4,abs) #调用函数,参数x和y的值,再函数abs(取绝对值的函数)传进来

# 5.函数嵌套
# 在函数里面再定义一个函数,而不是说在函数了名再调用一个函数,这就叫函数嵌

# def Out():
# def Inside():
# print('我是inside')
# Inside()
# print('我是out')
# Out()
#


# 1.装饰器:器是函数,装饰器就是装饰函数,装饰器本身也是一个函数。
# 2.作用:在不改变原来函数的调用方式、不改变原来函数的代码,给函数添加新功能
# 3.写一个简单的装饰器:统计函数的运行时间,然后将统计的函数作为参数传递

# import time
# def add():
# time.sleep(2)
# print('123')
#
# def run(func):
# start_time = time.time()
# func()
# stop_time = time.time()
# print('the func run times is %s'%(stop_time-start_time))
# run(add)
#
# import time
# def run(func): #函数run就是装饰器,将真正执行业务的func包裹在函数里面
# def deco():
# start_time = time.time()
# func()
# stop_time = time.time()
# print('the func run time is %s'%(stop_time-start_time))
# return deco
# def add():
# time.sleep(2)
# print('123')
# add = run(add)
# add()

#使用方法糖@
# import time
# def add(func):
# def deco():
# start_time = time.time()
# func()
# stop_time = time.time()
# print('the func run time is %s'%(stop_time-start_time))
# return deco
# @add #等同于: add = run(add)
# def run():
# time.sleep(2)
# print('123')
# run()

#要装饰的函数带参数时,可以使用可变参数和关键字参数来接收所有的参数
# import time
# def add(func):
# def deco(*arg,**kwarg):
# start_time = time.time()
# func(*arg,**kwarg)
# stop_time = time.time()
# print('the func run time is %s'%(stop_time-start_time))
# return deco
# @add
# def run():
# time.sleep(2)
# print('this is run')
# @add
# def run1(name,age):
# time.sleep(2)
# print('this is run1',name,age)
# run()
# run1('jiameiyu',20)

#用装饰器判断一个用户是否登录
# import os
# def login():
# print('login')
# username = input('请输入账号')
# passwd = input('请输入密码')
# if username== 'admin' and passwd == '123456':
# print('登录成功!')
# with open('user','a+') as fw:
# fw.write(username)
# else:
# print('账号密码错误!')
# #s是否登录校验装饰器
# def auth(func):
# def check(*args,**kwags):
# if os.path.exists('user'): #判断用户文件是否存在
# func(*args,**kwags)
# else:
# print('你没有登录!')
# login()
# return check
# @auth
# def admin():
# print('welcome!')
# def show():
# print('show!')
# @auth
# def add():
# print('add product!')
# def menu():
# msg='''
# 1:后台管理
# 2:查询商品
# 3:添加商品'''
# print(msg)
# m = {
# "1":admin,
# "2":show,
# "3":add
# }
# choice = input('请输入你的选项:').strip()
# if choice in m:
# m[choice]()
# else:
# print('输入有误!')
# menu()
# if __name__ == '__main__':
# menu()


#内置函数
def func(a):
print(a)
print(all([1,2,3,4])) #判断可迭代的对象里面的值是否都为真
print(any([0,1,2,3,4])) #判断可迭代的对象里面的值是否有一个为真
print(bin(10)) #十进制转成二进制
print(bool('s')) #把一个对象转换成布尔类型
print(callable('aa')) #判断传入的对象是否可调用
print(chr(10)) #打印数字对应的ASCII
print(ord('b')) #打印字符串对应的ASCII
print(dict(a=1,b=2)) #转换字典
print(dir(1)) #打印传入对象的可调用方法
print(eval('[]')) #执行Python代码,只能执行简单的,定义数据类型和运算
print(exec('def a():pass')) #执行python代码
print(locals()) #返回局部变量
print(hex(111)) #数字转成16进制
print(max(111,222)) #取最大值
print(oct(11)) #把数字转换成8进制
print(round(11.1922,1)) #取几位小数:11.2
print(sorted([2,31,34,6,1,23,4],reverse = False))#排序[1, 2, 4, 6, 23, 31, 34]




#模块,包
# 模块:实质上是一个Python文件,用来组织代码的。把Python代码写到里面,文件名即模块名
# 包(package):本质是一个文件夹,它有一个__init__.py文件,从逻辑上来组织模块(用来存放模块)
# 导入模块的本质,就是把python文件拿过来执行一次
# import module #导入模块 module

# 标准库:Python内置模块
# 开源模块:第三方
# 自定义模块:自己写的

# os、sys模块
# import os
# print(os.getcwd()) #获取当前工作目录
# os.chmod("/usr/local",7) #给目录加权限
# print(os.chdir("../")) #更改当前目录
# print(os.curdir) #当前目录
# print(os.pardir) #父目录
# print(os.makedirs("/usr/local/aa/bb")) #创建地柜文件夹,父目录不存在时,创建父目录
# print(os.removedirs("/usr/local/aa/bb")) #递归删除空目录
# print(os.mkdir("aa")) #创建文件夹
# print(os.rmdir("aa")) #删除指定的文件夹
# print(os.remove("aa1")) #删除文件
# print(os.listdir('.')) #列出一个目录下的所有文件
# os.rename("aa","aab") #重命名
# print(os.stat("len_os.py")) #获取文件信息
# print(os.sep) #当前操作系统的路径分隔符
# print(os.linesep)#当前操作系统的换行符
# print(os.pathsep) #当前系统的环境变量中每个路径的分隔符,Linux是:,Windows是;
# print(os.environ) #当前系统的环境变量
# print(os.name) #当前系统名称
# print(os.path.abspath(__file__)) #获取绝对路径
# print(os.path.split("/usr/local/aa/bb.txt")) #分割路径和文件名
# print(os.path.dirname("/usr/local")) #获取父目录
# print(os.path.basename("/usr/local")) #获取最后一级,如果是文件夹显示文件名,如果是目录显示目录名
# print(os.path.exists("/usr/local")) #判断目录/文件是否存在
# print(os.path.isabs(".")) #判断是否是绝对路径
# print(os.path.isfile("/usr/local")) #判断是否是一个文件
# print(os.path.isdir("/usr/local")) #判断是否是一个目录
# print(os.path.join("/root",'aa','a.sql')) #拼接程一个路径
# print(os.path.getatime("len_os.py")) #输出最近访问时间

# import sys
# sys.argv #命令行参数list,第一个元素是程序本身路径
# sys.exit(0) #t退出程序,正常退出时exit(0)
# sys.version #获取Python解释器程序的版本信息
# sys.maxint #最大的int值
# sys.path #返回模块的搜索路径,初始化使用PYTHONPATH环境变量的值
# sys.platform #返回操作系统平台名称
# sys.stdout.write('please:') #想屏幕输入一句话
# val = sys.stdin.readline()[:-1] #获取输入的值

# import random,string
# print(random.random()) #随机夫电视,默认取0-1,不能固定范围
# print(random.randint(1,20)) #随机整数
# print(random.choice('x23serw4')) #随机取一个元素
# print(random.uniform(1,9)) #随机取浮点数,可以指定范围
# print(random.sample('helle',2)) #从序列中随机取几个元素
# x = [1,2,3,4,5,6,7]
# random.shuffle(x) #洗牌,打乱list值的顺序
# print(x)
# print(string.ascii_letters+string.digits) #所有数字和字母abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789

# 时间有三种表示方式,一种是时间戳、一种是格式化时间、一种是时间元组
import datetime,time
# print(time.timezone) #和标准时间相差的时间,单位s
# print(time.time()) #获取当前时间戳
# print(time.sleep(1)) #休息1s
# print(time.gmtime()) #把时间戳转换成时间元组,如果不传的话,默认取标准时区的时间戳
# print(time.mktime(time.localtime()))
# print(time.strftime("%y%m%d %H%M%S")) #将时间元组转换成格式化输出的字符串
# print(time.strptime("20170101 111111","%Y%m%d %H%M%S"))
# print(time.struct_time) #时间元组
# print(time.asctime()) #时间元组转换程格式化时间
# print(time.ctime()) #时间戳转换程格式化时间
# print(datetime.datetime.now()) #当天时间格式化输出
# print(datetime.datetime.now()+datetime.timedelta(3)) #3天后的时间
# print(datetime.datetime.now()+datetime.timedelta(-3)) #3天前的时间

import json
dic = {"name":"jiameiyu","age":20}
print(json.dumps(dic)) #把字典转成json串
fj = open('a.json','w')
print(json.dump(dic,fj)) #把字典转换成的json串写到一个文件里面
s_json = '{"name":"niuniu","age":20,"status":true}'
print(json.loads(s_json)) # 把json串转换成字典
fr = open('b.json', 'r')
print(json.load(fr)) # 从文件中读取json数据,然后转成字典
posted @ 2019-02-12 10:46  13684995613  阅读(229)  评论(0编辑  收藏  举报