在ipython / ipython笔记本中调用函数前使用分号的奇怪行为

时间:2016-01-08 13:38:17

标签: python ipython ipython-notebook

我偶然发现了一些使用echo 'random text here' > newfile1.txt 的奇怪行为,并想知道目的是什么(如果有的话)。如果在函数调用之前输入分号,则会得到将函数应用于反映函数名后面所有代码的字符串的结果。例如,如果我ipython-notebook,我会得到;list('ab')的结果:

list("('ab')")

我正在In [138]: ;list('ab') Out[138]: ['(', "'", 'a', 'b', "'", ')'] 使用jupyter。它发生在ipython 4以及ipython中。 有没有人见过这个或有没有人知道它是否有意,如果有的话,为什么?

1 个答案:

答案 0 :(得分:5)

这是一个自动引用函数args的命令:http://ipython.readthedocs.org/en/latest/interactive/reference.html#automatic-parentheses-and-quotes

来自文档:

  

您可以使用强制自动引用函数的参数,   要么 ;作为一行的第一个字符。例如:

In [1]: ,my_function /home/me  # becomes my_function("/home/me")
  

如果使用';',则整个参数被引用为单个字符串,而   ','在空格上分裂:

In [2]: ,my_function a b c    # becomes my_function("a","b","c")

In [3]: ;my_function a b c    # becomes my_function("a b c")
  

请注意','或';'必须是该行的第一个字符!这个   不会起作用:

In [4]: x = ,my_function /home/me # syntax error

在您的情况下,它会引用所有字符,包括'(以及)

您在此处获得类似的输出,但没有单引号:

In [279]:
;list(ab)

Out[279]:
['(', 'a', 'b', ')']