Problem nie dotyczy konkretnie instrukcji import, ponieważ zawiera ona coś przed instrukcją sterowania. To nie zadziała, albo:
[email protected]:~> python -c 'a = "1234" ; if True: print "hi"'
File "<string>", line 1
a = "1234" ; if True: print "hi"
^
SyntaxError: invalid syntax
Według odniesienia Python (https://docs.python.org/2/reference/compound_stmts.html), ';' można używać tylko do łączenia "prostych instrukcji". W tym przypadku łączysz proste oświadczenie import re
, z if True:
. if True
nie jest prostą instrukcją, ponieważ wprowadza kontrolę przepływu, a zatem jest złożoną instrukcją. Przynajmniej tak interpretuję dokumentację.
Oto pełny tekst z odniesieniem Pythona: „klauzul”
oświadczenia złożone składają się z jednego lub większej liczby Klauzula składa się z nagłówka i Nagłówki klauzuli szczególności „pakietu”. instrukcje złożone są na tym samym poziomie wcięcia. Każdy nagłówek klauzuli rozpoczyna się od słowa kluczowego jednoznacznie identyfikującego i kończy się dwukropkiem . Pakiet to grupa zdań kontrolowanych przez klauzulę. apartament może być jeden lub więcej rozdzielone średnikami proste wypowiedzi na samej linii, co nagłówek, po dwukropku nagłówka, lub może być jeden lub więcej wcięte sprawozdania na kolejnych liniach
compound_stmt ::= if_stmt
| while_stmt
| for_stmt
| try_stmt
| with_stmt
| funcdef
| classdef
| decorated
suite ::= stmt_list NEWLINE | NEWLINE INDENT statement+ DEDENT
statement ::= stmt_list NEWLINE | compound_stmt
stmt_list ::= simple_stmt (";" simple_stmt)* [";"]
Brak odpowiedzi: dlaczego chcesz umieścić rzeczy w jednej linii? Jakie są korzyści, dlaczego jest lepszy niż prawdziwy scenariusz? – guettli
Korzyścią jest to, że nie mam żadnych uprawnień do zapisu pliku w systemie, na którym to uruchomiłem. Ponadto, często chcę skopiować i wkleić jeden liners do przyjaciół, a to sprawia, że nie muszą tworzyć plików i udzielać im tych uprawnień wykonywania. – AffluentOwl
zobacz http://stackoverflow.com/questions/6167127/how-to-put-multiple-statements-in-one-line – Ashkan