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('http://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('http://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('http://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('http://www.example.com/')
0 (Linux, MacOS, v.v.) hoặc
def open_example():
    webbrowser.open('http://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('http://www.example.com/')
3).

trong đó

def open_example():
    webbrowser.open('http://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('http://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('http://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('http://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('http://www.example.com/')
9:

Lưu ý rằng đường dẫn được nối với

def open_example():
    webbrowser.open('http://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('http://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('http://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
0
import 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.