Muszę sprawdzić, czy zmienna jest modułem, czy nie. Jak to zrobić w najczystszy sposób?jak to isinstance (x, moduł)?
Potrzebuję tego do zainicjowania funkcji dyspozytora i chcę, aby ta funkcja mogła zaakceptować albo argument dyktujący, albo moduł.
Muszę sprawdzić, czy zmienna jest modułem, czy nie. Jak to zrobić w najczystszy sposób?jak to isinstance (x, moduł)?
Potrzebuję tego do zainicjowania funkcji dyspozytora i chcę, aby ta funkcja mogła zaakceptować albo argument dyktujący, albo moduł.
>>> import os, types
>>> isinstance(os, types.ModuleType)
True
(Działa również dla własnych modułów Pythona, a także wbudowanych w nich jak os
.)
Dzięki! Działa doskonale! –
lubię używać tego więc nie trzeba importować moduł typów:
isinstance(amodule, __builtins__.__class__)
Czy naprawdę trzeba sprawdzić typ argumentu? Jeśli funkcja robi coś zupełnie innego w zależności od rodzaju argumentu, to na pewno trzeba to sprawdzić, ale w przeciwnym razie zazwyczaj bardziej "Pythonicznie" nie sprawdza się wyraźnie typów. –
Pythonowy sposób polega na sprawdzeniu obecności metod i zmiennych. Jeśli jest zbyt wiele do sprawdzenia, preferowana jest opcja isinstance. – Unknown
Pythonicznym sposobem jest "sprawdzić", używając tylko tych, których potrzebujesz, a jeśli coś, co powinno istnieć, nie, Python podnosi błąd. Nie widzę, jak może być zbyt wiele właściwości do "sprawdzenia", jeśli i tak z nich skorzystasz. –