インポートまたはインポートから、それが問題です

知識には3つの段階があります。ツールを使用する、ツールがどのように機能するかを理解する、このツールを使用するように他の人に教えることができます。少しずつ、彼は3番目に流れ始め、彼が前に尋ねなかった質問を自分自身に尋ね始めました。







たとえば、どちらが良いですかimport module



またはfrom module import function









私はこれをもう少し深く掘り下げることにしました、StackOverflowの答えは私を満足させませんでした。







読むのが面倒な人のために:すべてのオプションが良いです。







言語の作成者からのヒント



一次資料、すなわち-PEP8に目を向けましょう







モジュールからクラスをインポートするときは、次のように行ってもかまいません。







from myclass import MyClass
from foo.bar.yourclass import YourClass
      
      





, :







import myclass
import foo.bar.yourclass
      
      





myclass.MyClass



foo.bar.yourclass.YourClass





PEP-8 .







?



, . . , .









, — . , , .







"" "" .







from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!
      
      





from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)
      
      





.







import pytest

def test_zero_division():
    with pytest.raises(ZeroDivisionError):
        1 / 0
      
      





, .

.

, .









. , .







import json

json.load(...)
json.loads(...)
json.dump(...)
json.dumps(...)
      
      





.







from pickle import load
from marshal import dumps
from xmlrpc.client import loads
from xml.etree.ElementTree import dump
      
      





load



json.load



, pickle.load



.

. – . , – . , . , .









, . , .







— , .

, IDE , . , . , isort.







.









. . .







, .









IDE , . : , / . , , ,

– .







100% – . , .







MonkeyPatch



- . . , , , , , , , .

, , - .







– .









, / . , .









, . import module



, from module import item as module_item



. , as



, , . .







import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
      
      







私の意見では、両方のアプローチを使用しても、均一性に大きく違反することはなく、安全に混合できます。ただし、同じモジュールではないことが望ましいです。いくつかのツールはこれを誓いますhttps//lgtm.com/rules/1818040193/







結論



私自身、モジュールをインポートおよび作成するときは、次のアプローチを取ります。

次のimport from



場合を除いて、を使用します







  • 名前の競合があります(または後で発生する可能性があります)。
  • モジュールの関数/クラスには短くて一般的な名前があります(json



    );
  • たとえば、モジュールの作成者には、確立された伝統や具体的な推奨事項がありますpytest






All Articles