Unpacking and Packing

Unpacking

(a, b, c) = (1, 2, 3)       # a = 1, b = 2, c = 3

# Following syntaxes are equivalent to the first one
(a, b, c) = 1, 2, 3
a, b, c = (1, 2, 3)
a, b, c = 1, 2, 3

a, b, c = "123"         # a = "1", b = "2", c = "3"

a, b, c = [1, 2, 3]     # a = 1, b = 2, c = 3

a, b, c = range(3)      # a = 0, b = 1, c = 2

a, b, c = {1, 2, 3}     # a = 1, b = 2, c = 3
a, b, c = {3, 2, 1}     # a = 1, b = 2, c = 3

my_dict = {"one": 1, "two": 2, "three": 3}
a, b, c = my_dict       # a = "one", b = "two", c = "three"
a, b, c = my_dict.values()  # a = 1, b = 2, c = 3
a, b, c = my_dict.items()   # a = ("one", 1), b = ("two", 2), c = ("three", 3)

[a, b, c] = 1, 2, 3     # a = 1, b = 2, c = 3
[a, b, c] = "123"       # a = "1", b = "2", c = "3"

Packing

a, b, *c = 1, 2, 3      # a = 1, b = 2, c = [3]
a, b, *c = 1, 2, 3, 4, 5        # a = 1, b = 2, c = [3, 4, 5]
a, *b, c = 1, 2, 3, 4, 5        # a = 1, b = [2, 3, 4], c = 5
a, b, *c = 1, 2         # a = 1, b = 2, c = []
a, *c, b = 1, 2         # a = 1, b = 2, c = []
*a, b = 1, 2, 3         # a = [1, 2], b = 3

Swaping

a = 5
b = 10

a, b = b, a     # a = 10, b = 5

Unnecessary values:

a, b, *_ = 1, 2, 3, 4, 5, 6 # a = 1, b = 2, _ = [3, 4, 5, 6]

name, surname, *_ = ("Ivan", "Ivanovich", "19 y.o.", "+380666873434")
# name = "Ivan", surname = "Ivanovich", _ = [ "19 y.o.", "+380666873434"]