kotlin函数还有,let和run,以及类似sh(和mathematica)的管道语法

PyTlin的Python项目详细描述


派特林

实现Kotlin函数alsolet和^{tt3}的模块$ 在Python中。此外,它还包括sh-like(和mathematica-like) 管道语法

Kotlin函数记录在 here

安装

pipinstallPyTlin

语法

fromPyTlinimportkk(obj).let(func).also(func)k.run(func)k(obj)|func1|func2|...k(obj)@func1@func2@...

这里所有表达式(除了k.run(func))都包装在类中 k要恢复obj,可以应用以下任一方法

k(obj).endk(obj)|'end'k(obj)|0k(obj)@'end'k(obj)@0

示例

fromPyTlinimportkclassPerson:def__init__(self,name,age):self.name=nameself.age=agedef__repr__(self):return'%s, %d'%(self.name,self.age)defincreaseAge(self):self.age=self.age+1defnameToUpperCase(self):self.name=self.name.upper()student=Person('Pete',18)print(student)#Pete, 18

name=k(student).let(lambdax:(print(x),x.name)[1])#Pete, 18print(name)#Pete

newstudent=k(student).also(lambdax:(x.increaseAge(),x.nameToUpperCase()))print(newstudent)#PETE, 19

运行

mood='sad'k.run(lambdamood='happy':print(mood))#happyprint(mood)#sad

管道

管道可以使用.let或管道运算符@ (与Mathematica相似,顺序相反)或|(与sh相似)

ops=k(4).let(lambdax:x*2).let(lambdax:x+3)print(ops)#11print(type(ops))#<class 'PyTlin.k'>print(ops.end)#11print(type(ops.end))#<class 'int'>print(ops.end==k(4)@(lambdax:x*2)@(lambdax:x+3)@'end')#Trueprint(ops.end==k(4)|(lambdax:x*2)|(lambdax:x+3)|0)#True

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

推荐PyPI第三方库


热门话题
hbm中的java异常。xml   java如何扩展JavaDoc5.0标准doclet?   java将所有非字母数字更改为+   java如何使用JSP从URL获取参数   把java学校的程序员变成C或C++程序员有多难?   java使用HTML获取表内容   java在JPanel中使用repaint()方法而不删除已绘制的内容   rest如何在Java中动态映射同一父类的子对象列表   如果协议不是http或https,java如何解析URL?   java删除文本时如何在eclipse中隐藏建议框?   java代码名1 GPS跟踪器   java寻找骑士所有独特的可能动作   从一个管道到另一个进程的java InputStream仍然被阻塞   java在阶段后将子项添加到窗格。show()   java如何确保在子对象中调用超级方法?   java从json对象获取值   java使用多线程读取文件   java Struts 1.1+Hibernate 3.2集成