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.
En osaa sanoa, mutta python 3 versiossa print on muotoa
print("jotain")
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.
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
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.
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.
Aihe on jo aika vanha, joten et voi enää vastata siihen.