知識には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
。