Zauważyłem, że IPython ma pewne dziwne zachowanie składni dla składni, która nie jest legalnym pythonem.Dlaczego ,, b = 1,2,3 jest analizowany jako (', b', '=', '1,2,3') w IPythonie?
In [1]: ,,b = 1,2,3
Out[1]: (',b', '=', '1,2,3')
Coś podobnego dzieje się średnikiem, ale nie jest to podział na krotki.
In [4]: ;;foo = 1;2;3
Out[4]: ';foo = 1;2;3'
Choć wygląda ;
oznacza, że reszta linii jest traktowany jako ciąg dosłownym, to nie zawsze tak jest:
In [5]: ,foo
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-5-f2137ad20ab5> in <module>()
----> 1 foo("")
NameError: name 'foo' is not defined
In [6]: ;foo
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-6-f2137ad20ab5> in <module>()
----> 1 foo("")
NameError: name 'foo' is not defined
Dlaczego ipython to zrobić? Czy jest to udokumentowane lub konfigurowalne?
myślę JS tylko dla przeglądarek (Byłbym bardzo zaskoczony, gdyby ipython biegały kodu JavaScript w linii poleceń). – nneonneo
@nneonneo to prawda, spróbuję i wykopię jedną dla terminala IPython – EdChum
Dzięki, to wyjaśnia ', foo' i'; foo', ale nie rozumiem, dlaczego ',, b' jest traktowane inaczej i nie jako wywołanie funkcji. –