Das Problem ist nicht mit der Import-Anweisung speziell, es ist, dass Sie alles vor einer Kontrolle Flow-Statement haben. Das wird nicht funktionieren, entweder:
[email protected]:~> python -c 'a = "1234" ; if True: print "hi"'
File "<string>", line 1
a = "1234" ; if True: print "hi"
^
SyntaxError: invalid syntax
Nach der Python-Referenz (https://docs.python.org/2/reference/compound_stmts.html), ';' kann nur verwendet werden, um "einfache Aussagen" miteinander zu kombinieren. In diesem Fall kombinieren Sie die einfache Anweisung import re
mit if True:
. if True
ist keine einfache Aussage, weil es die Flusskontrolle einführt und daher eine zusammengesetzte Aussage ist. Zumindest interpretiere ich die Dokumentation so.
Hier ist der vollständige Text aus dem Referenz Python: 'Klauseln'
Compound-Anweisungen bestehen aus einem oder mehreren A-Klausel besteht aus einem Kopf und einem Die Klausel Header eines bestimmten 'Suite.' zusammengesetzte Anweisung sind alle auf der gleichen Einrückungsebene. Jede Klausel Header beginnt mit einem eindeutig identifizierenden Schlüsselwort und endet mit einem Doppelpunkt. Eine Suite ist eine Gruppe von Anweisungen, die durch eine Klausel gesteuert werden. Eine Suite kann eine oder mehr durch Semikolon getrennte einfache Aussagen über die gleichen Zeilen wie die Kopfzeile sein, nach dem Doppelpunkt Header, oder es kann
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)* [";"]
Keine Antwort: Warum wollen Sie Zeug in eine Zeile stecken? Was ist der Vorteil, warum ist es besser als ein echtes Skript? – guettli
Der Vorteil ist, dass ich keine Datei Schreibberechtigungen auf dem System habe, auf dem ich dies ausführe. Außerdem möchte ich häufig einen Liner kopieren und an Freunde einfügen, und das macht es so, dass sie keine Dateien erstellen und diese Ausführungsberechtigungen gewähren müssen. – AffluentOwl
siehe http://stackoverflow.com/questions/6167127/how-to-put-multiple-statements-in-one-line – Ashkan