装饰器高级使用(了解)

简介: 装饰器高级使用(了解)

开发者学堂课程【Python 入门 2020年版装饰器高级使用(了解)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/639/detail/10420


装饰器高级使用(了解)

 

内容介绍:

一、具体内容

二、开放封闭式原则

 

一、具体内容

组装一个装饰器,满足条件就可以执行代码,

如:

def check_permission():,再跟上pass,如果要使用装饰器,即写入@ check_permission。

如果现在进行验证,则要将用户现在的权限传入,写入user_permission,即@ check_permission(user_permission)

,同时需要明确read、write、execute的权限,

如下:

user_permission = 6

READ_PERMISSION = 4

WRITE_PERMISSION = 2

EXE_PERMISSION = 1

如果有权限验证,可以根据内容进行写入:

@ check_permission(user_permission,READ_PERMISSION)

@ check_permission(user_permission,WRITE_PERMISSION)

@ check_permission(user_permission,EXE_PERMISSION)

运用装饰器,写入参数x,y,即def check_permission(x,y):,

同时也需要跟上如下:

def check_permission(x,y) :

print(x,y)

def handle_action() :

def do_action() :

pass

return do_action

return handle_action

此时结构完成搭建,要注意调用read时是被装饰过的,即会调用do_action。

handle_action不需要参数,再运行read,

执行结果如下:

image.png显示报错,因为需要fn,即def handle_action(fn) :。此时调用read、write、execute都会找到do_action,所以可以调用fn,

如下:

def handle_action() :

def do_action() :

fn()

再次进行运行,结果实现运营,读取结果则会进行显示。

在此基础上,如果user_permission为6,为4 + 2,即具有读写权限;如果user_permission为5,为5 + 1,即具有读和execute权限;

如果user_permission为3,为2 + 1,即具有写和execute权限;如果user_permission为7,为4 + 2 + 1,即具有所有权限。此时可以组成7种权限。

x为用户权限,y为需要验证的权限,两者之间验证不能使用减法,这时使用二进制来进行计算,如4为0b100,2为0b010,1为0b001,通过观察最低位来查看是否有权限,如:0b001则具有execute权限;0b010则具有写入的权限;0b100则具有读的权限。

每个位置只要有数字则为有权限,如:5为0b101则具有读和执行权限,而这些v也被称为权限因子。如果此时输入另一个权限,

如下:

def delete() :

print (‘我正在删除内容’)

同时也要写入:

DEL_PERMISSION = 8 #1000

此时排列组合有15种权限。根据以上可以推算出11、13等数字的权限。

此时加入:

@ check_permission(user_permission,DEL_PERMISSION)

通过用户的权限与权限因子做与运算,不等于零则为有权限,写入:

# 用户权限 & 权限因子 != 0

如果与运算后不为零则可以执行。此时可写入:

if x & y ! = 0 : # 有权限,可以执行

fn()

else:

print(‘对不起,您没有响应的权限’)

如果将用户权限改为9,则只有删除与执行权限,注意用户权限数字不宜过大。

如果用户权限改为13,则没有响应的权限,如果用户权限为15则具有所有权限,15则为最大因子,16开始则为一个轮回。

 

二、开放封闭式原则

开放封闭式原则:

以前写好的代码封闭,通过一些手段对代码进行扩充。

相关文章
|
开发者 Python
高级装饰器| 学习笔记
快速学习高级装饰器
|
开发者 Python
装饰器的高级使用|学习笔记
快速学习装饰器的高级使用
|
4月前
|
设计模式 缓存 Python
Python编程中的装饰器:从基础到高级应用
【10月更文挑战第7天】 本文深入探讨了Python中装饰器的使用,从基本概念到高级应用全面解析。通过具体示例,读者将能清晰理解装饰器的本质、实现方式及其在代码优化和功能增强中的重要作用。
28 0
|
9月前
22_自定义装饰器
22_自定义装饰器
125 0
|
JavaScript 前端开发 编译器
StencilJs 学习之组件装饰器
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 现在让我们一起学习其中的装饰器部分。
122 0
十一、装饰器
装饰器的功能就是在不改变原程序代码和不改变原程序函数的调用方式而为原程序增加功能。 闭包函数  内层函数对外层函数的变量的引用(不是全局变量) 闭包:当函数开始执行时,如果遇到了闭包,他有一个机制,# 他会永远开辟一个内存空间,将必包中的变量等值放入其中,不会随着函数的执行完毕而消失   ...
758 0
|
7月前
|
Python
Python编程实战:利用闭包与装饰器优化日志记录功能
【7月更文挑战第7天】Python的闭包和装饰器简化了日志记录。通过定义如`log_decorator`的装饰器,可以在不修改原函数代码的情况下添加日志功能。当@log_decorator用于`add(x, y)`函数时,调用时自动记录日志。进一步,`timestamp_log_decorator`展示了如何创建特定功能的装饰器,如添加时间戳。这些技术减少了代码冗余,提高了代码的可维护性。
88 1
|
9月前
|
数据安全/隐私保护 Python
解释装饰器(decorator)的功能和用法。
解释装饰器(decorator)的功能和用法。
63 1
|
Python
【透彻】Python装饰器进阶(类装饰器+带参数的装饰器+多装饰器)| Python 主题月
【透彻】Python装饰器进阶(类装饰器+带参数的装饰器+多装饰器)| Python 主题月
176 0

热门文章

最新文章