Laufzeitüberprüfung (Runtime Validation)
Was ist Laufzeitüberprüfung?
Die Laufzeitüberprüfung (runtime validation) stellt sicher, dass Methodensignaturen (method signatures) während der Programmausführung eingehalten werden und fängt dynamisch typbezogene Fehler auf.
graph TD
A[Runtime Validation] --> B[Type Checking]
A --> C[Parameter Validation]
A --> D[Error Handling]
Implementierung der Laufzeitüberprüfung
Manuelle Typüberprüfung
def validate_user(name: str, age: int) -> dict:
if not isinstance(name, str):
raise TypeError("Name must be a string")
if not isinstance(age, int):
raise TypeError("Age must be an integer")
return {"name": name, "age": age}
Beliebte Bibliotheken zur Laufzeitüberprüfung
Bibliothek |
Funktionen |
Komplexität |
typeguard |
Umfassende Typüberprüfung |
Mittel |
pydantic |
Datenüberprüfung |
Hoch |
enforce |
Einfache Typenforcement |
Niedrig |
Fortgeschrittene Überprüfungstechniken
Dekorator-basierte Überprüfung
from functools import wraps
def validate_types(*types, **type_kwargs):
def decorator(func):
@wraps(func)
def wrapper(*args, **kwargs):
## Validate input types
for arg, expected_type in zip(args, types):
if not isinstance(arg, expected_type):
raise TypeError(f"Expected {expected_type}, got {type(arg)}")
return func(*args, **kwargs)
return wrapper
return decorator
@validate_types(str, int)
def create_user(name, age):
return {"name": name, "age": age}
Strategien für die Laufzeitüberprüfung
- Typüberprüfung (type checking)
- Wertebereichsüberprüfung
- Durchsetzung benutzerdefinierter Einschränkungen
- Fehlerbehandlung
Überlegungen zur Leistung
- Die Laufzeitüberprüfung erhöht den Aufwand.
- Verwenden Sie sie sparsam in leistungskritischem Code.
- Erwägen Sie Alternativen zur statischen Typüberprüfung.
Beispiel für die Fehlerbehandlung
def process_data(data: list) -> list:
try:
if not isinstance(data, list):
raise TypeError("Input must be a list")
return [x * 2 for x in data]
except TypeError as e:
print(f"Validation error: {e}")
return []
Bei LabEx empfehlen wir einen ausgewogenen Ansatz zur Laufzeitüberprüfung, der die statische Typüberprüfung mit selektiven Laufzeitprüfungen kombiniert.