Khi Python nhập một gói, nó không nhập tất cả nội dung của gói - nó nhập nội dung của gói đó __init__.py
Nội dung của tập tin. (Hoặc ít nhất thì có vẻ như vậy.)
Tôi vừa thực hiện một số thử nghiệm với nó và tôi thấy như sau:
>>> nhập urllib
>>> thư mục(urllib)
['__buildins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__']
如您所见,hỏi
,sai lầm
,解析
,phản ứng
Vàtrình phân tích cú pháp robot
Không tồn tại. nó chỉ được nhập khẩu __init__.py
tài liệu.
Vì vậy, để thử nghiệm thêm, tôi đã xem xét tkinter
.
Đây là thư mục tkinter:
Vì vậy, để xác minh rằng ban đầu chỉ __init__.py
Lý thuyết có thể truy cập được, đây là một số lệnh liên quan đến tkinter:
>>> nhập tkinter
>>> tkinter.font
Traceback (most recent call last):
File "", line 1, in
AttributionError: mô-đun 'tkinter' không có thuộc tính 'phông chữ'
>>> tkinter.test
Traceback (most recent call last):
File "", line 1, in
AttributionError: mô-đun 'tkinter' không có thuộc tính 'test'
>>> tkinter.test.support
Traceback (most recent call last):
File "", line 1, in
AttributionError: mô-đun 'tkinter' không có thuộc tính 'test'
>>> thư mục(tkinter)
['HOẠT ĐỘNG', 'TẤT CẢ', 'ANCHOR', 'ARC', 'BASELINE', 'BEVEL', 'CÁI', 'DƯỚI', 'DUYỆT', 'NHƯNG', 'BaseWidget', 'BitmapImage', ' BooleanVar', 'Nút', 'CASCADE', 'TRUNG TÂM', 'CHAR', 'CHECKBUTTON', 'HỢP ĐỒNG', 'COMMAND', 'CURRENT', 'CallWrapper', 'Canvas', 'Checkbutton', 'DISABLED', 'DOTBOX', 'DoubleVar', 'E', 'END', 'EW', 'EXCEPTION', 'EXTENDED ', 'Mục nhập', 'Sự kiện', 'FALSE', 'ĐẦU TIÊN', 'PHẲNG', 'Khung', 'GROOVE', 'Lưới', 'ẨN', 'NGANG', 'CHÈN', 'BÊN TRONG', 'Hình ảnh', 'IntVar', 'LAST', 'TRÁI', 'Nhãn', 'LabelFrame', 'Hộp danh sách', 'MITER ', 'MOVETO', 'MULTIPLE', 'Menu', 'Menubutton', 'Message', 'Misc', 'N', 'NE', 'KHÔNG', 'KHÔNG', 'BÌNH THƯỜNG', 'NS', 'NSEW', 'NUMERIC', 'NW', 'NoDefaultRoot', 'TẮT', 'BẬT', 'BÊN NGOÀI', 'Menu tùy chọn', 'TRANG ', 'PIESLICE', 'PROJECTING', 'Gói', 'PanedWindow', 'PhotoImage', 'Địa điểm', 'RADIOBUTTON', 'RAISED', 'READABLE', 'RIDGE', 'RIGHT', 'ROUND', 'Radiobutton', 'S', 'SCROLL', 'SE', 'SEL', 'SEL_FIRST', 'SEL_LAST', 'SEPARATOR ', 'ĐƠN', 'RẮN', 'CHẬM', 'SW', 'Tỷ lệ', 'Thanh cuộn', 'Hộp quay', 'StringVar', 'TOP', 'TRUE', 'Tcl', 'TclError', 'TclVersion', 'Text', 'Tk', 'TkVersion', 'Toplevel', 'UNDERLINE', 'UNITS', 'VERTICAL ', 'Biến', 'W', 'WORD', ' CÓ THỂ VIẾT', 'Widget', 'Wm', 'X', 'XView', 'Y', 'CÓ', 'YView', '__buildins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '_cnfmerge ', '_default_root', '_exit', '_flatten', '_join', '_magic_re', '_setit', '_space_re', '_splitdict', '_stringify', '_support_default_root', '_test', '_tkerror', '_tkinter', '_varnum', 'hằng số', 'getboolean', 'getdouble', 'getint ', 'image_names', 'image_types', 'mainloop', 're', 'sys', 'muốn đối tượng']
nhận thấy thư mục
đáp lại vòng lặp chính
, tôi đã kiểm tra __init__.py
- Chắc chắn rồi,vòng lặp chính()
Xác định ở đó.
Vì vậy, để trả lời câu hỏi của bạn, Python chỉ hoạt động khi bạn thực hiện nhập urllib
tải khi urllib
của __init__.py
tập tin - thay vì request.py
.
biên tập: Như một điểm khác, trong thư mục(tkinter)
, một số biến được định nghĩa trong tkinter.constants
trong, thay vì __init__.py
. Điều này là do trong tkinter
của __init__.py
, nó sử dụng từ nhập tkinter.constants *
Đã nhập tkinter.constants
.
Tôi là một lập trình viên xuất sắc, rất giỏi!