只有Mimic C#
在C#中,有两个不同的函数处理标量值的解析:
Float.Parse()Float.TryParse()
float.parse():
def parse(string):
try:
return float(string)
except Exception:
throw TypeError
注意:如果您想知道为什么我将异常更改为TypeError,请参阅以下文档。
float.try_parse():
def try_parse(string, fail=None):
try:
return float(string)
except Exception:
return fail;
注意:您不希望返回布尔值“False”,因为这仍然是一个值类型。没有更好的,因为它表明失败。当然,如果您想要一些不同的东西,可以将fail参数更改为您想要的任何值。
要扩展float以包含“parse()”和“try_parse()”,您需要对“float”类进行monkeypatch以添加这些方法。
如果你想尊重已有的函数,代码应该是这样的:
def monkey_patch():
if(!hasattr(float, 'parse')):
float.parse = parse
if(!hasattr(float, 'try_parse')):
float.try_parse = try_parse
侧注:我个人更喜欢称之为“猴子打拳”,因为我这样做时感觉就像在滥用语言,但YMMV除外。
用法:
float.parse('giggity') // throws TypeException
float.parse('54.3') // returns the scalar value 54.3
float.tryParse('twank') // returns None
float.tryParse('32.2') // returns the scalar value 32.2
伟大的蟒蛇圣人对罗马教廷夏皮索斯说:“你能做的任何事,我都能做得更好;我能做得比你更好。”