Tuply s jedným prvkom v jazyku Python vyžadujú koncovú čiarku

obchodné

Tuples, čo sú nemenné (nemenné) sekvenčné objekty v jazyku Python.

Pri generovaní kôpok s jedným prvkom alebo prázdnych kôpok je potrebné postupovať opatrne.

Sú tu opísané tieto podrobnosti.

  • Tuple s 1 prvkom
  • Okrúhle zátvorky pre tuple je možné vynechať.
  • Prázdny tuple
  • Tuply v argumentoch funkcie

Tuple s 1 prvkom

Ak sa pokúsite vygenerovať tuple s jedným prvkom a do okrúhlych zátvoriek () zapíšete len jeden objekt, okrúhle zátvorky () sa budú ignorovať a nebudú spracované a nebudú považované za tuple.

single_tuple_error = (0)

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

Na vytvorenie tuplu s jedným prvkom je potrebná končiaca čiarka.

single_tuple = (0, )

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

Napríklad pri použití operátora + na spájanie viacerých tuplov si uvedomte, že ak sa pokúsite pridať jeden prvok a zabudnete na čiarku, zobrazí sa chyba.

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

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

Okrúhle zátvorky pre tuple je možné vynechať.

Dôvod, prečo tuple s jedným prvkom potrebuje čiarku, je ten, že tuple nie je hodnota uzavretá v okrúhlych zátvorkách (), ale hodnota oddelená čiarkou.

Čiarka vytvára tuple, nie okrúhle zátvorky.
Tuples — Built-in Types — Python 3.10.4 Documentation

Aj keď sa vynechajú okrúhle zátvorky (), spracuje sa ako tuple.

t = 0, 1, 2

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

Všimnite si, že zbytočná čiarka za objektom sa považuje za tuple.

t_ = 0,

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

Prázdny tuple

Ako bolo uvedené vyššie, okrúhle zátvorky () možno pri reprezentácii tuplu vynechať, ale pri generovaní prázdneho tuplu sú povinné.

Samotná medzera alebo čiarka spôsobí chybu SyntaxError.

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

Prázdne tuply možno generovať aj pomocou funkcie tuple() bez argumentov.

empty_tuple = tuple()

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

Tuply v argumentoch funkcie

Okrúhle zátvorky () sa vyžadujú aj v prípade syntaktickej nejednoznačnosti.

Argumenty funkcie sa oddeľujú čiarkami, ale v tomto prípade je potrebné explicitne označiť, či je funkcia tuple alebo nie, prítomnosťou alebo neprítomnosťou okrúhlych zátvoriek ().

Bez zátvoriek () sa každá hodnota odovzdáva každému argumentu; so zátvorkami () sa každá hodnota odovzdáva ako tuple jednému argumentu.

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

Ak je tuple označený hviezdičkou *, prvky tuple môžu byť expandované a odovzdané ako argumenty.

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

Viac informácií nájdete v nasledujúcom článku.

Copied title and URL