一.装饰器
'''
装饰器:python 独有
目的:不改变原函数就给原函数添加功能
核心:闭包,@装饰器语法糖
1.定义基本函数。实现功能
2.编写闭包
3.加工原始数据
4.给闭包添加权限
5.函数调用
6.@装饰器语法糖
案例:
时间开销
权限校验
装饰器距离函数越近先装饰
'''
# def login_required(f):
# def check():
# username = input("输入用户名")
# if username == "admin":
# f()
# else:
# print("用户校验失败")
# return check
#
# #@装饰器语法糖
# @login_required
# def index():
# print("欢迎来到首页")
# @login_required
# def cart():
# print("欢迎来到购物车")
# @login_required
# def mine():
# print("欢迎来到我的中心")
#
# # 函数调用
# index()
# mine()
# cart()
def login_required(f):
def check():
username = input("输入用户名")
if username == "admin":
f()
else:
print("权限校验失败")
return check
def time_cost(f):
def cost():
start = time.time()
f()
print("花费", time.time() - start)
return cost
# 装饰器距离函数越近越先装饰
#@login_required
@time_cost
@login_required
def index():
print(f"我是第一个完整的函数")
index()
二.内置函数
'''
python自带函数 builtins
'''
# len()长度
print(len([1,2,3]))
# divmod()整除和求余 结果是元组(整除,求余)
print(divmod(100,3)) #(33,1)
# abs 绝对值
print(abs(-50))
#pow次方
print(pow(2, 3))
#round 四舍五入
print(round(3.4))
# import math
# print(math.ceil(3.1))
# print(math.floor(3.1))
#最大最小
print(max([10,20,30]))
print(max([{"age": 15}, {"age": 5}, {"age": 25}], key=lambda x: x["age"]))
print(min([{"age": 15}, {"age": 5}, {"age": 25}], key=lambda x: x["age"]))
# all(可迭代内容)
# 所有元素都是真就为真 空也是真
print(all([1,2,True]),all([]))
# any(可迭代内容)
# 所有元素都是假,结果是假 空是假
print(any(['',0,False]),any([]))
# 进制 bin() 十进制转二进制
print(bin(10)) #0b1010
# hex 将十进制转换成十六进制
print(hex(100))
# oct 将十进制转换成八进制
# callable()可调用
print(callable(10), callable(lambda x: x))
# ascii
# chr()数字转字母
# ord()字母转数字
print(chr(97), chr(98), ord("A"), ord("Z"))
# sortedm 排序,根据ascii排序
print(sorted("helloa"))
# 局部与全局字典
#locals 返回所有局部变量
#globals 返回全局变量
num = 100
s0 = "hello"
def f():
i = 99
result2 = locals()
print(result2)
f()
result = globals()
print(result)
#输入与输出
# input 输入
# print 输出
#id 返回对象的唯一标识(地址)
#delattr 删除属性
#getattr 获取属性
#hasattr 是否有属性
#setattr 设置属性