teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/01/07 16:34

投稿

KSwordOfHaste
KSwordOfHaste

スコア18404

answer CHANGED
@@ -4,4 +4,35 @@
4
4
 
5
5
  さて複数行のペーストができないと大変不便ですが、そういうことがしたい場合、Shell画面のFile>New Fileででてくる「エディター画面」の方でやるとよいと思います。こちらはエディターなので入力したとたんに実行はされませんがそのかわり何行にもわたるコードを編集しやすくなっています。
6
6
 
7
- エディターの方で複数行のコード(つまりPythonのまとまったプログラム)を入力し、そちらからRun>Run Moduleとしてみてください。実行結果がShell画面の方へ出力されます。また実行が終わった状態でShell画面の方で変数の値などを使って即座に実行なんて使い方ができます。
7
+ エディターの方で複数行のコード(つまりPythonのまとまったプログラム)を入力し、そちらからRun>Run Moduleとしてみてください。実行結果がShell画面の方へ出力されます。また実行が終わった状態でShell画面の方で変数の値などを使って即座に実行なんて使い方ができます。
8
+
9
+ ---
10
+ 追記:
11
+ Shell画面の機能について少し訂正します。正確には**「複数行」のペーストがNGなのではなく、「複数の文を一度にペーストする」のがNG**のようです。次の例をご覧ください。(`>>>`はIDLEのプロンプトです)
12
+
13
+ ```Text
14
+ >>> def f(a, b):
15
+ return a + 1
16
+
17
+ # <= ペーストした後もう一行空行を入力
18
+ >>> # <= OK
19
+ >>> class MyClass:
20
+ def __init__(self):
21
+ pass
22
+ def method1(self):
23
+ pass
24
+ # <= ペーストした後もう一行空行を入力
25
+ >>> # <= OK
26
+ ```
27
+ 関数全体をペーストする場合、例え関数が複数行であっても「一つの関数定義なら」OKみたいですね。同様に「一つのクラス定義なら」例えその中に複数のメソッドが定義されててもOKです。
28
+
29
+ 一方、以下のように複数の文を一度にペーストするとNGです。
30
+ ```text
31
+ >>> a = 1
32
+ b = 1
33
+ # <= ペーストした後もう一行空行を入力
34
+ SyntaxError: multiple statements found while compiling a single statement
35
+ >>>
36
+ ```
37
+
38
+ 関数定義やクラス定義が一つの文というのはピンとこないかも知れませんが、Pythonがインタープリタ言語であり、関数定義やクラス定義は全体で一つの実行文であると考えれば納得できる仕様かなと思います。