[英]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.