问题
I stumbled upon some strange behaviour using ipython-notebook and wondered what, if any, the purpose was. If you enter a semicolon before a function call, you get the result of applying the function to a string which reflects all the code after the function name. For example, if I do ;list('ab') I get the result of list("('ab')") :
In [138]: ;list('ab')
Out[138]:
['(', "'", 'a', 'b', "'", ')']
I'm using jupyter with ipython 4. It happens in ipython as well as ipython notebook.
Has anyone seen this before or does anyone know if it's intended and, if so, why?
回答1:
It's a command for automatic quoting of function args: http://ipython.readthedocs.org/en/latest/interactive/reference.html#automatic-parentheses-and-quotes
From the docs:
You can force automatic quoting of a function’s arguments by using , or ; as the first character of a line. For example:
In [1]: ,my_function /home/me # becomes my_function("/home/me")
If you use ‘;’ the whole argument is quoted as a single string, while ‘,’ splits on whitespace:
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")
Note that the ‘,’ or ‘;’ MUST be the first character on the line! This won’t work:
In [4]: x = ,my_function /home/me # syntax error
In your case it's quoting all characters including ' and ( and )
You get similar output here but without the single quotes:
In [279]:
;list(ab)
Out[279]:
['(', 'a', 'b', ')']
来源:https://stackoverflow.com/questions/34678429/weird-behaviour-with-semicolon-before-function-call-in-ipython-ipython-notebook