web-dev-qa-db-ja.com

インタープリターを使用して端末でpython3コードをコンパイルする

コマンドpython3 name.pyを使用してコードをコンパイルすると、コードは実行されますが、ストーリー全体が終了し、コンパイルされたデータを使用して何もできなくなります。

私は何らかの形でプログラムをインタープリターにコンパイルし、そのインタープリターのデータを実験する能力を持ちたいです。たとえば、name.pyプログラムで定義および設定されている関数と引数でtimeit(function(argument))を使用します。

2
Oresto

探しているのは-iスイッチです。マンページによると:

-i    When  a  script  is passed as first argument or the -c option is
      used, enter interactive mode after executing the script  or  the
      command.  It does not read the $PYTHONSTARTUP file.  This can be
      useful to inspect global variables  or  a  stack  trace  when  a
      script raises an exception.

したがって、スクリプト名がname.pyの場合、実行する必要があるのは次のとおりです。

python3 -i name.py
2
daltonfury42

@ daltonfury42の答えはそれを行う1つの方法ですが、インタプリタに入る前に最初にスクリプトを実行することに注意してください。もう1つは、スクリプトと同じディレクトリでインタープリターを実行し、インポートするだけです。

$ cat spam.py 
def main(*args):
    print("Called main() with args: ", args)

if __== "__main__":
    main("foo")
$ python3 spam.py 
Called main() with args:  ('foo',)
$ python3
>>> import spam
>>> spam.main("bar")
Called main() with args:  ('bar',)
>>> 
0
Timo