Python тіліндегі жалғыз элементі бар кортеждер соңынан үтірді қажет етеді

Іскерлік

Python тіліндегі өзгермейтін (өзгермейтін) реттілік нысандары болып табылатын кортеждер.

Бір элементі бар кортеждерді немесе бос кортеждерді генерациялау кезінде абай болу керек.

Мұнда келесі мәліметтер сипатталған.

  • 1 элементі бар кортеж
  • Кортежді дөңгелек жақшаларды өткізіп жіберуге болады.
  • Бос кортеж
  • Функция аргументтеріндегі кортеждер

1 элементі бар кортеж

Бір элементі бар кортежді генерациялауға тырыссаңыз және дөңгелек жақшалардың () ішіне бір ғана нысанды жазсаңыз, дөңгелек жақшалар () еленбейді және өңделеді және кортеж ретінде қарастырылмайды.

single_tuple_error = (0)

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

Бір элементі бар кортежді жасау үшін соңынан үтір қою қажет.

single_tuple = (0, )

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

Мысалы, бірнеше кортеждерді біріктіру үшін + операторын пайдаланған кезде, бір элемент қосуға әрекеттеніп, үтірді ұмытып қалсаңыз, қате пайда болатынын ескеріңіз.

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

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

Кортежді дөңгелек жақшаларды өткізіп жіберуге болады.

Бір элементі бар кортежге үтір қажет болуының себебі, кортеж дөңгелек жақшаға () алынған мән емес, үтірмен бөлінген мән болып табылады.

Дөңгелек жақшаларды емес, кортежді жасайтын үтір.
Tuples — Built-in Types — Python 3.10.4 Documentation

Тіпті дөңгелек жақшалар () түсірілсе де, ол кортеж ретінде өңделеді.

t = 0, 1, 2

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

Нысаннан кейінгі қажет емес үтір кортеж деп есептелетінін ескеріңіз.

t_ = 0,

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

Бос кортеж

Жоғарыда айтылғандай, дөңгелек жақшаларды () кортежді көрсету кезінде алып тастауға болады, бірақ бос кортежді құру кезінде қажет.

Тек бос орын немесе үтір синтаксистік қатеге әкеледі.

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

Бос кортеждерді tuple() арқылы да дәлелдерсіз жасауға болады.

empty_tuple = tuple()

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

Функция аргументтеріндегі кортеждер

Кортежді дөңгелек жақшалар () синтаксистік екіұштылық болған кезде де қажет.

Функция аргументтері үтірмен бөлінген, бірақ бұл жағдайда функция кортеж болып табылатынын немесе жоқтығын дөңгелек жақшалардың () болуы немесе болмауы арқылы анық көрсету қажет.

Жақшасыз (), әрбір мән әрбір аргументке беріледі; жақшамен (), әрбір мән бір аргументке кортеж ретінде беріледі.

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

Кортеж жұлдызшамен * белгіленсе, кортеж элементтерін кеңейтуге және аргументтер ретінде беруге болады.

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

Қосымша ақпарат алу үшін келесі мақаланы қараңыз.