首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果在python中单独编写变量名,会发生什么情况?

如果在python中单独编写变量名,会发生什么情况?
EN

Stack Overflow用户
提问于 2014-01-21 22:21:59
回答 3查看 783关注 0票数 17

最近,我开始好奇下面这段伪python代码的第二行会发生什么:

代码语言:javascript
复制
def my_fun(foo,bar):
    foo
    return foo + bar

我开始感兴趣的原因是,我正在尝试Light Table,并试图在“foo”上放置一块手表。它似乎导致python解释器挂起。

我认为这一行绝对没有影响,也不会导致任何类型的错误,这是正确的吗?有人能解释一下解释器在这里到底是做什么的吗?

EN

回答 3

Stack Overflow用户

发布于 2014-01-21 22:28:19

什么都没发生。它等同于查看dis输出的无意义操作

代码语言:javascript
复制
In [3]: dis.dis(my_fun)
  2           0 LOAD_FAST                0 (foo)
              3 POP_TOP             

  3           4 LOAD_FAST                0 (foo)
              7 LOAD_FAST                1 (bar)
             10 BINARY_ADD          
             11 RETURN_VALUE 

我们可以看到,它对foo的加载速度很快,然后什么也不做。

票数 9
EN

Stack Overflow用户

发布于 2014-01-21 22:27:15

在命令行中尝试一下:它只返回foo中的值。这并不意味着它在某些特殊情况下不会有副作用:如果你这样做:

代码语言:javascript
复制
def my_fun(foo, bar):
    foo.prop
    return foo.func(bar)

即使从技术上讲,我们只是返回值,如果它被定义为一个属性,那么foo.prop实际上可以调用一个函数。

但通常..。您不会在模块中执行此操作,只能在交互式控制台中执行此操作。

票数 4
EN

Stack Overflow用户

发布于 2014-01-21 22:28:52

什么都不会发生:

代码语言:javascript
复制
>>> def baz(foo, bar):
    foo
    return bar

>>> baz(10, 20)
20

该声明没有任何效果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21260745

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档