百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Python 中的装饰器、性能分析器、密码和作用域

off999 2024-09-20 22:52 65 浏览 0 评论


装饰器

在 Python 中,装饰器是一个函数,它接受另一个函数作为输入,并在不更改原始函数代码的情况下扩展或更改它。装饰器用于干净、重复地向函数或方法(如访问控制、记忆或日志记录)添加功能。“@”语法通常用于将它们应用于函数或方法。

如何在 Python 中创建装饰器?

在 Python 中,必须先创建一个外部函数,该函数接受函数作为参数,然后再创建装饰器函数。装饰功能也被内部功能所包围。基本 Python 装饰器的语法如下:

def my_decorator_func(func):
    def wrapper_func():
        # Do something before the function
        func()
        # Do something after the function
    return wrapper_func

此示例中接受函数参数的装饰器函数称为 my_decorator_func。围绕装饰功能的功能是内部功能,wrapper_func。在调用修饰函数之前和之后,wrapper_func函数具有可以执行的多个操作。

装饰器示例

代码片段是 Python 中向函数添加计时器的装饰器示例。

import time

def timer_decorator(func):
    def wrapper():
        start_time = time.time()
        func()
        end_time = time.time()
        print(f"Time taken: {end_time - start_time} seconds")
    return wrapper

@timer_decorator
def my_function():
    time.sleep(2)
    print("Function executed")

my_function()

Output:
Function executed
Time taken: 2.002316951751709 seconds

在本例中,接受函数参数 func 的装饰器是timer_decorator函数。包装修饰函数的函数称为包装函数。装饰器使用 @timer_decorator 语法应用于 my_function 函数。调用timer_decorator时应用于my_function,并显示函数的执行时间。

性能分析器

性能分析器是用于通过测量在代码的各个部分所花费的时间来分析程序性能的工具。它们有助于识别性能瓶颈和内存泄漏,并优化代码。在 Python 中,标准库提供了两个分析接口: cProfileprofile docs.python.org。

有不同类型的性能分析器,包括确定性分析器和统计分析器。确定性分析器提供精确的测量值,但它们可能会引入开销并影响结果的准确性。另一方面,统计分析器以较少的开销 stackify.com 提供近似测量值。

下面是一个示例,用于 cProfile 演示探查器在 Python 中的用法:

import cProfile

def slow_function():
    time.sleep(2)

def function_to_profile():
    result = slow_function()
    print(f"Result: {result}")

cProfile.run('function_to_profile()', 'profile_output')

Output:
Result: None

在此示例中,定义了一个 function_to_profile 调用 slow_function .然后,我们用来 cProfile.run 分析变量的 function_to_profile 执行并将输出存储在变量 profile_output 中。要分析分析结果,可以使用以下 pstats 模块:

import pstats

stats = pstats.Stats('profile_output')
stats.strip_dirs().sort_stats('cumulative').print_stats()

这将打印在每个函数中花费的累积时间,按 machinelearningmastery.com 花费的总时间的降序排序。

需要注意的是,Python 的内置探查器仅提供时间统计信息,而不提供内存使用情况统计信息。对于内存分析,可以使用 objgraph 和 stackify.com 等 pympler 库。

密码学和加密

数据的机密性、完整性和有效性都受到加密过程的保护,加密过程将明文数据转换为密文。在对手存在的情况下对通信和数据安全的研究和实践被称为密码学。使用数学过程对数据进行加密和解密,保证只有目标受众才能访问 pypi.org 的信息。

在 Python 中,有几个用于加密的包,例如 cryptographypycrypto .

Python 开发人员可以在加密包中找到加密配方和基元。它渴望充当“加密标准库”,包括流行加密方法的高级配方和低级接口,包括对称密码、消息摘要和密钥派生函数 pypi.org、github.com。

下面是使用 cryptography 包进行对称加密的示例:

from cryptography.fernet import Fernet

# Generate a key and store it securely
key = Fernet.generate_key()
f = Fernet(key)

# Encrypt a message
token = f.encrypt(b"A really secret message. Not for prying eyes.")

# Decrypt the message
decrypted_message = f.decrypt(token)

pycrypto 软件包也称为 Python 加密工具包,为安全管理工具、守护程序、服务器等提供加密模块。它包括一个易于使用的随机数生成器和 Python 标准 random 模块 pypi.org 的更强大版本。

下面是一个使用 Crypto 包生成随机数的示例:

from Crypto import Random

rndfile = Random.new()
random_bytes = rndfile.read(16)

from Crypto.Random import random

random_choice = random.choice(['dogs', 'cats', 'bears'])

任何随机选择都是使用此处的 Crypto 包生成的。

Python 中的描述符

Python 中的描述符是一种使用对象作为引用来管理不同类属性的机制。它们用于实现 getter、setter 和 deleter ( __get____set__ , 和 __delete__ ) 等方法,以通过特殊处理(如验证或访问控制)调整属性值。描述符是属性、方法、静态方法、类方法和 super() 函数 geeksforgeeks.org 的基础。

下面是验证和设置属性值的描述符示例:

class PositiveNumber:
    def __get__(self, instance, owner):
        return instance.__dict__[self.name]

    def __set__(self, instance, value):
        if value < 0:
            raise ValueError("Value must be positive")
        instance.__dict__[self.name] = value

    def __set_name__(self, owner, name):
        self.name = name

class MyClass:
    number = PositiveNumber()

obj = MyClass()
obj.number = 42  # This works fine
obj.number = -184  # This will raise a ValueError

在此示例中,我们定义一个 PositiveNumber 实现 、 __set____set_name__ 方法的描述 __get__ 符类。该 MyClass 类具有使用描述符的 PositiveNumber 属性 number 。当我们尝试为 设置一个 number 正值时,它工作正常,但是当我们尝试设置一个负值时,它会引发一个 ValueError .

描述符在以下情况下非常有用:您希望在多个属性或类之间共享通用行为,或者当您想要对 realpython.com 的属性强制执行验证、访问控制或其他处理时。

Python 中的作用域

Python 中的作用域决定了代码中变量和名称的可见性和可访问性。Python 中有四种类型的作用域:本地、封闭、全局和内置 (LEGB) pythonforbeginners.com、realpython.com。

  1. 局部作用域:在函数中定义的变量具有局部作用域,并且只能在该函数中访问。
  2. 封闭作用域:在嵌套函数的情况下,外部函数具有可由内部函数访问的封闭作用域。
  3. 全局作用域:在模块级别定义的变量具有全局作用域,可以从模块内的任何位置访问。
  4. 内置作用域:在内置命名空间中定义的名称(如内置函数和异常)具有内置作用域,可以在代码中的任何位置访问,而无需导入任何内容。

下面是一个示例来演示范围的概念:

x = 10  # Global scope

def outer_function():
    y = 20  # Enclosing scope

    def inner_function():
        z = 30  # Local scope
        print(x, y, z)

    inner_function()

outer_function()

在此示例中,位于全局范围中, y 位于 outer_function 的封闭范围内, x 并且 z 位于 的 inner_function 局部范围内。调用时 inner_function ,它可以访问所有这些变量并打印其值。

作用域用于管理变量的可访问性和可见性,避免名称冲突,并帮助维护干净有序的代码库 programiz.com。

相关推荐

安全教育登录入口平台(安全教育登录入口平台官网)

122交通安全教育怎么登录:122交通网的注册方法是首先登录网址http://www.122.cn/,接着打开网页后,点击右上角的“个人登录”;其次进入邮箱注册,然后进入到注册页面,输入相关信息即可完...

大鱼吃小鱼经典版(大鱼吃小鱼经典版(经典版)官方版)

大鱼吃小鱼小鱼吃虾是于谦跟郭麒麟的《我的棒儿呢?》郭德纲说于思洋郭麒麟作诗的相声,最后郭麒麟做了一首,师傅躺在师母身上大鱼吃小鱼小鱼吃虾虾吃水水落石出师傅压师娘师娘压床床压地地动山摇。...

谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
  • 谷歌地球下载高清卫星地图(谷歌地球地图下载器)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)
哪个软件可以免费pdf转ppt(免费的pdf转ppt软件哪个好)

要想将ppt免费转换为pdf的话,我们建议大家可以下一个那个wps,如果你是会员的话,可以注册为会员,这样的话,在wps里面的话,就可以免费将ppt呢转换为pdfpdf之后呢,我们就可以直接使用,不需要去直接不需要去另外保存,为什么格式转...

2026-02-04 09:03 off999

电信宽带测速官网入口(电信宽带测速官网入口app)

这个网站看看http://www.swok.cn/pcindex.jsp1.登录中国电信网上营业厅,宽带光纤,贴心服务,宽带测速2.下载第三方软件,如360等。进行在线测速进行宽带测速时,尽...

植物大战僵尸95版手机下载(植物大战僵尸95 版下载)

1可以在应用商店或者游戏平台上下载植物大战僵尸95版手机游戏。2下载教程:打开应用商店或者游戏平台,搜索“植物大战僵尸95版”,找到游戏后点击下载按钮,等待下载完成即可安装并开始游戏。3注意:确...

免费下载ppt成品的网站(ppt成品免费下载的网站有哪些)

1、Chuangkit(chuangkit.com)直达地址:chuangkit.com2、Woodo幻灯片(woodo.cn)直达链接:woodo.cn3、OfficePlus(officeplu...

2025世界杯赛程表(2025世界杯在哪个国家)

2022年卡塔尔世界杯赛程公布,全部比赛在卡塔尔境内8座球场举行,2022年,决赛阶段球队全部确定。揭幕战于当地时间11月20日19时进行,由东道主卡塔尔对阵厄瓜多尔,决赛于当地时间12月18日...

下载搜狐视频电视剧(搜狐电视剧下载安装)

搜狐视频APP下载好的视频想要导出到手机相册里方法如下1、打开手机搜狐视频软件,进入搜狐视频后我们点击右上角的“查找”,找到自已喜欢的视频。2、在“浏览器页面搜索”窗口中,输入要下载的视频的名称,然后...

pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
  • pubg免费下载入口(pubg下载入口官方正版)
永久免费听歌网站(丫丫音乐网)

可以到《我爱音乐网》《好听音乐网》《一听音乐网》《YYMP3音乐网》还可以到《九天音乐网》永久免费听歌软件有酷狗音乐和天猫精灵,以前要跳舞经常要下载舞曲,我从QQ上找不到舞曲下载就从酷狗音乐上找,大多...

音乐格式转换mp3软件(音乐格式转换器免费版)

有两种方法:方法一在手机上操作:1、进入手机中的文件管理。2、在其中选择“音乐”,将显示出手机中的全部音乐。3、点击“全选”,选中所有音乐文件。4、点击屏幕右下方的省略号图标,在弹出菜单中选择“...

电子书txt下载(免费的最全的小说阅读器)

1.Z-library里面收录了近千万本电子书籍,需求量大。2.苦瓜书盘没有广告,不需要账号注册,使用起来非常简单,直接搜索预览下载即可。3.鸠摩搜书整体风格简洁清晰,书籍资源丰富。4.亚马逊图书书籍...

最好免费观看高清电影(播放免费的最好看的电影)

在目前的网上选择中,IMDb(互联网电影数据库)被认为是最全的电影网站之一。这个网站提供了各种类型的电影和电视节目的海量信息,包括剧情介绍、演员表、评价、评论等。其还提供了有关电影制作背后的详细信息,...

孤单枪手2简体中文版(孤单枪手2简体中文版官方下载)

要将《孤胆枪手2》游戏的征兵秘籍切换为中文,您可以按照以下步骤进行操作:首先,打开游戏设置选项,通常可以在游戏主菜单或游戏内部找到。然后,寻找语言选项或界面选项,点击进入。在语言选项中,选择中文作为游...

取消回复欢迎 发表评论: