Οι πλειάδες με ένα μόνο στοιχείο στην Python απαιτούν ένα τελικό κόμμα

Επιχείρηση

Tuples, τα οποία είναι αμετάβλητα (αμετάβλητα) αντικείμενα ακολουθίας στην 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'>

Για περισσότερες πληροφορίες, ανατρέξτε στο ακόλουθο άρθρο.