python中的模式匹配

matchstick的Python项目详细描述


https://img.shields.io/circleci/project/github/brettbeatty/hand_grenade.svghttps://img.shields.io/github/license/brettbeatty/hand_grenade.svghttps://img.shields.io/codecov/c/github/brettbeatty/hand_grenade.svghttps://img.shields.io/pypi/v/hand_grenade.svg

matchstick提供了一个允许python函数重载的decorator。

>>>frommatchstickimportwhen>>>@when('x >= 0')...deff(x):...returnx...>>>@when('x < 0')...deff(x):...return-x...>>>f(3)3>>>f(-2)2>>>f('a')'a'

基本用途

条件

match decorator将条件作为字符串。调用修饰函数时,将按定义顺序检查重载函数(按模块和限定名分组)。使用传递给函数的参数(包括默认参数值,如果适用)计算每个条件。如果条件计算truthy,则调用相应的函数。如果条件计算错误或引发异常,则传递相应的函数。

>>>@when('x[2] == 5')...deff(x):...returnsum(x)...>>>@when('len(x) > 3')...deff(x):...returnx[3:]...>>>@when('True')...deff(x):...returnx...>>>f([3,4,5,6])18>>>f([0,1,2,3])[3]>>>f('abcd')'d'>>>f({}){}

Nomatchexception

如果函数的条件都不求值truthy,则会引发matchstick.nomatchexception

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

推荐PyPI第三方库


热门话题
java使用无循环和乘法的递归调用查找值   java字符串大小冲突   在一组Java文件对象中查找唯一的超级目录   没有Eclipse控制台输出窗口(Java)?   java这怎么等于105而不是15?   java Adempiere列调出,用于不处理从(代码)选项导入和创建行的字段   java tomcat、2个webapps、2个log4js,但这两个应用都记录到一个文件中   lambda理解Java谓词   HotspotFX上的Java EOF问题   java google应用程序引擎:如何向连接/断开通道“ping”添加信息?   java如何使用VTDXML获取一个元素的所有名称空间声明?   java如何使用drawLine()获得一条线以随机方向拍摄?   java transactionManager应该使用哪个SessionFactory?   java在安卓上播放声音   在Mac上使用JBDC对SQL Server进行java Windows身份验证   java基本列表和字符串[]   java NamedParameterJdbcTemplate从中选择*   扩展上的java Android可扩展列表视图   使用ApacheAxis2的java SOAP附件