用于配置文件的小型资源管理器

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 *)。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
swing Java按钮/网格布局   java列出Google日历中的所有事件   java无效:单击API publisher test按钮后连接到后端时出错   带有内部赋值的java While循环导致checkstyle错误   java为什么trimToSize/ensureCapacity方法提供“公共”级访问?   文件输出流的java问题   ListIterator和并发修改异常的java问题   java如何使用两个URL映射   无法识别使用“./../”构造的字符串java相对路径,为什么?   首次写入remotelyclosedsocket不会触发异常,对吗?JAVA   java OneDrive REST API为文件上载提供了400个无效谓词   Java泛型、集合接口和对象类的问题   OpenSSL Java安全提供程序   jmeter java运行jmx禁用操作