2017-11-28 15 views
1

を実行しているコードは、なぜ、このPythonのコードはここで二回

import random 

print("Hello", end="") 
print("twice") 

とコードのスクリーンショット私は二回実行されているいくつかの理由のために、このコードにそれを実行

enter image description here

です。問題は、文をランダムにインポートするからのものであると思われます。なぜなら、その文を削除するか、他のモジュールをインポートしてもうまく動作するからです。

私はシステムにPythonを再インストールする必要があります。

+0

[スクリプトからインストールパッケージをインポートすると発生しますか「はImportError:名前をインポートすることはできません」「はAttributeErrorモジュールは何の属性を持っていない」]の可能性のある重複した(HTTPS:/ /stackoverflow.com/questions/36250353/importing-installed-package-from-script-raises-attributeerror-module-has-no-at) – tripleee

答えて

9

pythonに何か問題はありません。

理由は簡単です。(それはまたrandom命名されているため)

あなたのモジュールは、それ自体をインポートしている - これは、Pythonの検索の仕組みに関係しています。 pythonは、pythonpathからモジュールをインポートする前に、最初にあなたのルートフォルダからインポートしようとします。

docsから:

When a module named spam is imported, the interpreter first searches for a built-in module with that name. If not found, it then searches for a file named spam.py in a list of directories given by the variable sys.path. sys.path is initialized from these locations:

  • The directory containing the input script (or the current directory when no file is specified).
  • PYTHONPATH (a list of directory names, with the same syntax as the shell variable PATH).
  • The installation-dependent default.
+0

ああ私の神!これは私にとって起こっていた、それは私に理解する年齢がかかった!ありがとう! – Grezzo

1

この理由は、スクリプトrandom.pyと名付けましたし、その中にあなたがrandomをインポートしています。

randomは、むしろ、あなたが作成したrandomモジュールを内蔵のrandomモジュールをインポートしなくなります。これにより、スクリプトは同じステートメントを2回実行します(randomのようなものを試して読み込むと、他の醜いエラーにつながります)。

スクリプトの名前を変更すると、通常の動作になります。

0

あなたのスクリプトはrandom.pyと呼ばれているので、import randomでもスクリプトを実行しています。スクリプトの名前を正しく覚えておいてください。

0

あなたのpythonスクリプトの名前はrandom.pyですので、ランダムにインポートすると、モジュールをインポートするときにPythonでそれ自身がインポートされます。

のために2回印刷されます。 スクリプトの名前を変更するか、インポートを削除してください

2

ファイル(モジュール)がrandom.pyとなっているので、import randomはこのファイルをインポートします。

「インポート」とはどういう意味ですか? import somethingというステートメントは、Pythonに現在のディレクトリから始まる名前somethingを検索させます。 したがって、import randomの名前はビルドインのシャドウイングrandomをシャドーするので、このファイルのインポートになります。 さらに、インポートする名前が既に名前空間にある場合、importステートメントは無視されます。

インポートするモジュールが見つかると、そのコードが実行されます。その結果、スクリプトの流れは以下の通りである

  • 検索random.py
  • randomrandom.py
    • に含まれるコードを実行
    • 名前空間に追加します random名前がすでに名前空間に存在するため、 import randomステートメントは無視されます
    • 印刷テキスト
  • 印刷テキスト
関連する問題