Vấn đề không phải là với tuyên bố nhập cụ thể, mà vấn đề của bạn là bạn có bất kỳ điều gì trước khi có tuyên bố điều khiển luồng. Điều này sẽ không hoạt động:
[email protected]:~> python -c 'a = "1234" ; if True: print "hi"'
File "<string>", line 1
a = "1234" ; if True: print "hi"
^
SyntaxError: invalid syntax
Theo tham chiếu Python (https://docs.python.org/2/reference/compound_stmts.html), ';' chỉ có thể được sử dụng để kết hợp "các câu lệnh đơn giản" với nhau. Trong trường hợp này, bạn đang kết hợp câu lệnh đơn giản import re
, với if True:
. if True
không phải là một tuyên bố đơn giản, bởi vì nó giới thiệu kiểm soát dòng chảy, và do đó là một tuyên bố hợp chất. Ít nhất đó là cách tôi giải thích tài liệu.
Dưới đây là toàn văn từ tài liệu tham khảo Python: 'khoản'
Câu lệnh ghép bao gồm một hoặc nhiều Một khoản bao gồm một header và một Tiêu đề khoản của một đặc biệt 'suite.' câu lệnh ghép là tất cả ở cùng một mức thụt đầu dòng. Mỗi mệnh đề tiêu đề bắt đầu bằng từ khóa nhận dạng duy nhất và kết thúc bằng một dấu hai chấm . Một bộ là một nhóm các câu lệnh được điều khiển bởi một mệnh đề. Một bộ có thể là một hoặc nhiều câu lệnh đơn giản dấu chấm phẩy trên cùng một dòng như tiêu đề, sau ruột của tiêu đề, hoặc nó có thể được một hoặc báo cáo thụt thêm về dòng tiếp theo
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)* [";"]
Không phải là câu trả lời: Tại sao bạn muốn đặt nội dung vào một dòng? Lợi ích là gì, tại sao nó tốt hơn một kịch bản thực? – guettli
Lợi ích là tôi không có bất kỳ quyền ghi tệp nào trên hệ thống mà tôi đang chạy tính năng này. Ngoài ra, tôi thường muốn sao chép và dán một lớp lót cho bạn bè, và điều này làm cho nó để họ không phải tạo tệp và cấp quyền thực thi. – AffluentOwl
xem http://stackoverflow.com/questions/6167127/how-to-put-multiple-statements-in-one-line – Ashkan