Làm cách nào để nhập chức năng từ một tệp Python khác trong cùng thư mục?

Đôi khi, một dự án mới yêu cầu mã hiện có. Làm việc thông minh hơn [chứ không phải chăm chỉ hơn] có nghĩa là tận dụng công việc hiện có. Hiện tại, sao chép và dán từ tập lệnh này sang tập lệnh khác có vẻ là một giải pháp nhanh chóng và vô hại. Tuy nhiên, việc xác định hàm trong một tệp và nhập nó sẽ đơn giản hóa quy trình và loại bỏ các lỗi tiềm ẩn

Không phải tất cả các chức năng đều cần một tệp script riêng. Tuy nhiên, nếu bạn dự kiến ​​sử dụng lại chức năng này cho nhiều dự án, hãy lưu riêng chức năng này

Lợi ích của việc lưu trữ các chức năng trong các tập lệnh bên ngoài
  1. Tổ chức
    Lưu trữ các chức năng liên quan trong tập lệnh có tên mô tả dễ tìm hơn. Chẳng hạn, sẽ trực quan hơn khi tìm kiếm một hàm chuyển đổi trong
    from script_in_cwd.py import specific_function
    1 thay vì tìm kiếm thông qua
    from script_in_cwd.py import specific_function
    2,
    from script_in_cwd.py import specific_function
    3, v.v.
  2. Kiểm soát phiên bản
    Tái tạo một chức năng ở nhiều nơi có nghĩa là các chỉnh sửa và cập nhật trong một tập lệnh sẽ không chuyển sang các tập lệnh khác. Xác định chức năng ở một nơi và nhập nó cho phép tất cả các tập lệnh gọi hàm có định nghĩa gần đây nhất
  3. khả năng đọc
    Lưu trữ các chức năng bên ngoài giúp dễ dàng xem mục tiêu tổng thể của tập lệnh. Người đánh giá ngang hàng không cần xem định nghĩa cho mọi chức năng, đặc biệt là những chức năng đơn giản. Một tên chức năng mô tả thường sẽ đủ
  4. Sự đơn giản
    So với phương pháp sao chép và dán, phương pháp nhập giúp sử dụng lại các chức năng dễ dàng hơn nhiều. Các dòng mã không vô tình bị bỏ. Tập lệnh bổ sung không cần phải mở. Quy trình hợp lý hóa giúp loại bỏ các lỗi có thể xảy ra
Điều kiện

Để rõ ràng, đây là một số thuật ngữ được sử dụng thường xuyên khi mô tả các câu lệnh

from script_in_cwd.py import specific_function
4

  • Thư viện. một tập hợp các mô-đun liên quan như NumPy, Pandas, v.v.
  • mô-đun. một tập tin với “. phần mở rộng py”;
  • Tên mô-đun. tên của tệp không có “. phần mở rộng py
  • mô hình con. một tập tin với “. phần mở rộng py” trong thư mục con
directory
|-- module.py
|-- subdirectory
|-- sub_module.py
Nhập chức năng cụ thể từ tập lệnh trong thư mục

Để nhập một chức năng từ tập lệnh trong thư mục làm việc hiện tại, hãy thêm phần sau

from script_in_cwd.py import specific_function

Để đặt tên khác cho

from script_in_cwd.py import specific_function
5, hãy thêm
from script_in_cwd.py import specific_function
6 vào câu lệnh
from script_in_cwd.py import specific_function
4

from script_in_cwd.py import specific_function as new_name

Một tập lệnh không thể xử lý hai chức năng có cùng tên. Sử dụng

from script_in_cwd.py import specific_function
6 để tránh lỗi nhập

Nhập tất cả các chức năng và mô-đun từ tập lệnh

Để nhập tất cả các chức năng trong tập lệnh, hãy sử dụng

from script_in_cwd.py import specific_function
9

from script_in_cwd.py import *

Điều này nhập tất cả các hàm được xác định trong

from script_in_cwd.py import specific_function as new_name
0. Nếu
from script_in_cwd.py import specific_function as new_name
0 có câu lệnh
from script_in_cwd.py import specific_function
4, thì
from script_in_cwd.py import specific_function
9 cũng sẽ nhập các thư viện, mô-đun và chức năng đó. Chẳng hạn, nếu
from script_in_cwd.py import specific_function as new_name
0 có
from script_in_cwd.py import specific_function as new_name
5, thì câu lệnh trên cũng sẽ nhập vào
from script_in_cwd.py import specific_function as new_name
6. Tên của các đối tượng đã nhập sẽ bị ràng buộc trong không gian tên cục bộ, có nghĩa là tập lệnh sẽ nhận ra các tên đó một cách độc lập. Nói cách khác, các đối tượng đã nhập có thể được gọi mà không cần tham chiếu đến tên của mô-đun gốc [
from script_in_cwd.py import specific_function as new_name
7]

Một cách khác để nhập tất cả các chức năng là

import script_in_cwd.py

Giống như trước đây, phương thức này nhập tất cả các hàm đã xác định và bất kỳ thứ gì được gọi bằng câu lệnh

from script_in_cwd.py import specific_function
4. Tên mô-đun [
from script_in_cwd.py import specific_function as new_name
7] sẽ bị ràng buộc cục bộ, nhưng tên của các đối tượng được nhập khác sẽ không. Các đối tượng đó phải được gọi theo tên của mô-đun cha. Ví dụ

# To call function after importscript_in_cwd.specific_function[]

Nếu hai đối tượng được nhập sử dụng cùng tên, hãy sử dụng phương thức

from script_in_cwd.py import *
0 thay vì
from script_in_cwd.py import *
1 vì Python không thể nhập hai đối tượng có cùng tên. Tuy nhiên, với
from script_in_cwd.py import *
0 , tên của các đối tượng đó được liên kết với tên của mô-đun cha duy nhất của chúng

Nhập từ Tập lệnh trong Thư mục con

Để nhập từ một thư mục con

from subdirectory.submodule import *

Giống như trước đây, tên của các đối tượng đã nhập được liên kết với không gian tên cục bộ

một lựa chọn khác là

import subdirectory.submodule

Một lần nữa, các tên đối tượng đã nhập sẽ không bị ràng buộc cục bộ, nhưng

from script_in_cwd.py import *
3 sẽ là. Để gọi các đối tượng đã nhập, trước tiên hãy tham khảo tên của mô-đun chính [
from script_in_cwd.py import *
3]

Nhập từ Tập lệnh bên ngoài Thư mục

Nhập từ bên ngoài thư mục làm việc hiện tại yêu cầu

from script_in_cwd.py import *
5, đây là danh sách tất cả các thư mục mà Python tìm kiếm thông qua. Để thêm một đường dẫn tìm kiếm mới

import sys
sys.path.append['/User/NewDirectory']

Thao tác này nối thêm đường dẫn mới vào cuối

from script_in_cwd.py import *
5. Python tìm kiếm thông qua các đường dẫn này theo thứ tự. Sử dụng
from script_in_cwd.py import *
7 để buộc Python tìm kiếm đường dẫn sớm hơn. Ví dụ

import sys
sys.path.insert[1, '/User/NewDirectory']

Những bổ sung này không chỉ áp dụng cho tập lệnh hiện tại. Python cũng sẽ tìm kiếm các đường dẫn này cho các dự án trong tương lai trừ khi chúng bị xóa. Để xóa các đường dẫn tìm kiếm không mong muốn

from script_in_cwd.py import specific_function
0Kết luận

Cảm ơn bạn đã đọc bài viết của tôi. Nếu bạn thích nội dung của tôi, hãy cân nhắc theo dõi tôi. Ngoài ra, tất cả thông tin phản hồi đều được chào đón. Tôi luôn háo hức học hỏi những cách làm việc mới hoặc tốt hơn. Vui lòng để lại nhận xét hoặc liên hệ với tôi tại katyhagerty19@gmail. com

Chủ Đề