Không có sự khác biệt nào cả. Cả hai đều hoạt động giống nhau.
Tuy nhiên, từ góc độ phong cách, người ta có thể thích hợp hơn người kia. Và trên lưu ý rằng, các PEP-8 for imports nói rằng bạn nên nén from module import name1, name2
vào một dòng duy nhất và để lại import module1
trên nhiều dòng:
Yes: import os
import sys
No: import sys, os
Ok: from subprocess import Popen, PIPE
Để đối phó với @ teewuane của bình luận (lặp đi lặp lại ở đây trong trường hợp nhận xét bị xóa):
@ inspectorG4dget Điều gì sẽ xảy ra nếu bạn phải nhập nhiều chức năng từ một mô-đun và kết thúc là làm cho dòng đó dài hơn 80 char? Tôi biết rằng điều 80 char là "khi nó làm cho mã dễ đọc hơn" nhưng tôi vẫn tự hỏi liệu có cách nào gọn gàng hơn để làm điều này không. Và tôi không muốn làm từ foo nhập * mặc dù tôi về cơ bản nhập mọi thứ.
Vấn đề ở đây là làm một cái gì đó như sau có thể vượt quá giới hạn 80 char:
from module import func1, func2, func3, func4, func5
Về điều này, tôi có hai phản ứng (tôi không thấy PEP8 là quá rõ ràng về điều này) :
chia nó ra thành hai hàng nhập khẩu:
from module import func1, func2, func3
from module import func4, func5
Làm điều này có bất lợi là nếu module
bị loại bỏ khỏi codebase hoặc được tái cấu trúc khác, thì cả hai dòng nhập sẽ cần phải bị xóa. Điều này có thể chứng minh được đau đớn
Chia dòng:
Để giảm thiểu những lo ngại trên, nó có thể là khôn ngoan để làm
from module import func1, func2, func3, \
func4, func5
này sẽ cho kết quả trong một lỗi nếu dòng thứ hai là không bị xóa cùng với cụm từ đầu tiên, trong khi vẫn duy trì câu lệnh nhập số ít
Đầu tiên có thể là bao giờ nên hơi nhanh hơn, tùy thuộc vào thực hiện phiên dịch, tôi nghĩ, nhưng tôi không thể thực sự nghĩ về bất kỳ cách nào khác họ sẽ khác với quan điểm của người dùng ngôn ngữ. –