异常处理,功能方式。

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第三方库


热门话题
如何在JavaEE中隔离用户会话?   java什么是CacheManager的替代方法。集合名(字符串名)   当am通过==运算符比较对象时,java sop命令未打印附加文本为什么?   java如何关闭一个gui的一个窗口,该窗口有两个打开的窗口,而不同时关闭这两个窗口?   java如何在socket回调中使用观察器?   java在自定义soap处理程序中是否有一种获得操作名的保证方法?   正则表达式Java解析字符串   java希望从其他方法检索RGB像素值,但无法检索   java如何在Android RecyclerView中循环浏览项目?   java tomcat 8上的主机中的软件中止了已建立的连接   java Apache CXF3。具有可靠消息传递的0.4 Soap web服务引发异常   Java与Hibernate数据库   使用put存储新的键值对时,现有键的java Hashmap值将被覆盖。如何预防?   并非所有unix shell的java命令都在运行   java根据元素的自然顺序对列表进行排序   基于值的java同步方法评估   java如何使用axis2 java2wsdl创建标头?   铸造如何阻止java舍入   java计数休眠和命名查询