跳转到主要内容

Python函数中的静态对象。

项目描述

statics

Python函数中的静态对象

这是一个微包,包含一个装饰器 @static,可用于将静态对象应用于Python函数。然后可以将这些对象加载到函数中的变量中,就像它们被给出时一样,而不使用全局变量或闭包。

这个工作原理可能比解释起来更容易展示

>>> from statics import static
>>>
>>> x = 1
>>>
>>> @static(x)
... def f():
...     x = "__static__"
...     print(f"{x=}")
...
>>> del x
>>>
>>> f()
x=1

可以声明并分配多个静态对象作为元组

>>> x, y, z = 1, 2, 3
>>>
>>> @static(x, y, z)
... def f():
...     x, y, z = "__static__"
...     print(f"{x=}, {y=}, {z=}")
...
>>> del x, y, z
>>>
>>> f()
x=1, y=2, z=3

函数中的静态名称不必与函数外的名称匹配

>>> x, y, z = 1, 2, 3
>>>
>>> @static(x, y, z)
... def f():
...     a, b, c = "__static__"
...     print(f"{a=}, {b=}, {c=}")
...
>>> del x, y, z
>>>
>>> f()
a=1, b=2, c=3

技术上,静态绑定是通过将对象存储在Python函数代码对象的co_const数组中实现的。通过将字符串字面量"__static__"替换为静态对象来加载变量。因此,"__static__"字符串不能在装饰函数的其他地方使用(但包含"__static__"子字符串的字符串不受影响)。

项目详情


下载文件

下载适合您的平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分布

statics-1.0.0.tar.gz (2.4 kB 查看哈希值)

上传时间:

构建分布

statics-1.0.0-py3-none-any.whl (2.9 kB 查看哈希值)

上传时间 Python 3

由以下机构支持