2009-05-14 31 views
12

Tôi cần kiểm tra xem biến có phải là mô-đun hay không. Làm thế nào để làm điều này một cách sạch sẽ nhất?cách khôi phục (x, mô-đun)?

Tôi cần điều này để khởi tạo một số chức năng điều phối và tôi muốn rằng hàm có thể chấp nhận dict hoặc mô-đun làm đối số.

+1

Ngoài ra, bạn có thực sự cần phải kiểm tra loại đối số không? Nếu hàm thực hiện điều gì đó hoàn toàn khác dựa trên kiểu đối số nào, thì chắc chắn, bạn phải kiểm tra, nhưng nếu không thì nó thường là "Pythonic" hơn không kiểm tra kiểu rõ ràng. –

+0

Cách pythonic là kiểm tra sự hiện diện của các phương thức và các biến. Nếu có quá nhiều thứ cần kiểm tra, thì isinstance được ưu tiên. – Unknown

+0

Vâng, cách Pythonic là "kiểm tra" bằng cách chỉ sử dụng những cái bạn cần, và nếu cái gì đó nên tồn tại không, Python sẽ đưa ra một lỗi. Tôi không thấy làm thế nào có thể có quá nhiều tài sản để "kiểm tra" nếu bạn sẽ sử dụng tất cả anyway. –

Trả lời

24
>>> import os, types 
>>> isinstance(os, types.ModuleType) 
True 

(Nó cũng làm việc cho module Python riêng của bạn, cũng như những built-in như os.)

+0

Cảm ơn! Nó hoạt động hoàn hảo! –

4

Tôi thích sử dụng này, do đó bạn không cần phải nhập khẩu các mô-đun loại:

isinstance(amodule, __builtins__.__class__) 
Các vấn đề liên quan