Hàm nhập từ một tệp Python khác

Nếu bạn chưa quen với Python và đã vấp phải câu hỏi này, thì tôi mời bạn đọc tiếp khi tôi thảo luận về cách gọi một hàm từ một tệp khác. Rất có thể bạn đã sử dụng một số chức năng tích hợp sẵn của Python như

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
9 và
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
0. Nhưng nếu bạn đã xác định chức năng của riêng mình, lưu nó vào một tệp và muốn gọi nó trong một tệp khác thì sao?

nhập nó

Nếu bạn đã từng nhập một cái gì đó như ngẫu nhiên, NumPy hoặc toán học thì nó thực sự đơn giản như vậy. Nếu bạn chưa có, thì đây là một cái nhìn nhanh về cách nó được thực hiện

Ví dụ: hãy sử dụng mô-đun toán học để tìm căn bậc hai của một số

Đầu tiên, chúng tôi nhập nó

>>> import math
>>>    

Để xem các chức năng và thuộc tính có sẵn cho một mô-đun, hãy sử dụng chức năng tích hợp sẵn

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
1

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']

Hàm tính căn bậc hai được gọi là '

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
2'. Và chúng tôi sẽ sử dụng ký hiệu dấu chấm để gọi nó

>>> math.sqrt[64]
8.0
>>>

Ngoài ra, bạn có thể sử dụng từ khóa “

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
3” theo sau là tên mô-đun và “
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
4” theo sau là thuộc tính hoặc chức năng. Bằng cách này, chúng ta không còn phải sử dụng ký hiệu dấu chấm khi gọi hàm căn bậc hai

________số 8

Và như mong đợi, việc cố gắng truy cập các chức năng hoặc thuộc tính khác vẫn yêu cầu ký hiệu dấu chấm

>>> pi
Traceback [most recent call last]:
  File "", line 1, in 
NameError: name 'pi' is not defined
>>> math.pi
3.141592653589793

Hàm do người dùng định nghĩa

Khi bạn tiến bộ trong mã hóa Python của mình, cuối cùng bạn sẽ tạo các chức năng của riêng mình và sẽ triển khai chúng trong các chương trình khác. Để làm ví dụ, chúng tôi sẽ minh họa điều này bằng một máy tính tiền boa đơn giản. Mời các bạn cùng theo dõi

Mở trình chỉnh sửa python yêu thích của bạn. Tôi hiện đang sử dụng Linux nên tôi sẽ chỉ sử dụng vi cho ví dụ này. Tôi sẽ gọi tệp của mình là “

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
5”

Đây là định nghĩa hàm

>>> import math
>>>    
1

Lưu các tập tin

Bây giờ để gọi một hàm từ một tệp khác trong Python, chúng tôi chỉ cần sử dụng "nhập" theo sau là tên tệp của tệp

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
6 của bạn

>>> import math
>>>    
3

Nếu bạn có nhiều hàm trong tệp của mình và muốn xem chúng, đừng quên sử dụng hàm

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
7. Trong trường hợp của chúng ta, nó chỉ hiển thị hàm
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
8

>>> import math
>>>    
6

Ngoài ra, đừng quên chúng ta có thể sử dụng phương pháp thay thế nếu bạn muốn bỏ qua ký hiệu dấu chấm

>>> import math
>>>    
7

Những điều cần chú ý

Lưu ý trong ví dụ của tôi, khi tôi chạy trình thông dịch Python, nó nằm trong cùng thư mục làm việc với tệp

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
5. Nếu bạn không quen thuộc với Linux, ký hiệu đô la là dấu nhắc lệnh

  • pwd = in thư mục làm việc
    • Thư mục hiện tại là “/home/pete/Videos/Python”
  • ls -l = liệt kê nội dung thư mục
    • Tập tin “myfunctions. py” nằm ở đây
  • python3 = gọi trình thông dịch python
  • Khi vào dòng “import myfunctions” thì không báo lỗi

Ảnh chụp màn hình bên dưới cho thấy tôi thay đổi thư mục làm việc thành home [~] và chạy

>>> math.sqrt[64]
8.0
>>>
0 để hiển thị đường dẫn thư mục hiện tại. Sau đó, tôi chạy trình thông dịch python và cố gắng nhập tệp
>>> math.sqrt[64]
8.0
>>>
1. Bây giờ nó hiển thị “
>>> math.sqrt[64]
8.0
>>>
2” vì tệp không nằm trong thư mục hiện tại

Nếu bạn đang sử dụng IDE, thì hãy đảm bảo rằng tệp của bạn nằm trong dự án của bạn. Ảnh chụp màn hình bên dưới hiển thị Spyder IDE với Dự án có tên là “Ví dụ chức năng”. Ảnh chụp màn hình tệp “

>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
5” với định nghĩa hàm của
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
8

Ảnh chụp màn hình của tệp “

>>> math.sqrt[64]
8.0
>>>
5”. IDE cụ thể này thực sự tuyệt vời vì tệp “
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
5” nằm trong Dự án của chúng tôi, nên tính năng tự động hoàn thành sẽ phát hiện ra nó khi tôi nhập tệp

Đây là đầu ra của bàn điều khiển khi chạy tệp

>>> math.sqrt[64]
8.0
>>>
5, chuyển biến “
>>> math.sqrt[64]
8.0
>>>
8” vào hàm
>>> dir[math]
['__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'comb', 'copysign', 'cos', 'cosh', 'degrees', 'dist', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'isqrt', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'perm', 'pi', 'pow', 'prod', 'radians', 'remainder', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'tau', 'trunc']
8

Và đó là cách gọi một hàm từ một tệp khác trong Python. Tôi hy vọng bạn thấy bài viết này hữu ích và mong được viết nhiều hơn. hẹn sớm gặp lại

Các hàm Python có thể là các tệp bên ngoài không?

Có thể gọi các hàm do người dùng định nghĩa từ các tệp khác . Một chức năng có thể được gọi và chạy trong một tệp khác với tệp nơi chức năng được xác định.

Làm cách nào bạn có thể nhập tất cả các chức năng từ tệp Python trong thư mục trước đó?

Để nhập một mô-đun, thư mục chứa mô-đun đó phải có trên PYTHONPATH . Nó là một biến môi trường chứa danh sách các gói sẽ được Python tải. Danh sách các gói có trong PYTHONPATH cũng có trong sys. đường dẫn, vì vậy sẽ thêm đường dẫn thư mục mẹ vào sys.

Làm thế nào chúng ta có thể nhập chức năng?

Bạn có thể nhập hàm từ một tệp khác bằng cách sử dụng chức năng từ khóa nhập . Nhập cho phép bạn chọn phần nào của tệp hoặc mô-đun sẽ tải. Điều này sẽ làm cho chức năng này có sẵn để sử dụng trong tệp hiện tại của chúng tôi.

Chủ Đề