用于配置文件的小型资源管理器
resource-manager的Python项目详细描述
此存储库包含一个用于在 python语法的子集。它旨在结合python的美丽 语法,延迟初始化和更简单的导入机制。
功能概述
惰性范围
配置文件中的作用域是惰性的,这意味着将计算任何声明的值 只有在被要求的时候。这允许用户在一个 配置。
由于作用域是惰性的,因此以下代码不明确:
# which value to use?x=1x=2
为了避免歧义,每个名称只能在配置中使用一次。因此有些 不支持语法结构(例如for循环)。
声明
只支持三个python语句:值定义、函数定义和导入。
值定义
值是使用=运算符声明的,后跟任何有效的python表达式。
下面是一些示例:
file_path="/some/path"num_folds=5kernel_sizes=[3,3,5]some_value=apply_to_input(lambdax:x**2)odd_squares=[i**2foriinrange(10)ifi%2==1]
功能定义
您可以在配置中定义函数,但是它们的本地作用域也是惰性的,因此 约束成立。
函数体由多个值或函数定义或断言组成,后跟一个返回语句:
defnormalize(x,y,z):length=sqrt(x**2+y**2+z**2)assertlength>0returnx/length,y/length,z/lengthdefadder(f):defwrapper(x):returnf(x)+1returnwrapper@adderdeff(x):returnxdefcheck_call(seq):assertseq,seqreturnf(seq[0])
即使作用域是惰性的,所有断言都会被求值(就在return语句之前)。
导入
您可以像在普通python中一样从配置文件中的其他库导入:
fromnumpyimportprodasproductfromnumpyimportsum,randomimportpandasaspdimporttqdmimportmath.radians
您还可以从配置文件导入,该文件位于相对于主配置的位置(在 案例来自./some_config.config、./folder/dataset.config和../upper/another.config):
from.some_configimport*from..upper.anotherimport*from.folder.datasetimportDataSetasD
注意,只有从另一个配置导入时,才能使用星号导入(例如from a import *)。