Hướng dẫn can files import each other python? - các tệp có thể nhập lẫn nhau python không?

Các mô -đun có thể nhập vào theo chu kỳ, nhưng có một sự bắt bóng. Trong trường hợp đơn giản, nó sẽ hoạt động bằng cách di chuyển các câu lệnh import webbrowser 2 sang dưới cùng của tệp hoặc không sử dụng cú pháp import webbrowser 3.

Đây là lý do tại sao nó hoạt động:

Khi bạn nhập một mô -đun, Python lần đầu tiên kiểm tra import webbrowser 4. Nếu nó ở đó, nó chỉ nhập từ đó. Nếu nó không có ở đó, nó cố gắng nhập nó theo cách bình thường; Về cơ bản, nó tìm thấy tệp và chạy các thứ trong đó.

Chạy một mô -đun điền vào nội dung của mô -đun. Ví dụ: giả sử chúng ta có mô -đun này, được đặt tên một cách sáng tạo import webbrowser 5:

import webbrowser def open_example(): webbrowser.open('//www.example.com/')

Khi bắt đầu, mô -đun trống. Sau đó, Python thực thi:

import webbrowser

Sau đó, mô -đun chỉ chứa import webbrowser 6. Sau đó, Python thực hiện điều này:

def open_example(): webbrowser.open('//www.example.com/')

Python tạo ra import webbrowser 7. Bây giờ mô -đun chứa import webbrowser 6 và import webbrowser 7.

Nói import webbrowser 6 chứa mã này:

from example_opener import open_example def open(url): print url

Nói import webbrowser 5 được nhập khẩu đầu tiên. Mã này được thực thi:

import webbrowser

import webbrowser 6 chưa được nhập khẩu, vì vậy Python thực hiện nội dung của import webbrowser 6:

from example_opener import open_example

import webbrowser 5 đã được nhập khẩu, nhưng chưa được thực hiện đầy đủ. Python không quan tâm. Python kéo mô -đun ra khỏi import webbrowser 4. Tại thời điểm này, import webbrowser 5 vẫn trống. Nó chưa xác định import webbrowser 7, thậm chí cũng không hoàn thành nhập import webbrowser 6. Python không thể tìm thấy import webbrowser 7 trong import webbrowser 5, vì vậy nó thất bại.

Điều gì sẽ xảy ra nếu chúng tôi nhập import webbrowser 7 từ cuối import webbrowser 6 và import webbrowser 6 từ cuối import webbrowser 5? Python sẽ bắt đầu bằng cách thực thi mã này:

def open_example(): webbrowser.open('//www.example.com/')

import webbrowser 6 chưa tồn tại, nhưng nó không quan trọng cho đến khi import webbrowser 7 được gọi. Bây giờ import webbrowser 5 chỉ chứa import webbrowser 7. Sau đó nó thực hiện:

import webbrowser

Nó chưa được nhập khẩu, vì vậy Python thực thi import webbrowser 6. Nó bắt đầu:

def open(url): print url

Nó xác định import webbrowser 0. Sau đó, nó thực hiện:

from example_opener import open_example

import webbrowser 5 là trong import webbrowser 4, vì vậy nó sử dụng điều đó. import webbrowser 5 chứa import webbrowser 7, vì vậy nó thành công. Python kết thúc nhập khẩu import webbrowser 6. Điều đó kết thúc nhập khẩu import webbrowser 6 từ import webbrowser 5. Đó là điều cuối cùng trong import webbrowser 5, vì vậy việc nhập import webbrowser 5 hoàn thành, cũng thành công.

Trong Python, một mô -đun là một đơn vị mã Python có thể được nhập (tải và sử dụng) bằng mã Python khác. Một mô -đun có thể chứa các định nghĩa (như các hàm và hằng số), cũng như các câu lệnh khởi tạo các định nghĩa đó. Khi mã mô -đun được viết, nó có thể được sử dụng lại bởi bất kỳ tập lệnh nào nhập mô -đun.module is a single unit of Python code that can be imported (loaded and used) by other Python code. A module can contain definitions (like functions and constants), as well as statements that initialize those definitions. Once the module code is written, it can be reused by any script that imports the module.

Một cách phổ biến để tạo mô -đun Python là tạo một tệp với tên tệp kết thúc bằng from example_opener import open_example 0 và viết mã mô -đun vào đó. Nếu chúng ta sử dụng một phần mở rộng tệp khác trong tên tệp hoặc không có tiện ích mở rộng nào, các câu lệnh import webbrowser 2 tiêu chuẩn được hiển thị bên dưới sẽ không hoạt động và chúng ta sẽ phải sử dụng from example_opener import open_example 2 thay thế, đòi hỏi nhiều mã hơn (thêm thông tin bên dưới).

Để minh họa việc sử dụng tiêu chuẩn import webbrowser 2, giả sử chúng tôi tạo một tệp có tên from example_opener import open_example 4 với định nghĩa chức năng sau:

Bây giờ mỗi khi chúng ta muốn viết "Xin chào, thế giới!" Đối với màn hình từ tập lệnh Python, chúng ta chỉ có thể nhập mô -đun này thay vì phải viết lại tin nhắn. Nó cũng cho phép chúng tôi thay đổi một dòng mã bên trong from example_opener import open_example 4 thay vì trong nhiều tập lệnh khác nhau nếu chúng tôi quyết định thay đổi thông điệp mà chúng tôi muốn hiển thị trong tất cả các tập lệnh sử dụng chức năng này.

from example_opener import open_example 4 chứa hàm from example_opener import open_example 7 mà chúng tôi đã thấy ở trên.

Tên được sử dụng trong câu lệnh import webbrowser 2 chỉ đơn giản là tên tệp của mô -đun mà không có tiện ích mở rộng from example_opener import open_example 0 ở cuối.

Phiên bản Python 3.3 và cao hơn cho phép nhập các mô -đun dễ dàng trong các thư mục con của thư mục của tập lệnh hiện tại. Nếu bạn đang sử dụng phiên bản Python thấp hơn 3.3, bạn có thể làm theo các bước trong nhập tệp trong một thư mục khác.

Trong một đường dẫn hệ thống tệp, chúng tôi sẽ tách các thành phần của đường dẫn bằng def open_example(): webbrowser.open('//www.example.com/') 0 (Linux, MacOS, v.v.) hoặc def open_example(): webbrowser.open('//www.example.com/') 1 (Windows). Tuy nhiên, trong câu lệnh Python import webbrowser 2, chúng tôi tách các thành phần đường dẫn bằng DOT (def open_example(): webbrowser.open('//www.example.com/') 3).

trong đó def open_example(): webbrowser.open('//www.example.com/') 4 là bất kỳ tên nào chúng tôi chọn. Chúng tôi cũng có thể nhập chức năng trực tiếp:

Điều này hoạt động ngay cả khi có nhiều cấp độ của thư mục con. Ví dụ: nếu chúng ta có cấu trúc thư mục sau:

Bây giờ chúng ta hãy nói rằng chúng ta chuyển from example_opener import open_example 4 sang một thư mục bên ngoài cây thư mục hiện tại:

Theo mặc định, Python tìm các tệp trong cùng một thư mục (bao gồm cả thư mục con) là tệp tập lệnh hiện tại, cũng như ở các vị trí tiêu chuẩn khác được xác định trong def open_example(): webbrowser.open('//www.example.com/') 6. Nếu bạn tò mò những vị trí này là gì, bạn có thể in biến def open_example(): webbrowser.open('//www.example.com/') 6 như thế này:

Tuy nhiên, nếu tệp chúng tôi muốn nhập hoàn toàn ở một nơi khác, trước tiên chúng tôi sẽ phải nói với Python nơi để tìm bằng cách thêm các thư mục tìm kiếm vào def open_example(): webbrowser.open('//www.example.com/') 6. Trong ví dụ của chúng tôi, chúng tôi có thể viết trong def open_example(): webbrowser.open('//www.example.com/') 9:

Lưu ý rằng đường dẫn được nối với def open_example(): webbrowser.open('//www.example.com/') 6 là một đường dẫn tuyệt đối. Nếu chúng tôi sử dụng đường dẫn tương đối, đường dẫn sẽ giải quyết khác nhau dựa trên thư mục mà người dùng đang chạy tập lệnh, không liên quan đến đường dẫn của ____ ____ 69.

Để nối một thư mục liên quan đến tệp tập lệnh này, bạn có thể sử dụng import webbrowser 2 để lấy đường dẫn đầy đủ của tập lệnh hiện tại và xây dựng một đường dẫn đầy đủ đến nhập từ đó. Trong def open_example(): webbrowser.open('//www.example.com/') 9 chúng ta có thể viết:

Phiên bản Python 3.4 trở lên cung cấp chức năng thông qua thư viện from example_opener import open_example 2 tích hợp cho phép chúng tôi tải bất kỳ tệp nào ở bất cứ đâu dưới dạng mô-đun Python, ngay cả khi tên tệp của tệp không kết thúc trong from example_opener import open_example 0 (nó có thể có phần mở rộng tệp khác hoặc không có phần mở rộng tệp ở tất cả).

Lưu ý ở đây rằng tên tệp import webbrowser 6 không có phần mở rộng tệp. Trong trường hợp này, chúng tôi không thể sử dụng câu lệnh import webbrowser 2 đơn giản để nhập tệp đó. Thay vào đó, chúng ta có thể viết trong def open_example(): webbrowser.open('//www.example.com/') 9:

Lưu ý rằng đường dẫn được truyền vào import webbrowser 9 là một đường dẫn tuyệt đối. Nếu chúng tôi sử dụng một đường dẫn tương đối như def open(url): print url 0, đường dẫn sẽ giải quyết khác nhau dựa trên thư mục mà người dùng đang chạy tập lệnh, không liên quan đến đường dẫn của ____ 69.

Nếu chúng tôi muốn tham chiếu một tệp liên quan đến đường dẫn của tệp tập lệnh hiện tại của chúng tôi, chúng tôi có thể sử dụng import webbrowser 2 để trước để lấy đường dẫn của tệp tập lệnh hiện tại của chúng tôi và sau đó xây dựng một đường dẫn đầy đủ từ đó:

import webbrowser 0import webbrowser 1

2 tập lệnh Python có thể nhập khẩu nhau không?

Bạn có thể có mã mà bạn muốn tự chạy và nhập từ các tập lệnh khác.Trong trường hợp đó, thường có giá trị để tái cấu trúc mã của bạn để bạn chia phần chung thành mô -đun thư viện.Mặc dù đó là một ý tưởng tốt để tách các tập lệnh và thư viện, tất cả các tệp Python có thể được thực thi và nhập.all Python files can be both executed and imported.

Chúng ta có thể nhập một tệp python sang một tệp python khác không?

Có thể nhập bất kỳ chức năng nào từ bất kỳ tệp nào, với một dòng mã đơn giản cung cấp đường dẫn (tuyệt đối hoặc tương đối, được mã hóa cứng hoặc được lưu trữ trong một biến) cho tệp.Python, chỉ cần làm điều đó!, with a simple line of code providing the path (absolute or relative, hard-coded or stored in a variable) to the file. Python, just do it!

Các mô -đun có thể nhập lẫn nhau không?

Các mô -đun có thể nhập các mô -đun khác.Đó là thông lệ nhưng không bắt buộc phải đặt tất cả các báo cáo nhập ở đầu mô -đun (hoặc tập lệnh, cho vấn đề đó).Các tên mô -đun đã nhập, nếu được đặt ở cấp cao nhất của một mô -đun (bên ngoài bất kỳ chức năng hoặc lớp nào), sẽ được thêm vào không gian tên toàn cầu của mô -đun.. It is customary but not required to place all import statements at the beginning of a module (or script, for that matter). The imported module names, if placed at the top level of a module (outside any functions or classes), are added to the module's global namespace.

Chủ đề