كلاهما يقيمون False
لكن هذا لا يعني أنهم نفس الشيء.
None
هي قيمة منفصلة ولها نوعها الخاص. سلسلة فارغة هي سلسلة بدون محتويات:
>>> type(None)
<type 'NoneType'>
>>> type('')
<type 'str'>
>>> bool(None) == bool('')
True
>>> None == ''
False
سؤال
أنا جديد نسبيًا على Python والترميز. لقد كنت بخير حتى صادفت "لا شيء":
variable = None
while variable != "":
print("Why does this loop start?")
على الرغم من أنه يبدو بسيطًا ، لا يمكنني فهم سبب بدء الحلقة أعلاه. كيف هو None
تختلف عن سلسلة فارغة؟ اعتقدت أنهما تم تقييمهما على كاذب.
المحلول
كلاهما يقيمون False
لكن هذا لا يعني أنهم نفس الشيء.
None
هي قيمة منفصلة ولها نوعها الخاص. سلسلة فارغة هي سلسلة بدون محتويات:
>>> type(None)
<type 'NoneType'>
>>> type('')
<type 'str'>
>>> bool(None) == bool('')
True
>>> None == ''
False
نصائح أخرى
رقم، None
هو فقط نفس الشيء مثل None
بحد ذاتها. الأوتار الفارغة ليست نفس الشيء:
>>> None == ""
False
None
هي قيمة خاصة مفردة (لا يوجد سوى نسخة واحدة منها في جلسة بيثون) تدل على "الفراغ" ، أو عدم وجود قيمة "مناسبة". على هذا النحو علَم أو الإشارة القيمة؛ يستخدم Python ذلك عن طريق الاتفاقية للإشارة إلى أن العملية لم ترد أي شيء ، على سبيل المثال.
كلاهما None
والسلسلة الفارغة تعتبر خاطئة في سياق منطقي:
>>> bool(None)
False
>>> bool("")
False
كما هي جميع الحاويات الفارغة (مثل tuple الفارغ أو القائمة أو المجموعة) و Numeric 0 (سواء كان ذلك صحيحًا أو نقطة عائمة أو رقم معقد). أن تعتبر كاذبة لا تجعلها متساوية ، ولكن.
إذا كنت تريد الاختبار أي القيمة الخاطئة ، استخدم:
while not variable:
كما not
يفسر المعامل في سياق منطقي ويعيد القيمة العكسية:
>>> not ""
True
>>> not None
True
>>> not "not empty"
False
كلاهما يقيم على خطأ ، ولكن يختلفان عند استخدامه في المقارنة
if not None:
print "Always true"
if not "":
print "Always true"
if bool(None) == bool(""):
print "Always true"
if None == "":
pass
#always false