|
1
91
有没有能说明性能差异的长凳? 是你的朋友
|
|
|
2
85
|
|
|
3
29
还有第三种选择,通常更好:
优势:
需要注意的一件事是,如果你关心
|
|
|
4
19
我几乎总是使用
有问题的情况是当一个类重写
这一重大错误就这样消失了。这是
fixed in Python 3.2
(
issue9666
)在哪里
|
|
|
5
13
我认为这取决于函数是否可以接受没有属性的对象 有意 ,例如,如果函数有两个调用者,一个提供具有属性的对象,另一个提供不具有属性的对象。 如果您得到的对象没有属性的唯一情况是由于某些错误,我建议使用异常机制,尽管它可能会慢一些,因为我相信它是一种更干净的设计。
|
|
|
6
5
如果没有该属性,则为 不 在错误条件下,异常处理变量有一个问题:它还将捕获可能出现的AttributeError 内部 访问obj.attribute时(例如,因为属性是一个属性,所以访问它会调用一些代码)。 |
|
|
7
5
Writing faster Python 三思而后行
3许可还是宽恕?
|
|
|
8
4
|
|
|
9
3
我建议选择2。如果其他线程正在添加或删除该属性,则选项1具有竞争条件。 python还有一个 Idiom EAFP(“请求原谅比允许更容易”)比LBYL(“三思而后行”)好。 |
|
|
10
2
从实用的角度来看,在大多数语言中,使用条件语句总是比处理异常快得多。 如果您想要处理当前函数之外某个地方不存在的属性的情况,那么使用异常是更好的方法。您可能希望使用异常而不是条件的一个指示符是,条件仅设置一个标志并中止当前操作,其他地方的某些东西会检查该标志并基于该标志采取操作。 也就是说,正如Rax Olgud指出的那样,与他人的交流是代码的一个重要属性,而您想说的“这是一个例外情况”而不是“这是我期望发生的事情”可能更重要。 |
|
|
11
0
越短越好。例外情况应该是例外情况。 |
|
|
12
0
至少当它取决于程序中正在发生的事情时,忽略可读性等人的部分(这实际上在大多数情况下比性能更重要(至少在这种情况下——有这样的性能跨度),正如Roee Adler和其他人指出的那样)。 但是从这个角度来看,, 这就变成了一个选择的问题
和
|