questo non può essere una carenza di sconvolgente di pitone, ma ho ancora meraviglia circa la logica dietro il seguente comportamento: quando ho corsastrano errore di sintassi in Python, versione 2.6 e 3.1
source = """
print('helo')
if __name__ == '__main__':
print('yeah!')
#"""
print(compile(source, '<whatever>', 'exec'))
i ottengo ::
File "<whatever>", line 6
#
^
SyntaxError: invalid syntax
posso evitare questa eccezione da (1) eliminando il trascinamento #
; (2) eliminare o esagerare le linee if __name__ == '__main__':\n print('yeah!')
; (3) aggiungere una nuova riga alla fine della sorgente .
inoltre, se ho fine sorgente senza fine riga destra dietro la print('yeah!')
, l'origine sarà anche compilare senza errore.
potrei anche riprodurre questo comportamento con python 2.6, quindi non è nuovo alla serie 3k.
trovo questo errore per essere altamente irritante, tanto più che quando ho messo sopra fonte all'interno di un file ed eseguirlo direttamente o averlo importata, si verificherà il che nessun errore è il comportamento previsto.
un #
(hash) al di fuori di una stringa letterale dovrebbe sempre rappresentare il inizio di un commento (possibilmente vuota) in una sorgente Python; inoltre, la presenza o l'assenza di if __name__ == '__main__'
nella clausola non deve modificare l'interpretazione di un soure a livello sintattico .
qualcuno può riprodurre il problema precedente e/o commentare il fenomeno ?
acclamazioni
Sono stato in grado di riprodurlo. Bizzarro - Anche io sono interessato alla risposta. –
Riprodotto in 2.6.1. Sembra essere un bug anche per me, ma è un caso davvero estremo. –
Puoi inserire il tuo "aggiornamento" come risposta e accettarlo. – kennytm