A Pythonban az egyetlen elemet tartalmazó tuplikhoz egy utolsó vesszőre van szükség.

Üzleti

Tuplik, amelyek a Pythonban megváltoztathatatlan (megváltoztathatatlan) sorozatobjektumok.

Óvatosan kell eljárni az egyetlen elemet tartalmazó vagy üres tuplik generálásakor.

A következő részleteket ismertetjük.

  • Tuple 1 elemmel
  • A kerek zárójelek elhagyhatók.
  • Üres tuple
  • Tuplik a függvény argumentumaiban

Tuple 1 elemmel

Ha megpróbál egy egyelemű tuple-t létrehozni, és csak egy objektumot ír a kerek zárójelek () belsejébe, a kerek zárójelek () figyelmen kívül maradnak, és nem minősülnek tuple-nek.

single_tuple_error = (0)

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

Az egy elemet tartalmazó tuple létrehozásához szükség van az utolsó vesszőre.

single_tuple = (0, )

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

Ha például a + operátorral több tételt kapcsol össze, vegye figyelembe, hogy ha egy elemet próbál hozzáadni, és elfelejti a vesszőt, hibaüzenetet kap.

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

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

A kerek zárójelek elhagyhatók.

Azért van szükség vesszőre az egy elemet tartalmazó tuple esetében, mert a tuple nem egy kerek zárójelbe () zárt érték, hanem egy vesszővel elválasztott érték.

A vessző hozza létre a tuple-t, nem a kerek zárójelek.
Tuples — Built-in Types — Python 3.10.4 Documentation

Még ha a kerek zárójelek () el is maradnak, akkor is tupliként kerül feldolgozásra.

t = 0, 1, 2

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

Vegye figyelembe, hogy egy felesleges vessző egy objektum után tuple-nek minősül.

t_ = 0,

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

Üres tuple

Amint fentebb említettük, a kerek zárójelek () elhagyhatók, amikor egy tuple-t ábrázolunk, de szükségesek, amikor üres tuple-t generálunk.

A szóköz vagy vessző önmagában SyntaxError-t eredményez.

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

Üres tuple-t a tuple() argumentumok nélküli tuple() paranccsal is lehet generálni.

empty_tuple = tuple()

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

Tuplik a függvény argumentumaiban

A többszörös kerek zárójelek () akkor is szükségesek, ha szintaktikai kétértelműség áll fenn.

A függvény argumentumait vesszővel választjuk el, de ebben az esetben a kerek zárójelek () jelenlétével vagy hiányával kifejezetten jelezni kell, hogy a függvény egy tuple-e vagy sem.

Zárójelek nélkül (), minden értéket minden argumentumhoz átadunk; zárójelekkel (), minden értéket tupliként adunk át egy argumentumhoz.

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

Ha a tuple csillaggal * van jelölve, akkor a tuple elemei kibonthatók és átadhatók argumentumként.

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

További információért lásd a következő cikket.