python中None返回值的使用方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家帶來的參考內容,讓我們一起來看看吧!
成都創新互聯致力于互聯網網站建設與網站營銷,提供成都做網站、成都網站建設、網站開發、seo優化、網站排名、互聯網營銷、微信小程序定制開發、公眾號商城、等建站開發,成都創新互聯網站建設策劃專家,為不同類型的客戶提供良好的互聯網應用定制解決方案,幫助客戶在新的全球化互聯網環境中保持優勢。None是python中的特殊存在。作為函數,在用到返回值的經常使用。今天小編就來講講
一、作為操作類函數的默認返回值
當某個操作類函數不需要任何返回值時,通常就會返回 None。同時,None 也是不帶任何 return 語句函數的默認返回值。
對于這種函數,使用 None 是沒有任何問題的,標準庫里的 list.append()、 os.chdir() 均屬此類。
二、作為某些“意料之中”的可能沒有的值
有一些函數,它們的目的通常是去嘗試性的做某件事情。視情況不同,最終可能有結果,也可能沒有結果。而對調用方來說,“沒有結果”完全是意料之中的事情。對這類函數來說,使用 None 作為“沒結果”時的返回值也是合理的。
在 Python 標準庫里,正則表達式模塊 re 下的 re.search、 re.match 函數均屬于此類,這兩個函數在可以找到匹配結果時返回 re.Match 對象,找不到時則返回 None。
三、作為調用失敗時代表“錯誤結果”的值
有時, None 也會經常被我們用來作為函數調用失敗時的默認返回值,比如下面這個函數:
def create_user_from_name(username): """通過用戶名創建一個 User 實例""" if validate_username(username): return User.from_username(username) else: return None user = create_user_from_name(username) if user: user.do_something()
當 username 不合法時,函數 create_user_from_name 將會返回 None。但在這個場景下,這樣做其實并不好。
不過你也許會覺得這個函數完全合情合理,甚至你會覺得它和我們提到的上一個“沒有結果”時的用法非常相似。那么如何區分這兩種不同情形呢?關鍵在于:函數簽名(名稱與參數)與 None 返回值之間是否存在一種“意料之中”的暗示。
讓我解釋一下,每當你讓函數返回 None 值時,請仔細閱讀函數名,然后問自己一個問題:假如我是該函數的使用者,從這個名字來看,“拿不到任何結果”是否是該函數名稱含義里的一部分?
分別用這兩個函數來舉例:
re.search():從函數名來看, search,代表著從目標字符串里去搜索匹配結果,而搜索行為,一向是可能有也可能沒有結果的,所以該函數適合返回 None
create_user_from_name():從函數名來看,代表基于一個名字來構建用戶,并不能讀出一種 可能返回、可能不返回的含義。所以不適合返回 None
對于那些不能從函數名里讀出 None 值暗示的函數來說,有兩種修改方式。第一種,如果你堅持使用 None 返回值,那么請修改函數的名稱。比如可以將函數 create_user_from_name() 改名為 create_user_or_none()。
第二種方式則更常見的多:用拋出異常(raise Exception)來代替 None 返回值。因為,如果返回不了正常結果并非函數意義里的一部分,這就代表著函數出現了“意料以外的狀況”,而這正是 Exceptions 異常 所掌管的領域。
使用異常改寫后的例子:
class UnableToCreateUser(Exception): """當無法創建用戶時拋出""" def create_user_from_name(username): ""通過用戶名創建一個 User 實例" :raises: 當無法創建用戶時拋出 UnableToCreateUser """ if validate_username(username): return User.from_username(username) else: raise UnableToCreateUser(f'unable to create user from {username}') try: user = create_user_from_name(username) except UnableToCreateUser: # Error handling else: user.do_something()
與 None 返回值相比,拋出異常除了擁有我們在上個場景提到的那些特點外,還有一個額外的優勢:可以在異常信息里提供出現意料之外結果的原因,這是只返回一個 None 值做不到的。
感謝各位的閱讀!看完上述內容,你們對python中None返回值的使用方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創新互聯行業資訊頻道。
標題名稱:python中None返回值的使用方法-創新互聯
標題路徑:http://vcdvsql.cn/article16/isegg.html
成都網站建設公司_創新互聯,為您提供微信公眾號、小程序開發、網站制作、電子商務、網站設計公司、營銷型網站建設
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯