异常处理,功能方式。

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变量列表数(ArrayList)作为方法的参数   Elasticsearch(Java)集成测试   java Spring MVC HandlerInterceptorAdapter   将springboot应用程序作为war文件部署在专用tomcat上的java不起作用   java在ArrayList中添加双精度的问题   mysql Apache Solr java教程   java分区字节数组到队列的相等字节数组   java使用方法toString()打印对象   从JMS队列中获取java批处理   如何在Java中获取SWT字体族名称?   java Spring引导2随机500和400错误   java从不在windows上工作的资源加载映像   java是一个正则表达式,它只匹配不包含数字和字母的单词