Картэжы, якія з’яўляюцца нязменнымі (нязменнымі) аб’ектамі паслядоўнасці ў 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'>
Пусты картэж
Як згадвалася вышэй, круглыя дужкі () могуць быць апушчаны пры прадстаўленні картэжа, але неабходныя пры стварэнні пустога картэжа.
Толькі прабел або коска прывядзе да 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
Пустыя картэжы таксама могуць быць створаны з дапамогай 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'>
Для атрымання дадатковай інфармацыі глядзіце наступны артыкул.