我正在开发一个翻译器,我想将拉丁文字转换成其他文字。 我认为最简单的方法是用我的字母和翻译该字母的公式建立一本字典。
但是现在当我运行程序时,它总是读取并执行字典中的所有公式,而无需我显式调用它们。
有没有简单的方法可以阻止这种情况?
示例:
现在的代码是:
# I have my formula definitions here
def a(i):
print("a")
def b(i):
print("b")
def c(i):
print("c")
# Then the dictionary here
abc = {"a": a(0), "b": b(0), "c": c(0)}
# Now I want to call a letter
abc["b"]
我想要的结果是
b
我得到的结果是 A 乙
解决这个问题的一种方法是使用
yield
,尽管我会警告你我不确定这是否是最干净或最好的方法。这个解决方案看起来像:
def a(i):
while True:
yield print("a")
def b(i):
while True:
yield print("b")
def c(i):
while True:
yield print("c")
abc = {"a": a(0), "b": b(0), "c": c(0)}
使用这种技术,您可以在需要打印值时调用 next(abc['b']) 。例如:
>>> next(abc['b'])
b
>>> next(abc['a'])
a