装饰器高级使用(了解)

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

开发者学堂课程【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开始则为一个轮回。

 

二、开放封闭式原则

开放封闭式原则:

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

相关文章
|
25天前
|
Python
探索Python中的装饰器:从基础到高级
【10月更文挑战第11天】 在这篇文章中,我们将深入探讨Python装饰器的强大功能和灵活应用。装饰器是Python中一个非常有趣的特性,它允许我们修改或增强函数的行为,而无需直接修改函数本身的代码。通过使用装饰器,我们可以实现横切关注点(AOP)的编程范式,提高代码的可重用性和模块化。本文将介绍装饰器的基本概念、使用方法以及如何创建自定义装饰器。同时,我们还将探讨装饰器的一些高级用法,如带参数的装饰器、多层装饰器和偏函数装饰器等。
24 5
|
23天前
|
设计模式 数据安全/隐私保护 开发者
Python中的装饰器:从基础到高级应用
本文将深入探讨Python中一个极其强大且灵活的特性——装饰器。装饰器本质上是一个函数,它允许我们对另一个函数或类进行扩展,而无需永久性地修改它们。这一特性使得装饰器成为实现横切关注点(如日志记录、访问控制等)的理想工具。我们将从装饰器的基本概念入手,逐步讲解其工作原理,并通过一系列示例展示如何在实际项目中巧妙利用装饰器来提升代码的可维护性和可读性。最后,我们还将探索一些高级装饰器技巧,帮助你在编写Python程序时更加游刃有余。
|
25天前
|
缓存 测试技术 开发者
探索Python中的装饰器:从基础到高级应用
本文深入探讨了Python中装饰器的概念、作用及其在实际编程中的应用。装饰器是一种特殊类型的函数,它允许我们在不修改现有代码的情况下,增加或修改类或函数的行为。我们将从装饰器的基本定义开始,逐步讲解其工作原理,并通过实例展示如何创建和使用基本的装饰器。进一步地,本文还将介绍一些高级装饰器技术,包括带参数的装饰器、使用functools.wraps进行签名保全、以及如何在类中使用装饰器。最后,我们将探讨装饰器的实际应用案例,帮助读者更好地理解和运用这一强大的Python特性。
|
29天前
|
设计模式 缓存 Python
Python编程中的装饰器:从基础到高级应用
【10月更文挑战第7天】 本文深入探讨了Python中装饰器的使用,从基本概念到高级应用全面解析。通过具体示例,读者将能清晰理解装饰器的本质、实现方式及其在代码优化和功能增强中的重要作用。
13 0
|
2月前
|
缓存 开发者 Python
Python编程中的装饰器深入解析
【9月更文挑战第20天】本文将带领读者深入了解Python编程中一个强大且神秘的功能——装饰器。我们将从装饰器的基本概念出发,逐步探索它的工作原理、使用场景以及如何自定义装饰器。文章不仅会用通俗易懂的语言解释复杂的技术概念,还将通过实际代码示例展示装饰器的强大功能和灵活性。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开一扇通往更高效、更优雅代码编写的大门。
40 11
|
2月前
|
Python
掌握Python装饰器:从基础到高级应用
本文深入探讨了Python装饰器的用法,通过具体示例展示了如何定义和使用方法。同时,文章还涵盖了装饰器的高级应用,包括带参数的装饰器、类装饰器以及如何在标准库中使用装饰器。通过阅读这篇文章,读者将能够更好地理解和利用Python中的装饰器来提高代码的可重用性和可维护性。
|
4月前
|
Python
Python编程实战:利用闭包与装饰器优化日志记录功能
【7月更文挑战第7天】Python的闭包和装饰器简化了日志记录。通过定义如`log_decorator`的装饰器,可以在不修改原函数代码的情况下添加日志功能。当@log_decorator用于`add(x, y)`函数时,调用时自动记录日志。进一步,`timestamp_log_decorator`展示了如何创建特定功能的装饰器,如添加时间戳。这些技术减少了代码冗余,提高了代码的可维护性。
61 1
|
JavaScript 前端开发 编译器
StencilJs 学习之组件装饰器
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 现在让我们一起学习其中的装饰器部分。
103 0
|
6月前
22_自定义装饰器
22_自定义装饰器
114 0
下一篇
无影云桌面