Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python IDLEn editori

qwerty12302 [13.06.2014 18:52:27]

#

Olen tekemässä Pythonilla ohjelmaa, jossa on monta print-komentoa allekkain. Mistä johtuu, että osa print-komennoista on Python IDLEn editorissa oranssilla/keltaisella ja osa violetilla?
Otetaan nyt vaikka seuraava esimerkki:

print
print "jotain jotain"
print

Tässä esimerkissä tuo ylin print on IDLEssä violetilla mutta alemmat keltaisella. Tämä ei tietenkään minua häiritse, mutta haluan vaan tietää, mistä tämä johtuu.

p99o [13.06.2014 19:13:43]

#

En osaa sanoa, mutta python 3 versiossa print on muotoa

print("jotain")

Jaska [14.06.2014 12:34:31]

#

Eräs mahdollinen selitys voi olla, että olet valinnut tai IDLEn alkuasetuksissa on valittu kohdasta Options/Configure IDLE/Highlighting/Python Builtins väri violetiksi tai keltaiseksi.

qwerty12302 [15.06.2014 21:08:03]

#

p99o kirjoitti:

En osaa sanoa, mutta python 3 versiossa print on muotoa

print("jotain")

Itselläni onkin käytössä python 2.7.6 tai jotain sinne päin

Hansen [15.06.2014 22:38:25]

#

Yksi joskin mahdollisesti kaukaa haettu selitys voi olla, että IDLE käyttää Jaskan mainitsemaa väriasetusta, jos komennon edessä on välilyöntejä tai tabuja.

-tossu- [15.06.2014 23:06:48]

#

Pythonin bug trackeristä löytyy hyvä kuvaus siitä, miksi väritys toimii tuolla tavalla. Ongelmasta pääset eroon päivittämällä Pythonin uusimpaan versioon.

http://bugs.python.org/issue21029:

The underlying cause is that 'print' is both in keyword.kwlist and in module __builtin__ (for use when the print_function future import suppresses recognition of print as keyword). Hence it is in both the partial regexes that get concatenated together at the top of ColorDelegator.py and used with .match on lines 201 and 232.

The proximal cause is that .match in recolorize_main, 201, 232 gives different answers without or with a leading space.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta