有些电池Python没有管道操作符、d语言风格范围等等

coppertop的Python项目详细描述


铜头

coppertop包有两个关键特性,一个管道操作器(带过载)和D 语言风格范围。我发现这些对于以管道样式编写代码非常有用(例如。 功能性方式)。在

了解 codebase是启动你最喜欢的调试器(例如PyCharm)并直接进入 以下内容:

pipeable
{coppertin测试概述_管道.py在

范围

  1. coppertop/示例/count_行_jsp.py文件和coppertop/examples/tests/test_count_行_jsp.py文件 解决https://en.wikipedia.org/wiki/Jackson_structured_programming中描述的jsp问题

  2. coppertop/示例/格式_日历.py和coppertop/examples/tests/test_格式_日历.py 解决https://wiki.dlang.org/Component_programming_with_ranges中描述的日历打印问题

管道

Pipeable修饰符使用“>>和”<;<;运算符扩展函数,效果如下 添加类似管道的行为(例如,类似于F中的|>;)。在

x>;f和f>;x都回答f(x)
x<;<;f调用f(x)并回答x
f<;<;x调用f(x)并回答f

或相当于,
lhs>;>rhs答案f(x)
lhs<;<;rhs调用f(x)并回答lhs

示例:

from coppertop import Pipeable

@Pipeable
def Each(xs, f):
    return [f(x) for x in xs]

@Pipeable
def Chain(seed, xs, f):
    prior = seed
    for x in xs:
        prior = f(prior, x)
    return prior

@Pipeable
def SquareIt(x):
    return x * x

@Pipeable
def Add(x, y):
    return x + y


actual = [1,2,3] >> Each >> SquareIt >> Chain(seed=0) >> Add
expected = 14
assert actual == expected

另外,使用可管道修饰的函数可以很容易地 例如,通过提供一些论据而变得片面 Chain(seed=0)在上面的代码中。参数序列是kdb样式 而不是F#style,即,>;>不会更改()的优先级。在

过载

Pipeable修饰符还允许按类型重载函数。在

^{pr2}$

范围

使用D样式范围类似于使用非反应式编程 拉式DAG。调试一个明显简单的序列,比如

def test_checkNumberOfDaysInEachMonth():
    2020 >> DatesInYear \
        >> MonthChunks \
        >> Materialise >> Each >> Len \
        >> AssertEqual >> [31,29,31,30,31,30,31,31,30,31,30,31]

类似于DAG调试,因为您需要在许多地方有断点 代码很难理解。在

然而,D中的范围实现有一个关键的补偿特性。在

输入和输出类型不像在典型的DAG实现中那样是固定的 所以每个范围都更容易单独测试和推理。因此他们可以 在较长的管道中更容易组装,并且具有更高的可信度。在

次要特征

在铜版时间-不允许观察的时间类型 要抽象的上下文(即通常的tz或location)。在

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

推荐PyPI第三方库


热门话题
java访问私有字段而不使用getter方法?   使用PowerMockito在JavaEWSAPI中模拟测试拉订阅   启动活动时未保存java首选项并清除变量   java如何在servlet中检索子域?斯普林有帮手吗   java使用Docker从命令行构建Android项目   java Android,ActionBar后退按钮(setDisplayHomeAsUpEnabled(true))重新创建父活动   java在重用FileOutputStream时应该关闭流吗?   java使用RESTAPI将文件上载到s3 bucket   Java SOAP Web服务应用程序中的mysql用户登录方法不工作   java使用多个数字计算百分比并转换为长   java Android SQLiteDatabase查询忽略空格   java如何在Javafx中比较两个字段文本   java错误:未设置java_HOME,在Eclipse安装后找不到   java在安卓中保存对象   java如何使用jaxws从返回List<Object>的服务中检索值   java Google OAuth2 JWT令牌验证异常   SpringMVC中的JavaUTF8编码问题,当从JSP表单发送POST请求中的越南语信件时   java从webview重定向到安卓应用程序   JUnit 5中多个扩展的java顺序