Issue
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?
Solution
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', ')']
Answered By - EdChum
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.