【发布时间】:2015-04-17 20:07:36
【问题描述】:
我正在用 python 编写一些软件,并且对 python 的首选编码风格有疑问。 想象一下,您有一个函数,它获取一些原始数据,将其解码为 dict 并打印键值对
def printdata(rawdata):
data = decode(rawdata)
for key, value in data.items():
print(key, value)
这一切都很好,直到decode 开始到处抛出异常并且整个程序崩溃了。因此,我们使用 try/catch 块。但是有几种方法可以做到这一点,我想知道哪种方法更受欢迎。
-
try里面的所有东西def printdata(rawdata): try: data = decode(rawdata) for key, value in data.items(): print(key, value) except ValueError: print("error") -
仅
decode内try和returndef printdata(rawdata): data = None try: data = decode(rawdata) except ValueError: print("error") return for key, value in data.items(): print(key, value) -
只有
decode在try和if内def printdata(rawdata): data = None try: data = decode(rawdata) except ValueError: print("error") if data is not None: for key, value in data.items(): print(key, value)
所有这些方法都有一些优点和缺点,我不知道该选择哪一种,以及它是否真的重要。
【问题讨论】:
-
虽然 1 不等于 2 或 3,但没关系。使用对您来说看起来不错并且具有您想要的逻辑的那个。捕获所有 ValueErrors 与仅从 decode() 捕获 ValueErrors 不同。
标签: python coding-style