質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

2回答

1043閲覧

python:*を使用したモジュールのインポート方法

esklia

総合スコア81

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/01/28 15:07

モジュールのインポート方法について、次のような問題に遭遇した時のことです。

fizzbuzzpy

1 2fizzbuzz関数が定義されたfizzbuzzモジュールが存在する時、fizzbuzz()を使用するにはどれか正しいのか? 3 4 5def fizzbuzz(n=101): 6 for i in range(0, n): 7 if i % 15 == 0: 8 print('FizzBuzz') 9 elif i%3 == 0: 10 print('Fizz') 11 elif i%5 == 0: 12 print('Buzz') 13 else: 14 print(i) 15 16➀import fizzbuzz 17fizzbuzz.fizzbuzz() 18➁from fizzbuzz import * 19fizzbuzz.fizzbuzz()

この場合➀が正答となっていましたが、➁はダメなのでしょうか?「from ファイル名(モジュール名) import *でファイル名の指定なしに呼び出しが可能になります。」という説明だったので、「fizzbuzz.pyからfizzbuzz関数を呼び出す」ということになり正しいと思うのですが…

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

質問文の➁は動きません。

python

1from fizzbuzz import * 2fizzbuzz()

なら実際に動作します。
*(アスタリスク)を使うことは普通は推奨されませんが、脇に置きます。from fizzbuzz import fizzbuzzなどがお作法的には良いです)

これはあたかも

python

1import fizzbuzz 2fizzbuzz = fizzbuzz.fizzbuzz

と書いたのと同じような効果があり、アクセスを簡略化してくれます。

逆に言うと、「モジュールそのもの」にはfizzbuzzという名前ではアクセスできなくなるので、fizzbuzz.fizzbuzzも無意味になります(関数にはfizzbuzzなんて属性はない、というエラーになることでしょう)。
(誤解のないように書いておくと、from fizz import buzzだったときにはfizzという名前で「モジュールそのもの」にアクセスできる、なんてことはありません。新たに作られる名前はbuzzだけです)

7. 単純文 (simple statement) — Python 3.8.1 ドキュメント

投稿2020/01/28 15:19

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

esklia

2020/03/11 03:38

ご返信が遅れてしまい大変申し訳ございません。*を使用するとファイル名を指定しなくてよくなるということですね。ご教示いただきありがとうございます。
guest

0

ダメなことはないですが、分かりやすさで言えば➀。
➁の場合何のモジュール使用したいのか、明白ではありません、すべての内容をimportしたことになります

投稿2020/01/28 15:25

harinezumi.py

総合スコア282

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hayataka2049

2020/01/28 15:30 編集

➁はダメです。理由は私の回答に書いた通り。
quickquip

2020/01/28 15:38 編集

②が正解じゃないのは「エラーで動かないから」でしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問