异常处理,功能方式。

tryingsnake的Python项目详细描述


尝试蛇

Build StatusCoverage StatusCodacyCode ClimatePyPI versionLicense MIT

一个简单的,Try实现,灵感来自 scala.util.Try

示例

  • 用参数包装函数:

    >>>fromtryingsnakeimportTry,Try_,Success,Failure>>>fromoperatorimportadd,truediv>>>Try(add,0,1)Success(1)>>>Try(truediv,1,0)# doctest:+ELLIPSISFailure(ZeroDivisionError(...))
  • 避免哨兵值:

    >>>defmean_1(xs):...try:...returnsum(xs)/len(xs)...exceptZeroDivisionErrorase:...returnfloat("inf")# What does it mean?>>>mean_1([])inf

    >>>defmean_2(xs):...returnsum(xs)/len(xs)>>>Try(mean_2,[])# doctest:+ELLIPSISFailure(ZeroDivisionError(...))>>>Try(mean_2,["foo","bar"])# doctest:+ELLIPSISFailure(TypeError(...))
  • 沿着快乐的道路走:

    >>>definc(x):returnx+1>>>definv(x):return1./x>>>Success(1).map(inc).map(inv)Success(0.5)>>>Failure(Exception("e")).map(inc).map(inv)Failure(Exception('e',))>>>Success(-1).map(inc).map(inv)# doctest:+ELLIPSISFailure(ZeroDivisionError(...))
  • 恢复:

    >>>defget(url):...if"mirror"inurl:...raiseIOError("No address associated with hostname")...returnurl>>>mirrors=["http://mirror1.example.com","http://example.com"]>>>Try(get,mirrors[0]).recover(lambda_:get(mirrors[1]))Success('http://example.com')
  • 让他们失败:

    >>>fromoperatorimportgetitem>>>Try(getitem,[],0)Failure(IndexError('list index out of range',))>>>Try_.set_unhandled([IndexError])>>>Try(getitem,[],0)Traceback(mostrecentcalllast):...IndexError:listindexoutofrange
  • 使事情(相对)简单

    >>>importmath>>>xs=[1.0,0.0,"-1",-3,2,1+2j]>>>sqrts=[Try(math.sqrt,x)forxinxs]>>>[x.get()forxinsqrtsifx.isSuccess][1.0,0.0,1.4142135623730951]>>>defget_etype(e):...returnTry(lambdax:type(x).__name__,e)>>>[x.recoverWith(get_etype).get()forxinsqrtsifx.isFailure]['TypeError','ValueError','TypeError']

安装

pip install tryingsnake

easy_install tryingsnake

许可证

麻省理工学院,看 LICENSE

常见问题解答

  • 问:这个项目生产准备好了吗?
  • A:不,可能不会。
  • 问:为什么推荐使用mixedcase方法名而不是小写 佩普8?
  • 答:主要是为了使python和scala代码之间的切换变得轻松愉快。 尽可能的。

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

推荐PyPI第三方库


热门话题
java找不到当前线程的会话   同步Java同步方法调用非同步方法   这段代码的java时间复杂度是如何列出一个集合的所有子集的?   java Jetty SslConnectionFactory nextProtocol   为什么在java集合中使用游标而不是for循环   java如何对长函数进行单元测试?   如何从java中的文本输入创建数组   java工具栏内容未显示,尽管出现了片段内容   java MediaPlayer无法处理本地文件   java在多次读取时,从TCP服务器读取的数据将挂起   java组织。springframework。数据领域无法将PageImpl强制转换为   java如何使用@WithMockUser并从属性文件中传递用户名和密码?   JavaSpringBootGradle插件2。x如何使用自定义启动器布局工厂   sockets Java客户端和服务器之间使用字符串等进行通信的“行业标准”方法是什么   java变量引用不存在的资源:${project\u loc:project\u name}   搜索如何返回LDAP Java中所有用户的特定属性?   JDK1.8.016x的java密钥斗篷代理问题   spring如何使用Java中的Exchange获取邮件   java Kotlin+Dagger 2:Dagger*文件不会生成   如何在传入的double上执行操作,然后在Java中返回