[解決済み] PythonのTurtleモジュールがインポートされない
質問
Python で turtle モジュールを使うのは初めてですが、インポートできないようです?
以下は私のコードです。
from turtle import *
pen1 = Pen()
pen2 = Pen()
pen1.screen.bgcolour("#2928A7")
というエラーが出て、こんな感じです。
Traceback (most recent call last):
File "C:\Python34\Python saves\turtle.py", line 2, in <module>
from turtle import *
File "C:\Python34\Python saves\turtle.py", line 5, in <module>
pen1 = Pen()
NameError: name 'Pen' is not defined
何がいけなかったのか、どなたか教えてください。
解決方法は?
問題は、あなたのプログラムの名前が "turtle.py" であることです。
そのため、Pythonがこのステートメントを見たとき
from turtle import *
という名前の最初のマッチングモジュールは
turtle
であり、その結果
あなたの
プログラム、"turtle.py"です。
言い換えれば、あなたのプログラムは基本的に自分自身をインポートし ではなく は、タートルのグラフィックス・モジュールです。
この問題を実証するためのコードを紹介します。
turtle.py
#! /usr/bin/env python
''' Mock Turtle
Demonstrate what happens when you give your program the same name
as a module you want to import.
See http://stackoverflow.com/q/32180949/4014959
Written by PM 2Ring 2015.08.24
'''
import turtle
foo = 42
print(turtle.foo)
help(turtle)
このコードが実際にどのように表示されるかを示すべきでしょうね...。
として実行すると
turtle.py
を実行すると、以下のようなヘルプが表示されます。
Help on module turtle:
NAME
turtle - Mock Turtle
FILE
/mnt/sda4/PM2Ring/Documents/python/turtle.py
DESCRIPTION
Demonstrate what happens when you give your program the same name
as a module you want to import.
See http://stackoverflow.com/q/32180949/4014959
Written by PM 2Ring 2015.08.24
DATA
foo = 42
(END)
を打つと
Q
をクリックしてヘルプから抜け出すと、再びヘルプ情報が表示されます。また
Q
を実行すると
42
42
が印刷されます。
なぜ "help" メッセージと42が2回印刷されるのでしょうか?それは
turtle.py
は、インポートされたときに実行され、さらに、そのインポート中に
後
は
import
ステートメントを使用します。Pythonはすでにインポートしたモジュールをインポートしようとしないことに注意してください(ただし、明示的に
reload
). もしPythonが
した。
再インポートすると、上記のコードはインポートの無限ループに陥ってしまいます。
として実行すると
mockturtle.py
と表示されます。
Traceback (most recent call last):
File "./mock_turtle.py", line 16, in <module>
print(turtle.foo)
AttributeError: 'module' object has no attribute 'foo'
そしてもちろんそれは、標準の
turtle
モジュールは、実際には
foo
属性があります。
関連
-
Python Decorator 練習問題
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで辞書に新しいキーを追加するにはどうすればよいですか?
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Pythonで例外を手動で発生(スロー)させる
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] 億の相対的輸入
-
[解決済み】Pythonに三項条件演算子はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python カメの描画コマンドとその例
-
Pythonによるjieba分割ライブラリ
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
Pythonを使って簡単なzipファイルの解凍パスワードを手作業で解く
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み】「RuntimeError: dictionary changed size during iteration」エラーを回避する方法とは?
-
[解決済み】インポートエラー。モジュール名 urllib2 がない
-
[解決済み】Python Error: "ValueError: need more than 1 value to unpack" (バリューエラー:解凍に1つ以上の値が必要です
-
[解決済み】SyntaxError: デフォルト以外の引数がデフォルトの引数に続く
-
[解決済み】「OverflowError: Python int too large to convert to C long" on windows but not mac