Tuples með einum þætti í Python krefjast slóða kommu

Viðskipti

Tuples, sem eru óbreytanleg (óbreytanleg) röð hlutir í Python.

Gæta þarf varúðar við að búa til túlla með einu frumefni eða tómum túpum.

Eftirfarandi smáatriðum er lýst hér.

  • Tuple með 1 frumefni
  • Hægt er að sleppa hringlaga svigum.
  • Tóm túpa
  • Tuples í falla rökum

Tuple með 1 frumefni

Ef þú reynir að búa til tupel með einu staki og skrifar aðeins einn hlut innan hringlaga sviga (), verða hringsvigarnir () hunsaðir og unnar og ekki taldir vera tuple.

single_tuple_error = (0)

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

Kommu á eftir er nauðsynleg til að mynda tuple með einum þætti.

single_tuple = (0, )

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

Til dæmis, þegar þú notar + til að sameina marga túlla, athugaðu að ef þú reynir að bæta við einum þætti og gleymir kommu færðu villu.

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

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

Hægt er að sleppa hringlaga svigum.

Ástæðan fyrir því að tuple með einu staki þarf kommu er vegna þess að tuple er ekki gildi innan kringlóttra sviga () heldur gildi aðskilið með kommu.

Það er komman sem býr til tuple, ekki kringlóttu sviga.
Tuples — Built-in Types — Python 3.10.4 Documentation

Jafnvel þótt hringsvigunum () sé sleppt, er það unnið sem túpel.

t = 0, 1, 2

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

Athugaðu að óþarfa kommu á eftir hlut er talin tuple.

t_ = 0,

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

Tóm túpa

Eins og getið er hér að ofan er hægt að sleppa kringlóttum svigum () þegar þeir tákna tuple, en þeir eru nauðsynlegir þegar þú býrð til tóman tuple.

Bil eða kommu eitt og sér mun leiða til setningafræðivillu.

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

Einnig er hægt að búa til tóma tuple með tuple() án rökstuðnings.

empty_tuple = tuple()

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

Tuples í falla rökum

Tuple round sviga () eru nauðsynlegar, jafnvel þegar það er setningafræðileg tvíræðni.

Fallrök eru aðskilin með kommum, en í þessu tilviki er nauðsynlegt að gefa skýrt til kynna hvort fallið sé tuple eða ekki með tilvist eða fjarveru kringlóttra sviga ().

Án sviga () er hvert gildi sent til hverrar röksemdar; með svigum (), hvert gildi er sent sem tuple til einn rifrildi.

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

Ef túllið er merkt með stjörnu *, er hægt að stækka þætti túpunnar og senda sem rök.

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

Fyrir frekari upplýsingar, sjá eftirfarandi grein.