Tuple dengan satu elemen dalam Python memerlukan koma di belakang

Perniagaan

Tuples, yang merupakan objek jujukan tidak boleh diubah (tidak boleh ditukar) dalam Python.

Penjagaan mesti diambil apabila menghasilkan tupel dengan elemen tunggal atau tupel kosong.

Butiran berikut diterangkan di sini.

  • Tuple dengan 1 elemen
  • Tanda kurung bulat Tuple boleh diabaikan.
  • Tuple kosong
  • Tuple dalam hujah fungsi

Tuple dengan 1 elemen

Jika anda cuba menjana tupel dengan satu elemen dan menulis hanya satu objek di dalam kurungan bulat (), kurungan bulat () akan diabaikan dan diproses dan tidak dianggap sebagai tupel.

single_tuple_error = (0)

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

Tanda koma di belakang diperlukan untuk menghasilkan tuple dengan satu elemen.

single_tuple = (0, )

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

Sebagai contoh, apabila menggunakan operator + untuk menggabungkan berbilang tupel, ambil perhatian bahawa jika anda cuba menambah satu elemen dan melupakan koma, anda akan mendapat ralat.

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

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

Tanda kurung bulat Tuple boleh diabaikan.

Sebab tuple dengan satu elemen memerlukan koma adalah kerana tupel bukanlah nilai yang disertakan dalam kurungan bulat () tetapi nilai yang dipisahkan dengan koma.

Ia adalah koma yang mencipta tupel, bukan kurungan bulat.
Tuples — Built-in Types — Python 3.10.4 Documentation

Walaupun tanda kurung bulat () ditinggalkan, ia diproses sebagai tupel.

t = 0, 1, 2

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

Ambil perhatian bahawa koma yang tidak diperlukan selepas objek dianggap sebagai tupel.

t_ = 0,

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

Tuple kosong

Seperti yang dinyatakan di atas, kurungan bulat () boleh diabaikan apabila mewakili tuple, tetapi diperlukan apabila menjana tupel kosong.

Ruang atau koma sahaja akan mengakibatkan 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 kosong juga boleh dijana oleh tuple() tanpa hujah.

empty_tuple = tuple()

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

Tuple dalam hujah fungsi

Tanda kurung bulat Tuple () diperlukan walaupun terdapat kekaburan sintaksis.

Argumen fungsi dipisahkan dengan koma, tetapi dalam kes ini, adalah perlu untuk menunjukkan secara eksplisit sama ada fungsi itu adalah tuple atau tidak dengan kehadiran atau ketiadaan kurungan bulat ().

Tanpa tanda kurungan (), setiap nilai dihantar ke setiap hujah; dengan kurungan (), setiap nilai dihantar sebagai tuple kepada satu argumen.

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

Jika tupel ditandakan dengan asterisk *, unsur tupel boleh dikembangkan dan diluluskan sebagai hujah.

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

Untuk maklumat lanjut, lihat artikel berikut.