تتطلب المجموعات التي تحتوي على عنصر واحد في Python فاصلة لاحقة

اعمال

المجموعات ، وهي كائنات متسلسلة ثابتة (غير قابلة للتغيير) في بايثون.

يجب توخي الحذر عند إنشاء مجموعات بعنصر واحد أو مجموعات فارغة.

التفاصيل التالية موصوفة هنا.

  • Tuple مع عنصر واحد
  • يمكن حذف الأقواس المستديرة Tuple.
  • فارغة tuple
  • المجموعات في وسيطات الوظيفة

Tuple مع عنصر واحد

إذا حاولت إنشاء مجموعة بعنصر واحد وكتبت عنصرًا واحدًا فقط داخل الأقواس المستديرة () ، فسيتم تجاهل الأقواس المستديرة () ومعالجتها ولن يتم اعتبارها مجموعة.

single_tuple_error = (0)

print(single_tuple_error)
print(type(single_tuple_error))
# 0
# <class 'int'>

مطلوب فاصلة لاحقة لإنشاء مجموعة تحتوي على عنصر واحد.

single_tuple = (0, )

print(single_tuple)
print(type(single_tuple))
# (0,)
# <class 'tuple'>

على سبيل المثال ، عند استخدام عامل التشغيل + لسلسلة مجموعات متعددة ، لاحظ أنه إذا حاولت إضافة عنصر واحد ونسيت الفاصلة ، فسوف تحصل على خطأ.

# print((0, 1, 2) + (3))
# TypeError: can only concatenate tuple (not "int") to tuple

print((0, 1, 2) + (3, ))
# (0, 1, 2, 3)

يمكن حذف الأقواس المستديرة Tuple.

سبب احتياج المجموعة التي تحتوي على عنصر واحد إلى فاصلة هو أن المجموعة ليست قيمة محاطة بأقواس دائرية () ولكنها قيمة مفصولة بفاصلة.

الفاصلة هي التي تُنشئ المجموعة ، وليس الأقواس المستديرة.
Tuples — Built-in Types — Python 3.10.4 Documentation

حتى إذا تم حذف الأقواس المستديرة () ، فستتم معالجتها على أنها مجموعة.

t = 0, 1, 2

print(t)
print(type(t))
# (0, 1, 2)
# <class 'tuple'>

لاحظ أن الفاصلة غير الضرورية بعد الكائن تعتبر مجموعة.

t_ = 0,

print(t_)
print(type(t_))
# (0,)
# <class 'tuple'>

فارغة tuple

كما ذكرنا سابقًا ، يمكن حذف الأقواس المستديرة () عند تمثيل مجموعة ، ولكنها مطلوبة عند إنشاء مجموعة فارغة.

ستؤدي المسافة أو الفاصلة وحدها إلى خطأ في بناء الجملة.

empty_tuple = ()

print(empty_tuple)
print(type(empty_tuple))
# ()
# <class 'tuple'>

# empty_tuple_error = 
# SyntaxError: invalid syntax

# empty_tuple_error = ,
# SyntaxError: invalid syntax

# empty_tuple_error = (,)
# SyntaxError: invalid syntax

يمكن أيضًا إنشاء مجموعات فارغة بواسطة tuple () بدون وسيطات.

empty_tuple = tuple()

print(empty_tuple)
print(type(empty_tuple))
# ()
# <class 'tuple'>

المجموعات في وسيطات الوظيفة

الأقواس المستديرة Tuple () مطلوبة حتى عند وجود غموض نحوي.

يتم فصل وسيطات الوظيفة بفاصلات ، ولكن في هذه الحالة ، من الضروري الإشارة صراحةً إلى ما إذا كانت الوظيفة عبارة عن مجموعة أم لا من خلال وجود أو عدم وجود الأقواس المستديرة ().

بدون الأقواس () ، يتم تمرير كل قيمة إلى كل وسيطة ؛ باستخدام الأقواس () ، يتم تمرير كل قيمة على هيئة مجموعة إلى وسيطة واحدة.

def example(a, b):
    print(a, type(a))
    print(b, type(b))

example(0, 1)
# 0 <class 'int'>
# 1 <class 'int'>

# example((0, 1))
# TypeError: example() missing 1 required positional argument: 'b'

example((0, 1), 2)
# (0, 1) <class 'tuple'>
# 2 <class 'int'>

إذا تم تمييز المجموعة بعلامة النجمة * ، فيمكن توسيع عناصر المجموعة وتمريرها كوسائط.

example(*(0, 1))
# 0 <class 'int'>
# 1 <class 'int'>

لمزيد من المعلومات ، راجع المقالة التالية.