“ foo(* a)”在Python中如何工作?

Deqing

刚从C ++切换到Python,发现有时很难理解Python背后的想法。

我想,变量是对实际对象的引用。例如,a =(1,2,5)表示a->(1,2,5),因此,如果b = a,则b和a是2个引用,指向相同的(1,2,5)。它有点像C / C ++中的指针。

如果我有:

def foo(a,b,c):
  print a,b,c

a=(1,3,5)
foo(*a)

*什么意思?

看起来它将元组a扩展为a [0],a [1]和a [2]。但是为什么print(*a)在正常工作时不能正常print(a[0],a[1],a[2])工作?

小次郎

您似乎已经了解星号用于参数解压缩因此,唯一的困惑是关于print语句本身。

在python 3中,print(*a)工作正常:

>>> a=(1,3,5)
>>> print(*a)
1 3 5

但是,在Python 2中,它不会:

>>> a=(1,3,5)
>>> print(*a)
  File "<stdin>", line 1
    print(*a)
          ^
SyntaxError: invalid syntax

这是因为print它不是Python 2中的函数,因此Python 2不会将星号解释为参数解压缩指令。实际上,print在Python 2中不需要括号。用括号括起来的值没有任何意义。(a)a一样。(这里(a,)是一个只有一个成员的元组。)所以print (a)print a也一样。

但是,您可以print使用将来print函数覆盖该语句

>>> from __future__ import print_function
>>> print(*a)
1 3 5

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ foo(* a)”在Python中如何工作?

来自分类Dev

这个 foo 函数是如何工作的?

来自分类Dev

我如何从'./foo'`将*导出为foo?

来自分类Dev

防止foo =“ *”中的glob扩展;回声$ foo

来自分类Dev

如何使用脚本/别名使bash / zsh将某些文本从“ foo.foo.foo”更改为“ foo foo foo”?

来自分类Dev

如何使“ FOO = bar.cpp融合a / $ FOO b / $ FOO”以我期望的方式工作?

来自分类Dev

Windows中的$(shell [foo])

来自分类Dev

如何查找。-name * foo *`工作吗?

来自分类Dev

在python中,'foo ==(8或9)'或'foo == 8或foo == 9'更正确吗?

来自分类Dev

在python中,'foo ==(8或9)'或'foo == 8或foo == 9'更正确吗?

来自分类Dev

python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

来自分类Dev

如何使用sed将},{“ Foo”更改为} \ n {“ Foo”?

来自分类Dev

jQuery如何选择<foo.bar> </ foo.bar>节点

来自分类Dev

如何正确地将 _foo 转换为 `Foo` 类型?

来自分类Dev

`foo()的yield和foo()中的x的区别:yield x`

来自分类Dev

Bash中的`declare foo`和`foo =`有什么区别?

来自分类Dev

include.param作为site.tags.Foo中的Foo

来自分类Dev

函数签名中typedef void FOO与#define FOO void的含义

来自分类Dev

简化kwargs和kwargs ['foo']中的'if'foo'为True:

来自分类Dev

$ foo [bar]和$ foo ['bar']在php中的区别

来自分类Dev

@ManagedBean(name =“ foo”)在EL#{foo}中不可用

来自分类Dev

js中的“ foo.bar”和“ foo ['bar']”之间的区别

来自分类Dev

关于Lua中“ local foo = foo”成语的说明

来自分类Dev

<a>标记中的http://foo.com与//foo.com?

来自分类Dev

@ManagedBean(name =“ foo”)在EL#{foo}中不可用

来自分类Dev

bash中的“ foo && bar || baz”与“ if foo; then bar; else baz”不同

来自分类Dev

Bash 中的 `declare foo` 和 `foo=` 有什么区别?

来自分类Dev

java中foo(int)和foo(Integer)的区别

来自分类常见问题

Windows vscode终端中的javac Foo.java && Java Foo无法正常工作

Related 相关文章

  1. 1

    “ foo(* a)”在Python中如何工作?

  2. 2

    这个 foo 函数是如何工作的?

  3. 3

    我如何从'./foo'`将*导出为foo?

  4. 4

    防止foo =“ *”中的glob扩展;回声$ foo

  5. 5

    如何使用脚本/别名使bash / zsh将某些文本从“ foo.foo.foo”更改为“ foo foo foo”?

  6. 6

    如何使“ FOO = bar.cpp融合a / $ FOO b / $ FOO”以我期望的方式工作?

  7. 7

    Windows中的$(shell [foo])

  8. 8

    如何查找。-name * foo *`工作吗?

  9. 9

    在python中,'foo ==(8或9)'或'foo == 8或foo == 9'更正确吗?

  10. 10

    在python中,'foo ==(8或9)'或'foo == 8或foo == 9'更正确吗?

  11. 11

    python中装饰器中的foo=bar(foo)和something=bar(foo)有什么区别?

  12. 12

    如何使用sed将},{“ Foo”更改为} \ n {“ Foo”?

  13. 13

    jQuery如何选择<foo.bar> </ foo.bar>节点

  14. 14

    如何正确地将 _foo 转换为 `Foo` 类型?

  15. 15

    `foo()的yield和foo()中的x的区别:yield x`

  16. 16

    Bash中的`declare foo`和`foo =`有什么区别?

  17. 17

    include.param作为site.tags.Foo中的Foo

  18. 18

    函数签名中typedef void FOO与#define FOO void的含义

  19. 19

    简化kwargs和kwargs ['foo']中的'if'foo'为True:

  20. 20

    $ foo [bar]和$ foo ['bar']在php中的区别

  21. 21

    @ManagedBean(name =“ foo”)在EL#{foo}中不可用

  22. 22

    js中的“ foo.bar”和“ foo ['bar']”之间的区别

  23. 23

    关于Lua中“ local foo = foo”成语的说明

  24. 24

    <a>标记中的http://foo.com与//foo.com?

  25. 25

    @ManagedBean(name =“ foo”)在EL#{foo}中不可用

  26. 26

    bash中的“ foo && bar || baz”与“ if foo; then bar; else baz”不同

  27. 27

    Bash 中的 `declare foo` 和 `foo=` 有什么区别?

  28. 28

    java中foo(int)和foo(Integer)的区别

  29. 29

    Windows vscode终端中的javac Foo.java && Java Foo无法正常工作

热门标签

归档