我偶然发现了一些使用echo 'random text here' > newfile1.txt
的奇怪行为,并想知道目的是什么(如果有的话)。如果在函数调用之前输入分号,则会得到将函数应用于反映函数名后面所有代码的字符串的结果。例如,如果我ipython-notebook
,我会得到;list('ab')
的结果:
list("('ab')")
我正在In [138]: ;list('ab')
Out[138]:
['(', "'", 'a', 'b', "'", ')']
使用jupyter
。它发生在ipython 4
以及ipython
中。
有没有人见过这个或有没有人知道它是否有意,如果有的话,为什么?
答案 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', ')']