IPython'un yasal Python olmayan sözdizimi için çok garip ayrıştırma davranışlarının olduğunu fark ettim.IPython'da neden b = 1,2,3 (', b', '=', '1,2,3') olarak ayrıştırıldı?
In [1]: ,,b = 1,2,3
Out[1]: (',b', '=', '1,2,3')
Noktalı virgüller ile devam eden benzer bir şey var, ancak bir tuple ayrılmıyor.
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
Neden ipython bu işe yarar: Bu ;
benziyor satırın geri kalanı bir dize olarak kabul edilir demektir iken
In [4]: ;;foo = 1;2;3
Out[4]: ';foo = 1;2;3'
, bu her zaman böyle değildir? Bu belgelenmiş veya yapılandırılabilir mi? Dokümanlar http://ipython.org/ipython-doc/2/interactive/reference.html
:
ben JS (ipython komut en JavaScript kodu çalışıyormuş ben son derece sürpriz olurdu) sadece tarayıcılar için olduğunu düşünüyorum. – nneonneo
@nneonneo bu doğru, Ben IPython – EdChum
terminali için bir deneyin ve kazacağım Teşekkürler, bu, 'foo' ve '; foo' açıklar ama neden, 'b' farklı muamele görür görmez ve bir işlev çağrısı olarak değil. –