库提供了与Java可选的类似的可选对象。使用这个对象,您永远不会检查“如果x是none”

pyOptional的Python项目详细描述


说明

库提供了类似于Java optional的实现可选对象。 使用此对象,您将永远不会检查if x is None

安装

pip install pyOptional

用法

示例

frompyOptionalimportOptionaloptional_with_value=Optional('ABC')optional_empty=Optional(None)print(optional_with_value)print(optional_empty)

输出:

Optional of: ABC
Optional empty

方法:

获取()

返回值或抛出NoneValueErrorexception on on empty optional

print(optional_with_value.get())print(optional_empty.get())

输出

ABC
Traceback (most recent call last):
...
pyOptional.exceptions.NoneValueError: Called get on empty optional

获取或其他(默认值)

返回值,如果存在或默认值为空

print(optional_with_value.get_or_else('XYZ'))print(optional_empty.get_or_else('XYZ'))

输出

ABC
XYZ

获取或其他获取(可调用的生成默认值)

返回值,如果存在,否则结果为 callable_for_generate_default_value

defgen_value():return'QWERTY'print(optional_with_value.get_or_else_get(gen_value))print(optional_empty.get_or_else_get(gen_value))print(optional_empty.get_or_else_get(lambda:'From lambda'))

输出

ABC
QWERTY
From lambda

GETIORYORUP(异常类,*ARGs,**KWARGS)返回值,如果存在,或提供异常提供< /H4>
print(optional_with_value.get_or_raise(FileNotFoundError,'Some message'))print(optional_empty.get_or_raise(FileNotFoundError,'Some message'))

输出

ABC
Traceback (most recent call last):
...
FileNotFoundError: Some message

映射(可调用的转换值)

返回其他值的可选值(结果由返回 callable_to_transform_value)或可选空(如果源可选) 是空的

print(optional_with_value.map(lambdaval:val*2))print(optional_empty.map(lambdaval:val*2))

输出

Optional of: ABCABC
Optional empty

平面映射(可调用的转换值)

类似于map,但是如果source optional包含另一个optionals, 结果将包含单个可选项

nested_val_optional=Optional(Optional(Optional(8)))nested_empty_optional=Optional(Optional(Optional(None)))print(nested_val_optional.map(lambdaval:val*3))print('---------------------')print(nested_empty_optional.map(lambdaval:val*3))print('---------------------')print(nested_val_optional.flat_map(lambdaval:val*3))print('---------------------')print(nested_empty_optional.flat_map(lambdaval:val*3))

输出

Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for *: 'Optional' and 'int'
---------------------
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for *: 'Optional' and 'int'
---------------------
Optional of: 24
---------------------
Optional empty

如果存在(func)

如果存在,调用FUNC并提供可选值。如果可选为空,则执行 没有什么。

optional_with_value.if_present(lambdaval:print('found value '+val))optional_empty.if_present(lambdaval:print('found value '+val))

输出

found value ABC

是否存在()

如果可选不为空,则返回true,否则返回false

print(optional_with_value.is_present())print(optional_empty.is_present())

输出

True
False

静态方法:

empty()

返回空的可选值

print(Optional.empty())

输出

Optional empty

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

推荐PyPI第三方库


热门话题
java如何在Android Wifi中筛选相同的SSID?   Java中重写接口中异常处理的泛型   java“无效转义序列(有效的是\b\t\n\f\r\”\“\”\)”语法错误   使用JNDI的java NameReadyBoundException   java如何在这个程序上执行算法   java为什么我的应用程序在调试时崩溃而应用程序停止?   Java:while循环未检测到中断条件,但如果块检测到   java如何快速使用jfreechart创建的折线图   java将输入放入JSTL会话变量,以便稍后在屏幕上显示   java在spring boot中加载外部JAR   java Apache NiFi无法使用ojdbc6连接到Oracle 12c。jar或ojdbc8。罐子   java解释StringToWordVector()Weka的输出   java charAt()找不到符号   使用mpjexpress的java阅读控制台输入