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

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 JScrollBar设计   java如何按名称显示输出   java如何将多个ArrayList连接成一个?   java存储SSLSocketFactory为静态字段   java获得了奇怪的csv文件时间输出   java类在JSP中没有该属性   java ehcache程序未运行   java如何对数组的所有元素应用或操作?   sqlite如何用Java编写adb shell命令   java泛型中的动态数据类型   javajaxrs@Path阻止加载静态资源   java如何在安卓中从主字符串中获取特定字符串?   java与FLAG_LAYOUT_NO_LIMITS相反   关于OpenJDK 11和OpenJFX 11(&Proguard)的java迁移问题   eclipse设置Selenium for Java(创建Firefox驱动程序所需的JAR和导入)   java如何将空字符串更新为oracle Clob   对象为什么在Java中同时重写equals()和hashCode()?   java从另一个类获取变量的正确方法