2
A
回答
1
我肯定不會返回False
。但除None
與False
之外,還有其他選擇。
的陽性結果將是在這種情況下的短字符串。
因此,否定的結果可能是空的字符串。 (除非這也是一種可能的陽性結果,當然)
由於PEP 8說:
對於序列(字符串,列表,元組),使用的事實,空序列爲假。
但是,這不是一個完整的答案你的問題(也不是一個鐵皮的規則,首先)。你必須考慮利弊,並決定哪些在實際使用中最重要。
我認爲最大的問題是這樣的:如果返回''
,代碼嘗試使用結果作爲字符串工作。如果您返回None
,那麼相同的代碼將引發異常。
例如,這裏有一些代碼,我已經得到了躺在身邊的簡化版本:
result = query_function(foo, bar)
soup = bs4.BeautifulSoup(result)
for div in soup.find_all('div'):
print(div['id'])
我query_function
回報''
,所以代碼將成功地打印出無標識。這就是我想要的腳本。但對於不同的用例,可能會更好地引發異常。在這種情況下,我會讓query_function
返回None
。
或者,當然了,你可以讓query_function
本身拋出一個異常,如綾的答案。
你可能想看看在標準的字符串的方法,re
方法,並在STDLIB(甚至看sqlite
等)等搜索功能,看看他們做什麼。 (請注意,在少數情況下,存在匹配的值對返回和異常提升函數,如str.find
和str.index
,因此答案可能不是其中之一,但兩者都可以。)
3
在這種情況下,一個積極的結果將是一個短字符串。
假設你有這樣的事情(非常簡單)例子...
the_things = {'foo', 'bar'}
def find_the_thing(the_thing):
if the_thing in the_things:
return the_thing
...默認情況下將返回None
如果沒有找到的東西,它是沒問題的,你可以使用這樣的......
the_thing = find_the_thing('blah')
if the_thing is not None:
do_something_with(the_thing)
else:
do_something_else()
...但它有時不如養這樣一個異常....
the_things = {'foo', 'bar'}
def find_the_thing(the_thing):
if the_thing in the_things:
return the_thing
raise KeyError(the_thing)
...你可以用這樣的...
try:
do_something_with(find_the_thing('blah'))
except KeyError:
do_something_else()
...這可能是更具可讀性。
1
0
如何不返回任何東西,但一個接一個地產生結果?生成器通常是一件很方便的事情,因爲它們避免了建立列表,然後無論如何都會被逐一使用和丟棄。
相關問題
- 1. False or None vs. None或False
- 2. 爲什麼python返回None對象?
- 3. Python:爲什麼False或'name'返回'name'而不是False?
- 4. yield在python中返回None?
- 5. 爲什麼random.shuffle返回None?
- 6. 爲什麼encrypt()返回None?
- 7. 爲什麼pandas.Dataframe.drop()返回None?
- 8. 爲什麼magic.from_buffer返回None?
- 9. 在python函數中使用True,False和None作爲返回值
- 10. 的Python爲什麼INT(「0」)返回false
- 11. Python traceback.print_exc()返回'None'
- 12. 超級函數返回None與結果
- 13. 爲什麼我在Python中獲取None而不是True/False?
- 14. 爲什麼我的Neo4j IN爲所有結果返回false?
- 15. 爲什麼ExecuteExcel4Macro的返回結果總是爲False?
- 16. 爲什麼String.matches在Java中返回false?
- 17. 爲什麼instanceof在JavaScript中返回false?
- 18. Yepnope回調總是返回'結果= false'
- 19. Popen.communicate()返回(None,None)即使腳本打印結果
- 20. 爲什麼string.contains()返回false?
- 21. jquery返回false - 爲什麼?
- 22. 爲什麼setFieldProperty返回false?
- 23. Properties.containsKey返回false,爲什麼?
- 24. 爲什麼File.Exists返回false?
- 25. 爲什麼System.Type.IsPublic返回false?
- 26. 爲什麼!document.body返回False?
- 27. 爲什麼strtotime返回false?
- 28. ABGroupAddMember返回false。爲什麼?
- 29. 爲什麼QSortFilterProxyModel.setData()返回false?
- 30. 爲什麼getimagesize()返回false?
如果函數返回如果有*結果,則爲非空列表,如果沒有空列表,返回空列表[]可能更有意義,那麼像get_result_list()中的項目一樣的代碼片段將會:無論如何工作。 – Aya
當「True」可以時,'False'是有意義的。 「無」或空容器似乎更有意義。 –
在這種情況下,積極的結果將是一個短字符串。 – user2387035