Python インタープリターで 1 行を超えるコードを記述するにはどうすればよいですか?

Python インタープリターで 1 行を超えるコードを記述するにはどうすればよいですか?

ターミナルで Python をコーディングするときに問題があります。基礎を学習しているところなので、.py ファイルを作成する必要はありません。

ターミナルでは、Python インタープリターで 1 行のコードを実行できますが、複数行を記述するにはどうすればよいでしょうか?

当然ですが、Enter キーを押すとコマンドが入力され、行は進みません。

ターミナルで次のことをテストしたいだけです:

my_age = 35
my_eyes = 'Blue'
print "my age is %d and my eye color is %s" % (my_age, my_eyes)

答え1

末尾にバックスラッシュ(\)を追加します

コツは、たとえば で行うのと同様にbash、末尾にバックスラッシュを追加することです。たとえば、 を印刷したい場合1:

charon:~ werner$ python
>>> print 1
1
>>> print \
... 1
1
>>> 

と書くと、Python は(継続行) を表示して、次の行にコードを入力するように\要求します。...

補足:これは関数やクラスの定義を作成するときに自動的に起こることです。つまり、必要は新しい行なので、これをうまく使うことはまずありません。少なくとも私が知る限りでは。言い換えれば、Python は、新しい関数定義やその他の同様の構造 (例if:) を入力するときに継続行が必要であることを認識できるほど賢いのです。これらの自動的なケースでは、 を使用して空行を入力し、\Python に完了したことを伝える必要があることに注意してください。

それ以外の場合は、1 行ずつ記述する必要があります。インタープリタの動作は、入力されたすべての行を解釈することです。それ以上でもそれ以下でもありません。インタープリタは改行文字を見つけたときのみ「動作」し、入力した内容を実行するようにインタープリタに指示します。バックスラッシュを 1 つだけ入力すると、インタープリタは改行文字を受け取れなくなります (つまり、実際に が押されたことを認識しませんEnter) が、最終的には改行文字を受け取ります。

Pythonのインタープリタは高度な機能GNU readline を使用する場合、Emacs や vi スタイルのキーバインディングを使用して行内を移動します (例Ctrl-A)。ただし、これらは現在の行でのみ機能します。履歴も存在するので、 を押してみてください

複雑なラインを何度も実行したい場合はどうすればよいでしょうか?

一度に複数行のコードを実行する場合は、適切なソース ファイルを使用することをお勧めします。

または、Jupyterノートブックは、組み込みのインタープリタを使用して Python コードを作成する優れたインタラクティブな方法を提供します。ソース コード エディタと同じようにコードを記述できますが、どの行をまとめて解釈するかを選択できます。その後、コードの一部だけを選択的に実行できます。最善の方法は、実際に試してみて、それが自分のワークフローに合うかどうかを確認することです。

答え2

を使うのはどうでしょうか;\?セミコロンはコマンドの終了を示し、バックスラッシュは次の行に続くことを示します。たとえば、pythonPythonインタープリターに入るにはコマンドラインに次のように入力します。

>>> x=0 ;\
... print(x) ;\
... x=4 ;\
... print(x)

出力は次のようになる

0
4

答え3

私はあなたが得た答えをちょうど読んでいました。私はさまざまな記号を入れて実験を続けました。そしてついにそれを記述するための正しい構文を得ました。以下を試してください

print("more string") ; print(3)

これで結果が得られます

more string

3

エラーなしで

別の行に書き込むために「;」を使用しました

私の答えがあなたを助けることを願っています

答え4

シェルプロンプトで次のように入力したところ、問題なく動作しました。

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> my_age = 35
>>> my_eyes = 'Blue'
>>> print "my age is %d and my eye color is %s" % (my_age, my_eyes)
my age is 35 and my eye color is Blue
>>> 

対話型 Python インタープリタで複数行のコードを入力する方法は、対話型 Python インタープリタで複数行のコードを入力することです。これで目的には十分だと思います。

確かに、各行の後に新しいプロンプトが表示されます。つまり、2 行のコードが出力を生成する場合、その出力はプロンプトで区切られます。質問の例ではそのようには示されていませんが、それが懸念されていることだと思います。

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print "first line"
first line
>>> print "second line"
second line
>>> 

それが問題になる場合は、複数のステートメントを (適切にインデントされた!)ifステートメントで囲むことができます。

$ python
Python 2.7.3 (default, Aug  1 2012, 05:16:07) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> if 1:
...     print "first line"
...     print "second line"
... 
first line
second line
>>> 

(あなたの質問への回答にはなりませんが、これが問題になるほど複雑なコードを書いているのであれば、スクリプトを書くべきだと私は提案します。おそらく、質問を投稿してから 1 年半以内にスクリプトを書き始めたのでしょう。)

関連情報