- 不要那样做!;)
但如果你仍然想要,我建议你有一个中间类或函数为你处理这个:
伪代码:
def printTheNumber(num):
print num
def intermediatePrintTheNumber(input):
num_int_dict = {'one':1, "two":2 ....
if input.isstring():
printTheNumber(num_int_dict[input])
elif input.isint():
printTheNumber(input)
else:
print "Sorry Dave, I don't understand you"
如果这是pythonic
我不知道,但如果我必须这样做,我会如何解决它,当然还要对输入进行更多检查以认为它有效。
当谈到您的评论时,您提到语义相似性"one"
,即1
可能意味着相同的事情。
你问应该在哪里进行这种转换。
嗯,这取决于你的系统的设计,但我可以告诉你,它不应该在我调用的同一个函数中完成,printTheNumber
原因很简单,那就是这会给这个函数带来很多责任。
根据输入的复杂性,它可能是 the integer 1
or the string "1"
or,在更坏的情况下,"one"
甚至可能更糟"uno"|"one"|"yxi"|"ett" .. and so on
。这应该由仅具有该职责的函数处理,可能由处理映射的数据库来处理。
我会将其拆分,以便我有一个函数处理字符串“一”、“二”……等,一个处理整数,并有第三个函数检查输入以查看它是否可以转换为整数或不。
在我看来,如果您必须针对这种复杂性采取措施,则会警告设计存在fundamental
缺陷,但您似乎已经意识到这一点,所以我不会继续讨论。