一些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模块包含有助于 发展。必须有方法检查带电物体:
通过“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]()>>>
- 项目
标签: