تاپل ها با یک عنصر در پایتون نیاز به کاما انتهایی دارند

کسب و کار

تاپل ها، که اشیاء توالی غیرقابل تغییر (غیر قابل تغییر) در پایتون هستند.

هنگام تولید تاپل ها با یک عنصر یا تاپل های خالی باید دقت شود.

جزئیات زیر در اینجا شرح داده شده است.

  • تاپلی با 1 عنصر
  • براکت های دور تاپل را می توان حذف کرد.
  • تاپلی خالی
  • تاپل ها در آرگومان های تابع

تاپلی با 1 عنصر

اگر سعی کنید یک تاپل با یک عنصر ایجاد کنید و فقط یک شی را در داخل براکت های گرد () بنویسید، براکت های گرد () نادیده گرفته می شوند و پردازش می شوند و تاپل در نظر گرفته نمی شوند.

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)

براکت های دور تاپل را می توان حذف کرد.

دلیل اینکه یک تاپل با یک عنصر به کاما نیاز دارد این است که یک تاپل یک مقدار محصور در پرانتز () نیست بلکه مقداری است که با کاما از هم جدا شده است.

این کاما است که تاپل را ایجاد می کند، نه براکت های گرد.
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'>

تاپلی خالی

همانطور که در بالا ذکر شد، براکت های گرد () را می توان در هنگام نمایش یک تاپل حذف کرد، اما هنگام ایجاد یک تاپل خالی لازم است.

یک فاصله یا کاما به تنهایی منجر به خطای نحوی می شود.

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'>

تاپل ها در آرگومان های تابع

حتی زمانی که ابهام نحوی وجود دارد، پرانتزهای گرد () چندگانه مورد نیاز است.

آرگومان‌های تابع با کاما از هم جدا می‌شوند، اما در این مورد، با وجود یا عدم وجود براکت‌های گرد باید به صراحت مشخص شود که آیا تابع یک تاپل است یا خیر.

بدون پرانتز ()، هر مقدار به هر آرگومان منتقل می شود. با پرانتز ()، هر مقدار به عنوان یک تاپل به یک آرگومان منتقل می شود.

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'>

برای اطلاعات بیشتر به مقاله زیر مراجعه کنید.

Copied title and URL