回答編集履歴

1

追記

2018/01/07 16:34

投稿

KSwordOfHaste
KSwordOfHaste

スコア18392

test CHANGED
@@ -11,3 +11,65 @@
11
11
 
12
12
 
13
13
  エディターの方で複数行のコード(つまりPythonのまとまったプログラム)を入力し、そちらからRun>Run Moduleとしてみてください。実行結果がShell画面の方へ出力されます。また実行が終わった状態でShell画面の方で変数の値などを使って即座に実行なんて使い方ができます。
14
+
15
+
16
+
17
+ ---
18
+
19
+ 追記:
20
+
21
+ Shell画面の機能について少し訂正します。正確には**「複数行」のペーストがNGなのではなく、「複数の文を一度にペーストする」のがNG**のようです。次の例をご覧ください。(`>>>`はIDLEのプロンプトです)
22
+
23
+
24
+
25
+ ```Text
26
+
27
+ >>> def f(a, b):
28
+
29
+ return a + 1
30
+
31
+
32
+
33
+ # <= ペーストした後もう一行空行を入力
34
+
35
+ >>> # <= OK
36
+
37
+ >>> class MyClass:
38
+
39
+ def __init__(self):
40
+
41
+ pass
42
+
43
+ def method1(self):
44
+
45
+ pass
46
+
47
+ # <= ペーストした後もう一行空行を入力
48
+
49
+ >>> # <= OK
50
+
51
+ ```
52
+
53
+ 関数全体をペーストする場合、例え関数が複数行であっても「一つの関数定義なら」OKみたいですね。同様に「一つのクラス定義なら」例えその中に複数のメソッドが定義されててもOKです。
54
+
55
+
56
+
57
+ 一方、以下のように複数の文を一度にペーストするとNGです。
58
+
59
+ ```text
60
+
61
+ >>> a = 1
62
+
63
+ b = 1
64
+
65
+ # <= ペーストした後もう一行空行を入力
66
+
67
+ SyntaxError: multiple statements found while compiling a single statement
68
+
69
+ >>>
70
+
71
+ ```
72
+
73
+
74
+
75
+ 関数定義やクラス定義が一つの文というのはピンとこないかも知れませんが、Pythonがインタープリタ言語であり、関数定義やクラス定義は全体で一つの実行文であると考えれば納得できる仕様かなと思います。