[英]Role of pass statement inside a function?
我是面向對象編程的新手。 定義一個類后,我們只需創建對象並嘗試訪問類中的不同變量和函數。 在下面的代碼中我想知道為什么我們在函數內部又要提到類Dataset,其次pass語句的作用是什么?
def read_data_set():
class Dataset:
pass
data_sets = Dataset()
return(data_sets)
#Function call
x=read_data_set()
print(x)
它基本上什么都不做。
它通常用作代碼中的占位符; 您會注意到,如果沒有pass
,代碼根本不會運行。
class SomeClass:
pass # to be filled
這是因為 Python 期望某些東西在SomeClass
的定義之下,但為空會引發IndentationError
。
class SomeClass:
# to be filled <--- empty
other_function() # <--- IndentationError
它也與try
- except
您不想做任何事情:
try:
some_stuff()
except SomeException:
pass # I don't mind this
pass
什么都不做,它只是使 Python 縮進正確。
假設您要創建一個空函數,例如:
def empty_func():
empty_func() # throws IndentationError
讓我們試着在里面放一條評論:
def empty_func_with_comment():
# empty
empty_func_with_comment() # throws IndentationError
為了使它工作,我們需要使用 pass 來修復縮進:
def empty_func_with_pass():
pass
empty_func_with_pass() # it works
為什么我們在函數內部兩次提到類 Dataset ?
第一次
class Dataset:
pass
定義了類,
第二個:
data_sets = Dataset()
創建了此類(一個對象)的一個實例。 正如OP所寫的那樣:
定義一個類后,我們只需創建對象。
由於class
只是一個 python 語句,它可以在任何地方使用:包括函數體,就像在這種情況下一樣。 所以這里類是在每次調用函數read_data_set()
定義的,如果不調用則根本不定義。
pass語句的作用是什么?
在這個例子中
class Dataset:
pass
pass
語句意味着定義一個類,其中沒有添加任何成員。 這意味着該類及其對象僅包含一些“默認”函數和變量(也稱為方法和字段),它們由任何類從object
派生而來。
通常,當您引入一個新塊並希望將其留空時,會使用pass
:
expression:
pass
你必須在一個塊中至少包含一條指令,這就是為什么有時你需要pass
來表示你不想在塊內做任何事情。 對於函數也是如此:
def do_nothing():
pass # function that does nothing
循環:
for i in collection: # just walk through the collection
pass # but do nothing at each iteration
異常處理:
try:
do_something()
except SomeException:
pass # silently ignore SomeException
上下文管理器:
with open(filename): # open a file but do nothing with it
pass
pass 語句意味着您在不定義構造函數或任何屬性的情況下初始化您的類。 嘗試省略它:您看到的錯誤是由於 python 會期望以下行屬於您的類 - 並且會認為使用的縮進不正確。
關於在您的函數中再次調用您的類名這一事實:這意味着您正在實例化您剛剛定義的類。 因此,您的函數返回的是您的類的對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.