6
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
Tôi đã thực hiện một số nghiên cứu và tôi đã xem qua bài viết sau: //effbot.org/zone/import-confusion.htm. Trong khi đây dường như là một hướng dẫn tuyệt vời, nó đã được viết vào năm 1999, một thời gian trước. Tôi đang sử dụng Python 3.4.3, vì vậy tôi nghĩ rằng một số điều đã thay đổi, điều đó làm tôi lo lắng, vì tôi không muốn tìm hiểu những gì không áp dụng. Do đó, trong Python 3, tất cả các cách để nhập các gói và mô -đun, một cách chi tiết là gì? Những cách phổ biến nhất và nên được sử dụng trên những cách khác?
Jamil Noyda
2.9162 Huy hiệu vàng21 Huy hiệu bạc25 Huy hiệu Đồng2 gold badges21 silver badges25 bronze badges
Hỏi ngày 28 tháng 8 năm 2015 lúc 4:53Aug 28, 2015 at 4:53
Những cách duy nhất quan trọng đối với việc sử dụng thông thường là ba cách đầu tiên được liệt kê trên trang đó:
import module
from module import this, that, tother
from module import *
Những điều này đã không thay đổi trong Python 3. [Một số chi tiết về nơi Python tìm kiếm tệp module.py
để tải module
đã được điều chỉnh, nhưng hành vi của chính nhập vẫn hoạt động như được mô tả trên trang bạn đã liên kết.]
Một điều đã được thêm vào, trước Python 3 nhưng kể từ bài báo đó. Đó là nhập khẩu tương đối rõ ràng. Những điều này cho phép bạn làm những việc như
from package import [x, y]
0. Loại nhập khẩu này chỉ có thể được sử dụng từ bên trong một gói; Nó cho phép các mô-đun trong một gói tham khảo các mô-đun khác trong cùng một gói theo cách liên quan đến gói [tức là, mà không phải chỉ định cách nhập gói cấp cao nhất]. Bạn có thể đọc các chi tiết trong PEP 328. Tuy nhiên, ngay cả điều này về cơ bản chỉ là một biến thể mới trên cú pháp kiểu from package import [x, y]
1 được đề cập trên trang bạn đã liên kết.from package import [x, y]
2 vẫn hoạt động trong Python 3. Đây là một chức năng nội bộ mà bạn chỉ cần sử dụng nếu làm điều gì đó khá bất thường. Điều tương tự áp dụng cho các chức năng khác nhau trong mô -đun from package import [x, y]
3 [và mô -đun from package import [x, y]
4 không dùng nữa]. Mức độ chính xác của sự phù thủy của các chức năng nhập khẩu này thay đổi từ cái này sang cách khác, nhưng đối với việc sử dụng thông thường "Tôi chỉ muốn nhập mô -đun này và sử dụng nó", về cơ bản bạn không bao giờ cần sử dụng chúng. Chúng chỉ cần nếu bạn muốn làm một cái gì đó như nhập một cách tự động một mô -đun mà tên không được biết đến cho đến khi chạy.Đã trả lời ngày 28 tháng 8 năm 2015 lúc 5:01Aug 28, 2015 at 5:01
BrenbarnbrenbarnBrenBarn
Phù thủy vàng 234K3535 gold badges397 silver badges375 bronze badges
3
Zen of Python cung cấp cho bạn một số gợi ý:
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Vì vậy, với phương pháp đơn giản, rõ ràng là:
from package import [x, y]
5 module_name và nó bảo tồn các không gian tên, tôi sẽ đề xuất rằng trong khi có một số phương thức nhập như bạn có thể thấy từ mục nhập thủ công Python3 và bạn có thể mở rộng chúng bằng cách ghi đè lên phương thức from package import [x, y]
6 hoặc bằng cách cuộn tôi Sẽ nói gắn bó với nó cho đến khi bạn có một lý do chính đáng.and it preserves namespaces I would suggest that while there are several import methods as you can see from the
python3 manual entry and you can extend them by overriding the from package import [x, y]
6 method or by rolling your own I would say stick with it until you have a good reason not to.Thực tế là ____16 được bao quanh bởi các dấu gạch dưới kép cũng là một gợi ý để để nó một mình.
Nếu bạn đang tìm cách hiểu các quyết định thiết kế đằng sau các cơ chế nhập khẩu thì hãy bắt đầu với hướng dẫn sau đó theo dõi PEPS 302 & 420 là điểm khởi đầu tốt.
Đã trả lời ngày 28 tháng 8 năm 2015 lúc 5:11Aug 28, 2015 at 5:11
Steve Barnessteve BarnesSteve Barnes
26.8K6 Huy hiệu vàng60 Huy hiệu bạc70 Huy hiệu đồng6 gold badges60 silver badges70 bronze badges
Tôi nghĩ nhập AS Tuple sẽ tốt hơn nhiều cho khả năng đọc và chiều dài dòng tối đa [PEP8]readability and Maximum Line Length[pep8]
Tuyên bố nhập khẩu có hai vấn đề::
- Các báo cáo nhập khẩu dài có thể khó viết, yêu cầu các mâu thuẫn khác nhau để phù hợp với các hướng dẫn theo phong cách pythonic.
- Nhập khẩu có thể mơ hồ khi đối mặt với các gói; Trong một gói, không rõ liệu
8 có đề cập đến một mô -đun trong gói hay một số mô -đun bên ngoài gói hay không.from package import [x, y]
9 Ngôn ngữ cũng có điều tương tự cho điều đófrom package import [x, y]
Vì vậy, nhiều hơn thích nhập khẩu loại này
from package import [x, y]
Thay vì điều này
from authentication.views import SignupView, LoginView, VerificationView, SignupDetailView
//legacy.python.org/dev/peps/pep-0328/
Đã trả lời ngày 11 tháng 3 năm 2019 lúc 12:10Mar 11, 2019 at 12:10
Jamil Noydajamil NoydaJamil Noyda
2.9162 Huy hiệu vàng21 Huy hiệu bạc25 Huy hiệu Đồng2 gold badges21 silver badges25 bronze badges
Hỏi ngày 28 tháng 8 năm 2015 lúc 4:53
import module
1from authentication.views import SignupView, LoginView, VerificationView, SignupDetailView
from module import *
Những cách duy nhất quan trọng đối với việc sử dụng thông thường là ba cách đầu tiên được liệt kê trên trang đó:readability: Other programmer cannot understand what all are actually used in the current module. Memory overload: All are loaded in to memory. Best practices for using import in a module.
Những điều này đã không thay đổi trong Python 3. [Một số chi tiết về nơi Python tìm kiếm tệp module.py
để tải module
đã được điều chỉnh, nhưng hành vi của chính nhập vẫn hoạt động như được mô tả trên trang bạn đã liên kết.]Aug 28, 2015 at 12:50
Một điều đã được thêm vào, trước Python 3 nhưng kể từ bài báo đó. Đó là nhập khẩu tương đối rõ ràng. Những điều này cho phép bạn làm những việc như
from package import [x, y]
0. Loại nhập khẩu này chỉ có thể được sử dụng từ bên trong một gói; Nó cho phép các mô-đun trong một gói tham khảo các mô-đun khác trong cùng một gói theo cách liên quan đến gói [tức là, mà không phải chỉ định cách nhập gói cấp cao nhất]. Bạn có thể đọc các chi tiết trong PEP 328. Tuy nhiên, ngay cả điều này về cơ bản chỉ là một biến thể mới trên cú pháp kiểu from package import [x, y]
1 được đề cập trên trang bạn đã liên kết.trishnag
2 vẫn hoạt động trong Python 3. Đây là một chức năng nội bộ mà bạn chỉ cần sử dụng nếu làm điều gì đó khá bất thường. Điều tương tự áp dụng cho các chức năng khác nhau trong mô -đun from package import [x, y]
3 [và mô -đun from package import [x, y]
4 không dùng nữa]. Mức độ chính xác của sự phù thủy của các chức năng nhập khẩu này thay đổi từ cái này sang cách khác, nhưng đối với việc sử dụng thông thường "Tôi chỉ muốn nhập mô -đun này và sử dụng nó", về cơ bản bạn không bao giờ cần sử dụng chúng. Chúng chỉ cần nếu bạn muốn làm một cái gì đó như nhập một cách tự động một mô -đun mà tên không được biết đến cho đến khi chạy.1 gold badge3 silver badges13 bronze badgesfrom package import [x, y]
Đã trả lời ngày 28 tháng 8 năm 2015 lúc 5:01init.py file, it can be an empty file].
#mymod1.py
def add_fun[a,b]:
return a+b
def sub_fun[a,b]:
return a-b
def mul_fun[a,b]:
return a*b
def div_fun[a,b]:
return a/b
#mymod2.py
def fun1[...]:
........
........
def fun2[...]:
........
........
Brenbarnbrenbarn
from mypkg.mymod1 import * #import all the function from mymod1
add_fun[10, 20]
mul_fun[10, 2]
from mypkg.mymod1 import add_fun,div_fun #import only needed functions from mymod1
add_fun[10, 20]
div_mul[10, 2]
from mypkg import mymod1 #import mymod module
mymod1.add_fun[10, 20]
mymod1.mul_fun[10, 2]
import mypkg #import package and use different models inside it
mypkg.mymod1.add_fun[10, 20]
mypkg.mymod1.mul_fun[10, 2]
Phù thủy vàng 234K35May 31, 2021 at 10:54