النص الذي يسمي نوعًا يختلف عن كائن النوع. [1] [2]
الخلاصة السريعة
signature() يبقي تعليقنا النصي افتراضيًا؛ eval_str=True يقيّمه. [1] [2]
المثال
from inspect import signature
def f(x:"int"):
return x
a=signature(f)
b=signature(f,eval_str=True)
u=a.parameters["x"].annotation
v=b.parameters["x"].annotation
print(type(u).__name__)
print(v is int)النص والتقييم
المصدر يمرر إعداد التقييم إلى get_annotations. الافتراضي يحتفظ بالنص؛ eval_str=True يستعمل eval للقيم النصية. فحص هوية v يميز كائن النوع عن مجرد اسمه. [1] [2]

حدود الفحص
قاموس تعليقات f يبقى {"x":"int"}. لم نستدع الدالة أو نفحص قيم وسائطها. التقييم قد يرفع استثناءً؛ استخدمنا اسم النوع المعروف، ولا نعمم على كل تعليق نصي. [1] [2]
المراجع
- Python 3.12: signature and get_annotations
- CPython 3.12.14: annotation evaluation
- موضوع تك: لغة بايثون — مفردات
- موضوع تك: تطبيقات بايثون — مفردات
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
