Korke s jednim elementom u Pythonu zahtijevaju završni zarez

Poslovanje

Tuples, koji su nepromjenjivi (nepromjenjivi) objekti niza u Pythonu.

Morate biti oprezni kada generirate torke s jednim elementom ili prazne torke.

Ovdje su opisani sljedeći detalji.

  • Tuple s 1 elementom
  • Tuple okrugle zagrade mogu se izostaviti.
  • Prazan tuple
  • Korke u argumentima funkcije

Tuple s 1 elementom

Ako pokušate generirati torbu s jednim elementom i napisati samo jedan objekt unutar okruglih zagrada (), okrugle zagrade () će se zanemariti i obraditi i neće se smatrati torkom.

single_tuple_error = (0)

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

Za generiranje torke s jednim elementom potreban je završni zarez.

single_tuple = (0, )

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

Na primjer, kada koristite + operator za spajanje više torki, imajte na umu da ako pokušate dodati jedan element i zaboraviti zarez, dobit ćete pogrešku.

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

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

Tuple okrugle zagrade mogu se izostaviti.

Razlog zašto torku s jednim elementom treba zarez je to što torka nije vrijednost zatvorena u okrugle zagrade () već vrijednost odvojena zarezom.

Zarez je taj koji stvara torku, a ne okrugle zagrade.
Tuples — Built-in Types — Python 3.10.4 Documentation

Čak i ako su okrugle zagrade () izostavljene, obrađuje se kao tuple.

t = 0, 1, 2

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

Imajte na umu da se nepotreban zarez nakon objekta smatra torkom.

t_ = 0,

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

Prazan tuple

Kao što je gore spomenuto, okrugle zagrade () mogu se izostaviti kada se predstavlja tor, ali su obavezni kada se generira prazan tuple.

Samo razmak ili zarez rezultirat će sintaksnom pogreškom.

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

Prazne torke također može generirati tuple() bez argumenata.

empty_tuple = tuple()

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

Korke u argumentima funkcije

Okrugle zagrade () su obavezne čak i kada postoji sintaktička nejasnoća.

Argumenti funkcije odvojeni su zarezima, ali je u ovom slučaju potrebno eksplicitno naznačiti je li funkcija tuple ili ne prisustvom ili odsutnošću okruglih zagrada ().

Bez zagrada (), svaka vrijednost se prosljeđuje svakom argumentu; sa zagradama (), svaka vrijednost se prosljeđuje kao tuple jednom 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'>

Ako je torka označena zvjezdicom *, elementi torke mogu se proširiti i proslijediti kao argumente.

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

Za više informacija pogledajte sljedeći članak.