Ho notato che IPython ha un parsing molto strano che si comporta per la sintassi che non è Python legale.Perché "b = 1,2,3 analizzato come (', b', '=', '1,2,3') in IPython?
In [1]: ,,b = 1,2,3
Out[1]: (',b', '=', '1,2,3')
C'è qualcosa di simile in corso con il punto e virgola, ma non si sta dividendo in una tupla.
In [4]: ;;foo = 1;2;3
Out[4]: ';foo = 1;2;3'
Mentre sembra che ;
significa il resto della linea è trattata come una stringa letterale, questo non è sempre il caso:
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
Perché IPython fare questo? È documentato o configurabile?
Credo che il JS è solo per i browser (Sarei molto sorpreso se IPython erano in esecuzione il codice JavaScript alla riga di comando). – nneonneo
@nneonneo che è vero, proverò a scavare per uno per il terminale IPython – EdChum
Grazie, questo spiega il ', foo' e'; foo' ma non vedo perché ', b' è trattato in modo diverso e non come una chiamata di funzione. –