[解決済み] Pythonモジュールのインポート。単一行と複数行の比較
質問
Pythonでモジュールをインポートする場合、この違いは何でしょうか。
from module import a, b, c, d
そして、この
from module import a
from module import b
from module import c
from module import d
私にとっては、コードを凝縮して最初の例を使うのが常に理にかなっているのですが、世の中には2番目の例を使っているコードサンプルも見受けられます。何か違いがあるのでしょうか、それともプログラマーの好みの問題なのでしょうか?
どのように解決するのですか?
全く違いはありません。どちらも機能はまったく同じです。
しかし、スタイル的な観点からは、どちらかの方が好ましいかもしれません。その点では
インポートのための PEP-8
を圧縮すべきであると言っています。
from module import name1, name2
を一行に圧縮し
import module1
を複数行に残す。
Yes: import os
import sys
No: import sys, os
Ok: from subprocess import Popen, PIPE
@teewuane さんのコメントに対して(コメントが削除されることを想定してここで繰り返します)。
@inspectorG4dget 1つのモジュールから複数の関数をインポートする必要がある場合、その行が80文字より長くなってしまったらどうしますか? その結果、その行が80文字より長くなってしまったら?私が知っているのは 80文字というのは、コードがより読みやすくなる場合であることは分かっています。 もっと整然としたやり方があるのではないかと思っています。そして、私は そして、私は基本的にすべてをインポートしているにもかかわらず、from foo import *を実行したくありません。 とはしたくないのです。
ここで問題なのは、以下のようなことをすると、80文字の制限を超える可能性があることです。
from module import func1, func2, func3, func4, func5
これに対して、私は2つの回答を持っています(PEP8がこれに関して過度に明確であるとは思えません)。
それを 2 つのインポートに分割する :
from module import func1, func2, func3
from module import func4, func5
この場合、もし
module
がコードベースから削除されるか、さもなければリファクタリングされた場合、両方のimport行を削除する必要がある、という欠点があります。これは手痛いことになる可能性があります。
行を分割する :
上記の懸念を軽減するために、以下のようにするのが賢明かもしれません。
from module import func1, func2, func3, \
func4, func5
この場合、2 行目も一緒に削除しないとエラーになりますが、それでも単文の import 文は維持されます。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 複数の例外を1行でキャッチする(ブロックを除く)
-
[解決済み] 複数行の長い文字列を作成するためのPythonicな方法
-
[解決済み] 億の相対的輸入
-
[解決済み] モジュール名を文字列で指定してインポートするには?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] Django 1.7で初期マイグレーションからマイグレートバックする方法は?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] SQLAlchemy: セッションの作成と再利用
-
[解決済み] PythonでファイルのMD5チェックサムを計算するには?重複
-
[解決済み] PythonでSVGからPNGに変換する
-
[解決済み] DataFrameに日付間の日数カラムを追加する pandas
-
[解決済み] Cythonのコードを含むPythonパッケージはどのように構成すればよいのでしょうか?
-
[解決済み] tensorflowのCPUのみのインストールでダイナミックライブラリ 'cudart64_101.dll' を読み込めなかった
-
[解決済み] Flask でグローバル変数はスレッドセーフか?リクエスト間でデータを共有するには?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] Pythonで、ウェブサイトが404か200かを確認するためにurllibをどのように使用しますか?
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?