Các câu lệnh nhập dưới đây có một số khác biệt không? Hay chỉ là điều tương tự?Bất kỳ sự khác biệt nào giữa 2 lần nhập này?
from package import *
import package
Các câu lệnh nhập dưới đây có một số khác biệt không? Hay chỉ là điều tương tự?Bất kỳ sự khác biệt nào giữa 2 lần nhập này?
from package import *
import package
from package import *
nhập mọi thứ từ gói vào không gian tên cục bộ; điều này không được khuyến khích bởi vì nó có thể giới thiệu những thứ không mong muốn (như một hàm ghi đè lên một địa phương). Đây là một công cụ nhập nhanh và tiện dụng, nhưng nếu mọi thứ trở nên nghiêm trọng, bạn nên sử dụng cú pháp from package import X,Y,Z
hoặc import package
.
import package
nhập mọi thứ từ gói vào đối tượng địa phương package
. Vì vậy, nếu gói cài đặt chức năng something()
, bạn sẽ sử dụng nó theo package.something()
.
Ngoài ra, một điều khác cần được nói đến là trường hợp không gian tên lồng nhau: giả sử bạn có chức năng package.blabla.woohoo.func()
, bạn có thể import package.blabla.woohoo
và sử dụng package.blabla.woohoo.func()
, nhưng điều đó quá phức tạp. Thay vào đó, cách dễ dàng để thực hiện là from package.blabla import woohoo
và sau đó sử dụng woohoo.func()
hoặc from package.blabla.woohoo import func
và sau đó sử dụng func()
. Tôi hy vọng điều này có ý nghĩa. Nếu không, đây là một mảnh mã để minh họa:
import package.blabla.woohoo
package.blabla.woohoo.func()
from package.blabla import woohoo
woohoo.func()
from package.blabla.woohoo import func
func()
Hope this helps :)
Sự khác biệt là việc sử dụng một không gian tên cho gói.
from package import *
class_in_package()
vs
import package
package.class_in_package()
Họ rất khác nhau, xem [Nhập Python Modules] (http://effbot.org/zone/import-confusion.htm). –