Các bộ dữ liệu có một phần tử trong Python yêu cầu dấu phẩy ở cuối

Kinh doanh

Tuples, là các đối tượng chuỗi bất biến (không thể thay đổi) trong Python.

Cần phải cẩn thận khi tạo các bộ giá trị với một phần tử duy nhất hoặc các bộ giá trị trống.

Các chi tiết sau đây được mô tả ở đây.

  • Tuple với 1 phần tử
  • Có thể bỏ qua dấu ngoặc tròn Tuple.
  • Tuple trống
  • Bộ số trong đối số hàm

Tuple với 1 phần tử

Nếu bạn cố gắng tạo một bộ giá trị với một phần tử và chỉ viết một đối tượng bên trong dấu ngoặc tròn (), dấu ngoặc tròn () sẽ bị bỏ qua và xử lý và không được coi là một bộ giá trị.

single_tuple_error = (0)

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

Cần có một dấu phẩy ở cuối để tạo một bộ giá trị với một phần tử.

single_tuple = (0, )

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

Ví dụ: khi sử dụng toán tử + để nối nhiều bộ giá trị, hãy lưu ý rằng nếu bạn cố gắng thêm một phần tử và quên dấu phẩy, bạn sẽ gặp lỗi.

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

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

Có thể bỏ qua dấu ngoặc tròn Tuple.

Lý do tại sao một bộ giá trị với một phần tử cần dấu phẩy là vì một bộ giá trị không phải là một giá trị được đặt trong dấu ngoặc tròn () mà là một giá trị được phân tách bằng dấu phẩy.

Đó là dấu phẩy tạo ra bộ giá trị, không phải dấu ngoặc tròn.
Tuples — Built-in Types — Python 3.10.4 Documentation

Ngay cả khi dấu ngoặc tròn () bị bỏ qua, nó được xử lý như một bộ giá trị.

t = 0, 1, 2

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

Lưu ý rằng dấu phẩy không cần thiết sau một đối tượng được coi là một bộ giá trị.

t_ = 0,

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

Tuple trống

Như đã đề cập ở trên, dấu ngoặc tròn () có thể được bỏ qua khi biểu diễn một bộ giá trị, nhưng được yêu cầu khi tạo một bộ giá trị trống.

Chỉ một dấu cách hoặc dấu phẩy sẽ dẫn đến Lỗi cú pháp.

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

Các bộ giá trị trống cũng có thể được tạo bởi tuple () mà không có đối số.

empty_tuple = tuple()

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

Bộ số trong đối số hàm

Dấu ngoặc tròn Tuple () được yêu cầu ngay cả khi có sự không rõ ràng về cú pháp.

Các đối số của hàm được phân tách bằng dấu phẩy, nhưng trong trường hợp này, cần phải chỉ rõ hàm có phải là một bộ hay không bằng cách có hay không có dấu ngoặc tròn ().

Không có dấu ngoặc đơn (), mỗi giá trị được chuyển cho mỗi đối số; với dấu ngoặc đơn (), mỗi giá trị được truyền dưới dạng một bộ giá trị cho một đối số.

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

Nếu tuple được đánh dấu bằng dấu hoa thị *, các phần tử của tuple có thể được mở rộng và chuyển dưới dạng đối số.

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

Để biết thêm thông tin, hãy xem bài viết sau đây.

Copied title and URL