一些Python属性

microp的Python项目详细描述


我的小宝藏Python糖果

Micropy是使用自动格式化的 yapf。在

好东西

dig()

CSS选择器类似于从几乎任何对象获取深度值。在

>>>frommicropyimportdig>>>dig.xget((1,2,3),1)2>>>dig.xget({'foo':'bar'},'foo')'bar'>>>dig.dig({'foo':1,'bar':[1,2,3]},'bar.1')2>>>dig.dig({'foo':1,'bar':[1,{'baz':'jox'},3]},'bar.1.baz')'jox'>>>

dig.dig()funcy.get_in()之间的区别在于 可以使用类似shell的blob模式来获取由相似的 姓名:

^{pr2}$

编程类创建

在模块定义中编程创建任意命名类, 使用装饰符号添加方法:

>>>frommicropyimportlang>>>mystuff=(('Foo',1),('Bar',2))>>>forname,numinmystuff:locals()[name]=lang.mkclass(name,**{'num':num})>>>Foo<class'micropy.lang.Foo'>>>>Foo.num1>>> \
...@Foo.classmethod...defmyclassmethod(cls,x):...returnx+1>>>Foo.myclassmethod(1)2>>>>>> \
...@Foo.staticmethod...defmystaticmethod(x,y):...returnx+y>>>Foo.mystaticmethod(1,2)3>>> \
...@Foo.method...defmymethod(self,x):...self.y=self.num+x...returnself.y>>>foo=Foo()>>>foo.mymethod(1)2>>>foo.y2>>>

带有开发人员便利工具的micropy模块

micropy.microscope模块包含有助于 发展。必须有方法检查带电物体:

  1. 通过“AbneuYAML”

    AbneuYAML是“几乎,但不是完全不同于YAML”。丢弃的对象 对“AbneuYAML”应该很容易得到对人类的视觉概述。在

    要转储任何对象:

    >>>frommicropyimportmicroscope>>>classCls:pass...>>>c=Cls()>>>c.foo,c.bar=1,2>>>c.sub=Cls()>>>c.sub.foo,c.sub.bar,c.sub.baz=3,4,[1,2]>>>encoded=microscope.abneuyaml(c)>>>print(encoded)#doctest: +ELLIPSIS<__main__.Clsobjectat0x...>:Clsfoo=1:intbar=2:intsub=<__main__.Clsobjectat0x...>:Clsfoo=3:intbar=4:intbaz=[1,2]:list>>>

一种使用Python操作符重载创建小型DSL的简单方法

>>>frommicropyimportlang>>> \
...classPipingExample(lang.Piping):...def__add__(self,value)->lang.Piping:...self.queue(lambdaa,b:a+b,value)...returnself...>>>simplest_pipe=PipingExample(10)>>>res=simplest_pipe+10+20>>>res()40>>>

通常,您需要使用管道操作符来定义simple 成分:

>>>frommicropyimportlang>>>incr=lambdax:x+1>>>showr="It is {}!".format>>>(lang.ComposePiping(5)>>incr>>incr>>showr)()'It is 7!'>>>

“按类型调用”便利对象

>>>frommicropyimportlang>>>foo=lang.Match({int:lambdax:x*100,str:lambdax:f'Hello {x}'})>>>foo(10)1000>>>foo('bar')'Hello bar'>>>

可缩小的集合

使用索引将集合缩小到更少的值。你可以缩小范围 类型、谓词函数或值相等。返回值总是 从初始值派生的新的Narrowable派生类型。因此,你 可以在同一表达式中链接多个缩小操作。在

缩小谓词引起的错误被视为未命中。在

一些例子:

按类型缩小

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3,'foo','bar'))[int](1,2,3)>>>

可调用范围缩小

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3))[lambdax:x>1](2,3)>>>>>>narrowable((1,2,3,'foo','bar'))[int](1,2,3)>>>narrowable((1,2,3,'foo','bar'))[lambdax:x>1](2,3)>>># Note, swallows ValueError raised by 'foo' > 1 etc>>>

禁止空iterable对象

>>>frommicropy.primitivesimportnarrowable>>>narrowable([[1],[2],[],[]])[lambdax:x[0]][[1],[2]]>>>

使用精确匹配缩小

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3,'foo'))['foo']('foo',)>>>

使用regexp

>>>frommicropy.primitivesimportnarrowable>>>importre>>>narrowable(('foo','fom','jox',8,'fim'))[re.compile('fo.*').match]('foo','fom')>>>

联合收割机

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3,'foo','bar'))[str]['foo']('foo',)>>>

深入一点

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3,(41,42,43)))[tuple][0][lambdax:x>41](42,43)>>>

未找到匹配项

如果没有匹配的元素,则集合参数的空版本将 返回:

>>>frommicropy.primitivesimportnarrowable>>>narrowable((1,2,3))[lambdax:x>3]()>>>

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

推荐PyPI第三方库


热门话题
在java代码中实现两个侦听器时发生swing错误   Lambda是否完全取消了Java8中匿名内部类的使用?   swing OpenSuse 12.3+Java双显示   POM中的java错误。xml文件,即使在清理{users}/之后。m2/用于*上次更新文件的存储库   JavaEDT特定的方法和其他东西   java如何使用GridLayout设置组件大小?有更好的办法吗?   java在itext7中生成二维码时,如何调整点的大小?   java如何在多行上显示文本并右对齐?   java在WebSphereCluString环境中分离Log4j日志   JAVA从文件读取,返回BigInteger值   当使用rxjava2进行排列时,使用javamockito。重试()   在java fasterxml中创建Xml   使用64位整数进行模运算的64位整数的java快速乘法,无溢出   java静态变量保留以前发布的值   datastax enterprise SSTable loader流式处理无法提供java。木卫一。IOException:对等方重置连接   java匹配的通配符是严格的,但找不到元素“mvc:annotationdriven”的声明。标准包装。可抛出   java无法在浏览器上下载文件文档?