Hướng dẫn what is circular import in python? - Nhập khẩu vòng tròn trong python là gì?

Trong Python, một mô -đun có thể được thực hiện bằng cách nhập các mô -đun khác. Trong một số trường hợp, một phụ thuộc tròn được tạo ra. Sự phụ thuộc tròn là trường hợp khi một số mô -đun phụ thuộc vào nhau. Nó có thể tạo ra các vấn đề trong kịch bản như khớp nối chặt chẽ và lỗi tiềm năng.

Để chạy tập lệnh mà không có bất kỳ lỗi nào, sự phụ thuộc tròn phải được xóa. Sự phụ thuộc tròn có thể được tạo ra theo nhiều cách. Với một chương trình được thiết kế tốt, những trường hợp này có thể tránh được.

Nhập khẩu tròn Python:

Nhập hình tròn là một lỗi khái niệm được hình thành do sự phụ thuộc tròn được tạo ra với câu lệnh nhập trong chương trình Python của chúng tôi.

  1. Nhập khẩu tròn Python là một loại phụ thuộc tròn. Nó xảy ra trong Python khi hai hoặc nhiều mô hình nhập lẫn nhau và nó lặp lại kết nối nhập vào một cuộc gọi tròn vô hạn.
  2. Với nhập vòng tròn, tập lệnh Python gây ra lỗi. Để chạy tập lệnh Python, nó phải được xóa và rất khó tìm và xóa tập lệnh bằng tay.
  3. Nhập khẩu thông tư được tạo ra do thiết kế mã hóa xấu và các dị thường logic liên quan đến triển khai.

Dưới đây là một tình huống được hiển thị bằng ba chương trình riêng biệt:

# module1 created
import module2
def function1():
    module2.function2()
def function3():
    print('Hasta la vista, Gaurav!')

# module 2
import module1
def function2():
    print('Hey, Gaurav')
    module1.function3()

# __init.py
import module1
module1.function1()

Explanation:

Ở đây, chúng tôi đã xác định ba chương trình. 2 trong số chúng được coi là mô -đun. Trong hàm đầu tiên Hàm1 () & nbsp; đã được gọi là có mô -đun2.function2 () trong chính nó là hàm gọi. Hàm2 () của mô -đun 2 một lần nữa có in () và hàm3 và phần thân của function3 () có một số in ().

Cuối cùng, __init__.py đang gọi MODULE1.FUNCTION1 (). Các cuộc gọi tròn của các câu lệnh nhập và chức năng liên quan của chúng sẽ tạo ra một lỗi.

NOTE:

Khi Python thực hiện nhập mô -đun, nó xác minh và đi qua sổ đăng ký mô -đun để xác định xem mô -đun đã được nhập. Trong trường hợp mô -đun đã được đăng ký, Python sử dụng đối tượng hiện có của nó từ bộ đệm.

Cơ quan đăng ký mô -đun không có gì ngoài cấu trúc dữ liệu hoặc cấu trúc bảng chứa thông tin về nhiều lần nhập (được xác định trước và xác định người dùng) của các mô -đun được khởi tạo và lập chỉ mục với (các) tên mô -đun. Các nhà phát triển có thể truy cập bảng này bằng cách sử dụng sys.modules.

Khắc phục nhập khẩu vòng tròn trong Python

Có nhiều cách mà nhập khẩu thông tư có thể tránh được. Một số trong số họ là:

  1. Thay đổi tên của tập lệnh Python làm việc
  2. Nhập mô -đun
  3. Tránh nhập khẩu tròn
  4. Hợp nhất các mô -đun
  5. Nhập khi cần

Thay đổi tên của tập lệnh Python làm việc:

Thay đổi tên của tệp làm việc khác với mô -đun được nhập trong tập lệnh có thể tránh được vấn đề nhập tròn.

Nhập mô -đun::

Tránh nhập các đối tượng hoặc chức năng từ một mô -đun có thể gây ra nhập vòng tròn. Thật tốt khi nhập toàn bộ mô -đun để tránh nhập vòng tròn.

Tránh nhập khẩu thông tư::

Có nhiều trường hợp một hàm mô -đun phụ thuộc vào mô hình khác, từ đó phụ thuộc vào nó. Trường hợp này chủ yếu tạo ra nhập khẩu tròn.

Hợp nhất các mô -đun::

Khi một mô -đun phụ thuộc vào mô hình khác và mô -đun đó phụ thuộc vào đầu tiên thì thực tế tốt là hợp nhất cả hai mô -đun để tránh nhập vòng tròn.

Program:

# one module
def fun1():
     print('In function 1')
    fun2()
def fun2():
    print('In function2')
    function3()
def function3():
    print('In function 3')
fun1()

Explanation:

Ở đây, hợp nhất cả Module1 và Module2, để các chức năng do người dùng xác định trong chúng theo một mô-đun.

Hướng dẫn what is circular import in python? - Nhập khẩu vòng tròn trong python là gì?

Nhập khi cần:

Mô -đun Python có thể được nhập bất cứ nơi nào trong chương trình. Python không cần thiết đầu tiên để nhập mô -đun và bắt đầu làm việc trên nó. Nhập mô -đun trước một dòng cần thiết để tránh nhập vòng tròn.

Program:

def fun1():
    print('In function 1')
    import newmodule
    newmodule.fun3()
def fun2():
    print('In function 2')

Explanation:

Ở đây, trong chức năng, người ta nhập NewModule trước khi gọi FUN3.

Hướng dẫn what is circular import in python? - Nhập khẩu vòng tròn trong python là gì?

Conclusion:

Chúng tôi hy vọng bài viết này đã đưa ra một ý tưởng rõ ràng về cách đi trước vấn đề nhập khẩu thông tư. Chúng tôi tìm hiểu về sự phụ thuộc tròn, nhập khẩu tròn và nhiều cách khác nhau để giải quyết vấn đề nhập khẩu tròn. Nhập khẩu tròn làm giảm khả năng tái sử dụng mã và tạo ra các đệ quy vô hạn dẫn đến lập trình không hiệu quả và rò rỉ bộ nhớ, và thậm chí có thể dẫn đến các hiệu ứng tầng. Đó là thực hành lập trình tốt để tránh nhập khẩu tròn.

Tài liệu tham khảo tròn trong Python là gì?

Một tham chiếu tròn trong Python là một thuật ngữ được sử dụng để xác định tình huống có một vòng lặp trong chương trình gây ra đệ quy vô hạn.Như bạn có thể biết, loại chương trình này sẽ không chấm dứt và có thể gây ra sự cố của máy.Tài liệu tham khảo tròn là một sai lầm phổ biến trong lập trình Python.a term that is used to define the situation where there is a loop in the program which causes infinite recursion. As you might be knowing, this kind of program will not terminate and can cause the crash of the machine. Circular references are a common mistake in Python programming.

Rất có thể là do nhập khẩu có nghĩa là gì?

Nhập hình tròn tạo tình huống khi nhập mô -đun sử dụng một mô -đun được nhập với mã được thực hiện một phần.Do đó, nó sẽ không thấy các đối tượng được tạo sau tuyên bố nhập.creates situation when importing module uses imported one with partially executed code. In consequence it will not see objects created after import statement.

Sự phụ thuộc tròn mô -đun là gì?

Trong kỹ thuật phần mềm, sự phụ thuộc tròn là mối quan hệ giữa hai hoặc nhiều mô -đun trực tiếp hoặc gián tiếp phụ thuộc vào nhau để hoạt động đúng.Các mô -đun như vậy còn được gọi là đệ quy lẫn nhau.a relation between two or more modules which either directly or indirectly depend on each other to function properly. Such modules are also known as mutually recursive.