Chúng ta đều được thông báo sử dụng from module import *
là một ý tưởng tồi. Tuy nhiên, có cách nào để nhập một tập hợp con nội dung của module
bằng ký tự đại diện không?Python: nhập khẩu tập hợp ký tự đại diện
Ví dụ:
module.py:
MODULE_VAR1 = "hello"
MODULE_VAR2 = "world"
MODULE_VAR3 = "The"
MODULE_VAR4 = "quick"
MODULE_VAR5 = "brown"
...
MODULE_VAR10 = "lazy"
MODULE_VAR11 = "dog!"
MODULE_VAR12 = "Now"
MODULE_VAR13 = "is"
...
MODULE_VAR98 = "Thats"
MODULE_VAR99 = "all"
MODULE_VAR100 = "folks!"
def abs():
print "Absolutely useful function: %s" % MODULE_VAR1
Rõ ràng chúng ta không muốn sử dụng from module import *
bởi vì chúng tôi muốn được trọng các abs
chức năng. Nhưng giả sử chúng tôi DID muốn tất cả các biến số MODULE_VAR*
để có thể truy cập cục bộ.
Chỉ cần đặt from module import MODULE_VAR*
không hoạt động. Có cách nào để hoàn thành nó không?
Tôi đã sử dụng 100 biến làm hình minh họa, vì làm from module import MODULE_VAR1, MODULE_VAR2, MODULE_VAR3, ..., MODULE_VAR100
rõ ràng là khó sử dụng và sẽ không hoạt động nếu có nhiều biến hơn (ví dụ: MODULE_VAR101
) được thêm vào.
Điều này thật tuyệt! Nhưng có cách nào để đạt được hiệu quả tương tự nếu bạn không có quyền kiểm soát mã nguồn của mô-đun không? – seaotternerd
Xin lỗi tôi đã hiểu lầm. Tôi không biết cách nào để nhập các biến cụ thể từ một mô-đun khác. Nhưng như một giải pháp rất đơn giản, bạn có thể tạo ra một trình trợ giúp để nhập mô-đun và lặp lại các thuộc tính của mô-đun để trích xuất các biến mà bạn muốn. Trong ví dụ của bạn, điều này sẽ ngăn chặn biến 'abs' bị ghi đè mà bạn không nhập các biến mô-đun nhưng chính mô đun đó. Ngoài ra, bạn * có thể * nhập các biến mô-đun trong phạm vi của một hàm, ngăn chức năng 'abs' tích hợp bị ghi đè. Tôi nghĩ rằng @jsbueno có một ví dụ hoàn hảo. – kuujo
Tôi không biết nếu bạn hiểu lầm - tôi không phải là người hỏi câu hỏi, tôi chỉ tò mò thôi. Cảm ơn! – seaotternerd