2016-01-08 2 views
3

Я наткнулся на какое-то странное поведение, используя ipython-notebook, и задался вопросом, какая была цель, если таковая имеется. Если вы вводите точку с запятой перед вызовом функции, вы получаете результат применения функции к строке, которая отражает весь код после имени функции. Например, если я ;list('ab') я получаю результат list("('ab')"):Странное поведение с точкой с запятой перед вызовом функции в записной книжке ipython/ipython

In [138]: ;list('ab') 
Out[138]: 
['(', "'", 'a', 'b', "'", ')'] 

Я использую jupyter с ipython 4. Это происходит в ipython, а также ipython notebook. Кто-нибудь видел это раньше или кто-нибудь знает, если это предназначено, и если да, то почему?

ответ

3

Это команда для автоматического квотирования функции аргументов: 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', ')'] 
Смежные вопросы