装饰器高级使用(了解)

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

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

 

二、开放封闭式原则

开放封闭式原则:

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

相关文章
|
23天前
|
监控 Python
探索Python装饰器:优雅地增强函数功能
探索Python装饰器:优雅地增强函数功能
|
2月前
|
缓存 Serverless Python
python基础篇:什么是装饰器?装饰器有什么用?
python基础篇:什么是装饰器?装饰器有什么用?
30 4
python基础篇:什么是装饰器?装饰器有什么用?
|
2月前
|
缓存 开发者 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器是一种强大的工具,它允许开发者在不改变原始函数代码的情况下,动态地增强函数的功能。本文将介绍装饰器的基本概念、使用场景以及实际应用案例,帮助读者更好地理解和运用这一Python编程的利器。
|
2月前
|
缓存 Python
Python中的装饰器:优雅而强大的函数装饰技术
在Python编程中,装饰器是一种强大而灵活的技术,它可以使函数具有额外的功能,而不需要改变函数的核心代码。本文将深入探讨装饰器的原理、用法以及实际应用场景,帮助读者更好地理解和利用这一重要的Python编程工具。
|
2月前
22_自定义装饰器
22_自定义装饰器
85 0
|
2月前
|
Python
Python编程中的装饰器应用探索
【2月更文挑战第6天】本文将深入探讨Python编程中装饰器的应用,介绍装饰器的定义、作用以及实际应用场景,并结合示例代码详细阐释装饰器在函数、类等方面的灵活运用,帮助读者更好地理解和使用装饰器提升代码的可复用性和可维护性。
|
11月前
|
JavaScript 前端开发 编译器
StencilJs 学习之组件装饰器
Stencil 是一个生成 Web Components(更确切地说,是自定义元素)的编译器。Stencil 将最流行的框架的最佳概念结合到一个简单的构建时工具中。 现在让我们一起学习其中的装饰器部分。
71 0
|
2月前
|
数据安全/隐私保护 Python
解释装饰器(decorator)的功能和用法。
解释装饰器(decorator)的功能和用法。
|
Python
Python编程 装饰器
Python编程 装饰器
79 0