Tuply s jedním prvkem v jazyce Python vyžadují koncovou čárku.

Podnikání

Tuples, což jsou v jazyce Python neměnné (neměnné) sekvenční objekty.

Při generování tuplů s jediným prvkem nebo prázdných tuplů je třeba postupovat opatrně.

Zde jsou popsány následující podrobnosti.

  • Tuple s 1 prvkem
  • Kulaté závorky u tuplů lze vynechat.
  • Prázdný tuple
  • Tuply v argumentech funkce

Tuple s 1 prvkem

Pokud se pokusíte vytvořit tuple s jedním prvkem a do kulatých závorek () zapíšete pouze jeden objekt, budou kulaté závorky () ignorovány a zpracovány a nebudou považovány za tuple.

single_tuple_error = (0)

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

Pro vygenerování tuplu s jedním prvkem je vyžadována koncové čárka.

single_tuple = (0, )

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

Například při použití operátoru + ke spojení více tuplů si uvědomte, že pokud se pokusíte přidat jeden prvek a zapomenete na čárku, dojde k chybě.

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

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

Kulaté závorky u tuplů lze vynechat.

Důvod, proč tuple s jedním prvkem potřebuje čárku, je ten, že tuple není hodnota uzavřená v kulatých závorkách (), ale hodnota oddělená čárkou.

Čárka vytváří tuple, nikoliv kulaté závorky.
Tuples — Built-in Types — Python 3.10.4 Documentation

I v případě vynechání kulatých závorek () se zpracovává jako tuple.

t = 0, 1, 2

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

Všimněte si, že zbytečná čárka za objektem je považována za tuple.

t_ = 0,

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

Prázdný tuple

Jak bylo uvedeno výše, kulaté závorky () lze při reprezentaci tuplu vynechat, ale při generování prázdného tuplu jsou povinné.

Samotná mezera nebo čárka způ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ázdné tuply lze generovat také pomocí funkce tuple() bez argumentů.

empty_tuple = tuple()

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

Tuply v argumentech funkce

Kulaté závorky () jsou vyžadovány i v případě syntaktické nejednoznačnosti.

Argumenty funkce se oddělují čárkami, ale v tomto případě je nutné explicitně označit, zda se jedná o tuple, nebo ne, a to přítomností nebo nepřítomností kulatých závorek ().

Bez závorek () je každá hodnota předána každému argumentu; se závorkami () je každá hodnota předána jako tuple jednomu 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'>

Pokud je tuple označen hvězdičkou *, lze prvky tuplu rozbalit a předat jako argumenty.

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

Další informace naleznete v následujícím článku.

Copied title and URL