“通过”与Python中的“不返回”相同吗?

singsuyash:

我已经学习Python大约一个星期了,下面是问题:

def Foo():
    pass

def Bar():
    return None

用法

a = Foo()
print(a)
# None
b = Bar()
print(b)
# None

问题:1.为什么我们已经通过返回无需要通过没有返回None无法处理但可以通过的场景

值:

在像Python这样的语言中,您要评估两种类型的“事物”:表达式和语句。表达式是,好,表达式,评估一些东西。例如1,,1+1f(x)都是所有表达式,对某个值求值。

相比之下,语句不是“返回”任何东西,而是“作用于环境”。例如,x=3将变量x设置为value 3def f(x): return x + 1将的值设置f为函数。这不会“评估”任何东西,而是会修改当前评估事物的环境。

考虑到这一点,有时您需要一个空语句出于语法上的原因,Python中有一些地方需要声明,但是如果您不希望在此处发生任何事情,则可能要表达发生的事情恰好是“什么都没有”。一种方法是求值表达式,而不执行任何操作:

def f():
    1

但一个偶然一瞥,可能意味着这个函数返回 1:不是,你可以使用pass明确地指出:“什么都不做”:

def f():
    pass

现在,还有另一个问题:前面提到过,这f(x)是一个表达式。但是在上面的两个示例中,我没有添加任何内容return,那么这些评估结果如何?答案是:None除非另有说明,否则函数调用将返回(即计算为)所以:

def f():
    pass

def g(x):
    if x > 2:
        return x

def h():
    return None

f() # None
g(3) # 3 -> we explicitely say `return x`
g(1) # None -> no return specified for that path
h() # None -> we explicitely say `return None`

其他人提到过pass可以在其他地方使用(例如,在空类中,在异常处理中)。这样做的原因是所有这些都需要一些语句,并pass允许指定一个空的语句这与函数返回(None除非另有指定)的事实相结合,导致您观察到的行为(尽管它们在概念上有所不同)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

通过func返回数组(1)与Python中的大小不匹配

python vs R中的矩陣乘法不返回相同的SVD白化結果

如何每次通过在Python中调用相同的dict值来返回新对象?

HmacSHA256 在 Java 中不返回相同的值

在日期比较中命令相同的不返回结果Swift 2

Python数组与Java中的数组相同吗?

10 的幂在 Python 中无法正常工作:乘以 10**7 不返回与 10e7 相同的值

通过python在csv中设置“类型相同”

通过在 sql 中返回相同的行进行分组

MySQL不返回相同的结果

python list append方法不返回预期结果吗?

模拟不覆盖Python中函数的返回

通过请求(Python)的POST请求不返回数据

通过RethinkDB中的HorizonIO查找记录不返回结果

我可以通过相同的结果返回字符串或错误值吗?

猫鼬聚合不返回与其他引擎相同的结果吗?语法上有区别吗?

ZF2 Lucene查询不返回任何内容-Luke中的相同查询返回预期结果

python函数中的返回语句不返回任何内容

通过节点进行MongoDB查询返回可见结果,但Postgres不这样做吗?

C ++类的getter在main中不返回任何值,但是在类中返回吗?

在 POST 请求中返回 byte[] 数据在通过 HttpWebRequest 调用时不会返回我需要的相同数据

在python列表中查找相同索引的不匹配项

SpaCy中的.pos_在Python中不返回任何结果

startActivityForResult不返回到相同的Activity实例

如何遍历python列表并返回wich值中的对数相同

相同数字的Java乘法在Python中返回不同的输出

尽管 Python 中的输入相同,但函数返回不同的结果

合并排序在Python中返回相同的数组

数组列表在 Python 中不断返回相同的值