Câu trả lời:
from file1 import *
sẽ nhập tất cả các đối tượng và phương thức trong file1
ImportError: No module named file1
Nhập khẩu file1
bên trong file2
:
Để nhập tất cả các biến từ tệp1 mà không làm ngập không gian tên của tệp2, hãy sử dụng:
import file1
#now use file1.x1, file2.x2, ... to access those variables
Để nhập tất cả các biến từ tệp1 sang không gian tên của tệp2 (không được khuyến nghị):
from file1 import *
#now use x1, x2..
Từ các tài liệu :
Mặc dù nó là hợp lệ để sử dụng
from module import *
ở cấp độ mô-đun, nó thường là một ý tưởng tồi. Đối với một, điều này làm mất một thuộc tính quan trọng mà Python có - bạn có thể biết mỗi tên toplevel được xác định bởi một hàm tìm kiếm đơn giản trong một trình soạn thảo yêu thích của bạn. Bạn cũng tự mở ra rắc rối trong tương lai, nếu một số mô-đun phát triển các chức năng hoặc lớp bổ sung.
import file1
sau đó.
file1.varX
cho mỗi tệp.
Tốt nhất để nhập x1 và x2 một cách rõ ràng:
from file1 import x1, x2
Điều này cho phép bạn tránh xung đột không gian tên không cần thiết với các biến và hàm từ file1
khi làm việc file2
.
Nhưng nếu bạn thực sự muốn, bạn có thể nhập tất cả các biến:
from file1 import *
Trên thực tế, điều này không thực sự giống nhau để nhập một biến với:
from file1 import x1
print(x1)
và
import file1
print(file1.x1)
Rõ ràng tại thời điểm nhập x1 và file1.x1 có cùng giá trị, chúng không phải là cùng một biến. Chẳng hạn, gọi một hàm trong tệp1 sửa đổi x1 và sau đó thử in biến từ tệp chính: bạn sẽ không thấy giá trị được sửa đổi.
Marc trả lời đúng. Trên thực tế, bạn có thể in địa chỉ bộ nhớ cho các biến print(hex(id(libvar))
và bạn có thể thấy các địa chỉ khác nhau.
# mylib.py
libvar = None
def lib_method():
global libvar
print(hex(id(libvar)))
# myapp.py
from mylib import libvar, lib_method
import mylib
lib_method()
print(hex(id(libvar)))
print(hex(id(mylib.libvar)))
Trong Python
bạn có thể truy cập nội dung của các tệp khác như thể chúng
là một loại thư viện, so với các ngôn ngữ khác như java hoặc bất kỳ ngôn ngữ cơ bản oop nào, Điều này thực sự tuyệt vời;
Điều này làm cho việc truy cập nội dung của tệp hoặc nhập tệp để xử lý tệp hoặc làm bất cứ điều gì với nó; Và đó là lý do chính tại sao Python
Ngôn ngữ được ưa thích cao cho Khoa học dữ liệu và Học máy, v.v .;
Và đây là hình ảnh của project structure
Nơi tôi đang truy cập các biến từ .env file
nơi khóa API links
và khóa bí mật cư trú.
Cấu trúc chung:
from <File-Name> import *