modelx.cached#
- cached(space=None, name=None, is_cached=None, *funcs)#
用于从Python函数创建或更新单元格的装饰器。
注意
cached()
是defcells()
的别名。这个便捷函数作为装饰器,可直接从Python函数定义创建新单元格或更新现有单元格的公式。它替代了手动调用父空间上的
new_cells()
或set_formula()
的需求,也无需设置formula
属性。示例
1. 作为无参数的装饰器
以下代码在当前空间创建一个名为
foo
的单元格。 如果当前空间中已存在foo
,则更新其公式。如果当前空间不存在,将创建一个新空间。 如果当前模型不存在,也会创建一个新模型:
>>> import modelx as mx >>> @mx.defcells ... def foo(x): ... return x >>> foo <Cells Model1.Space1.foo(x)>
如果当前空间中已存在同名的单元格,则根据装饰函数更新其公式:
>>> bar = foo >>> @mx.defcells ... def foo(x): ... return 2 * x >>> foo is bar True
2. 作为带参数的装饰器
以下代码在指定空间中创建一个名为"bar"的未缓存单元格。 如果指定空间中已存在名为"bar"的单元格, 则更新其公式和
is_cached
属性:>>> space = mx.new_space("Foo") >>> @mx.defcells(space=space, name='bar', is_cached=False) ... def foo(x): ... return x >>> foo <Cells Model1.Foo.bar(x)> >>> foo.is_cached False
3. 作为函数
从多个函数定义创建多个单元格:
def foo(x): return x def bar(y): return foo(y) foo, bar = defcells(foo, bar)
- Parameters:
- Returns:
对于用法1和2,将返回新创建的单单元格。 对于用法3,将返回新创建的单元格列表。
另请参阅
在0.27.0版本中变更:
cached()
被引入作为别名。在0.27.0版本中变更:引入了
is_cached
参数。版本 0.1.0 变更:如果当前空间不存在,将创建一个新空间。 如果当前模型不存在,将创建一个新模型。
版本0.1.0变更:如果当前空间中已存在同名单元格,则基于装饰函数更新其公式。