1

私の大学のPythonで初心者レベルのプログラマーを教えるために、Pythonワークショップを開催する予定です。

式が自動的に結果を出力しないように、Python インタラクティブ セッションのデフォルトの動作を変更する方法を探しています。たとえば、次の対話型セッションを見てください。

wil@calcifer:~$ 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.
>>> x = 5
>>> y = 7
>>> x + y
12
>>> first_name = "Test"
>>> last_name = "Person"
>>> first_name + last_name
'TestPerson'
>>>

printこれにより、後で混乱を避けるためにステートメントの使用が強制されます。これは重要ではありませんが、これに関する設定がどこにも見つからないことに驚きました。

マシンを事前に構成できるので、どのソリューションでも機能します。これが可能かどうか、またはインタラクティブセッションへのどのような変更がこの効果を生み出すかを誰かが知っていますか?

4

3 に答える 3

10

インタラクティブ セッションでの式の出力は、 への呼び出しによって仲介され sys.displayhookます。NOPにオーバーライドするだけです:

>>> import sys
>>> sys.displayhook = lambda x: None

>>> 2 + 3
>>> print 2 + 3
5
>>> 

プレーンな Python セッションでは、sys.stdout に接続されています。GUI で Python シェルを提供するアプリケーションは、それを使用して式の値をユーザーに出力することが期待されます。

インタープリターが呼び出されるたびに、デフォルトでこれを行うように pythonrc.py ( ~/.pythonrc.py ファイル) を作成できます。sys.displayhook に関する詳細なドキュメントは、http://docs.python.org/3/library/sys.html#sys.displayhook にあります

于 2013-03-20T21:50:02.637 に答える
1

あなたがアドバイスを教えるためにここに来たわけではないことは知っていますが、アウトプットがなければ、どうx + yすればよいでしょうか? 値を出力したりどこにも保存したくないのに、なぜそれを入力する必要があるのでしょうか?

あなたの生徒は、「何をするのx + y?」と混乱するでしょう。

何らかの式を表示したい場合は、一貫してprintステートメントをその前に置くか、値に割り当てます。

人々は逆に混乱していることが多く、それがreturn実際に値を返すことを知らないため、常に を使用したいと思っていますprint。関数をインタラクティブに定義して、そこに return を入れることができることを忘れないでください。次に、s がなくても、関数がその値を返すことを示すことができますprint

于 2013-03-20T21:51:19.627 に答える
1

式の結果を抑制するようにシェルを構成することはできないと思いますが、すべての式を変数に代入するだけでうまくいくでしょうか? その場合、何も印刷されません...

例えば

x=5
y=7
z = x+y
于 2013-03-20T21:29:12.517 に答える