我已经使用Python几个月了,到目前为止我都喜欢它.我也喜欢通常采用单一的"Pythonic"方法来处理常见的编程问题.
在我编写的代码中,当我调用网络函数并且必须处理异常时,我一直在运行这个我最终编写的类型模板:
proxyTest = None
try:
proxyTest = isProxyWorking(proxy)
except TimeoutError:
break
if proxyTest:
...
Run Code Online (Sandbox Code Playgroud)
这是我声明proxyTest的方式,以便在我需要使用它时它在范围内,同时还调用将在适当的异常处理结构内返回值的函数.如果我在try块中声明proxyTest,它将超出我的程序的其余部分.
我觉得必须有更优雅的方式来处理这个,但我不确定.有什么建议?
你有几个更好的选择,在else块中继续你的流量控制:
try:
proxyTest = isProxyWorking(proxy)
except TimeoutError:
break
else:
#proxyTest is guaranteed to be bound here
Run Code Online (Sandbox Code Playgroud)
或者处理except块中的失败案例.
try:
proxyTest = isProxyWorking(proxy)
except TimeoutError:
proxyTest = None
#proxyTest is guaranteed to be bound here
Run Code Online (Sandbox Code Playgroud)
我认为,无论哪个更好取决于背景.
显而易见的替代方案是在except块中执行'false'初始化:
try:
proxyTest = isProxyWorking(proxy)
except TimeoutError:
proxyTest = None
Run Code Online (Sandbox Code Playgroud)
这是否比你的构造更容易/更合适取决于逻辑在中间的复杂程度.
| 归档时间: |
|
| 查看次数: |
61 次 |
| 最近记录: |