Hướng dẫn what is the difference between packing and unpacking in python? - sự khác biệt giữa đóng gói và giải nén trong python là gì?

Đóng gói và giải nén thực sự cải thiện khả năng đọc mã của bạn. Hãy cùng xem xét chúng và học cách sử dụng dấu gạch dưới và dấu hoa thị với bộ dữ liệu.

Ảnh của Andrew Neel trên unplash

Tuples là loại dữ liệu bất biến trong Python. Chúng nhanh hơn, tiết kiệm bộ nhớ và được bảo vệ chống lại các sửa đổi. Đóng gói và giải nén có thể được sử dụng cho bất kỳ đối tượng có thể lặp lại nào nhưng một trong những cách sử dụng nổi tiếng đã thuộc về các đối tượng tuple. Một trong những tác động lớn nhất của việc sử dụng đóng gói và giải nén, nó cải thiện khả năng đọc mã của bạn.

Đóng gói và giải nén Tuple là gì?

Hãy bắt đầu với các định nghĩa đơn giản.

Đóng gói Tuple đề cập đến việc gán nhiều giá trị thành một tuple. refers to assigning multiple values into a tuple.

Tuple giải nén đề cập đến việc gán một tuple thành nhiều biến. refers to assigning a tuple into multiple variables.

Bạn đã sử dụng đóng gói Tuple vì nó đơn giản như:tuple packing because it is as simple as:

>>> django_movie = ("Tarantino", 2012, 8.4, "Waltz & DiCaprio")

Chúng tôi chỉ gán nhiều biến, đó là

>>> director, year, imdb_rating, stars = django_movie
0,
>>> director, year, imdb_rating, stars = django_movie
1,
>>> director, year, imdb_rating, stars = django_movie
2 và
>>> director, year, imdb_rating, stars = django_movie
3, thành một tuple, đó là
>>> director, year, imdb_rating, stars = django_movie
4.

Hãy để cố gắng truy cập vào các yếu tố của

>>> director, year, imdb_rating, stars = django_movie
4:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]

Thay vì làm như vậy, có một cách pythonic hơn để xử lý nó: giải nén.tuple unpacking.

>>> director, year, imdb_rating, stars = django_movie

Như bạn thấy, việc giải nén Tuple hoàn toàn ngược lại với việc đóng gói tple để chúng ta gán từng phần tử của một tuple thành nhiều biến. Trên thực tế, việc giải nén tple có cùng ý nghĩa với nhiều gán một bộ trong python. tuple unpacking is completely the opposite of tuple packing so that we assign each element of a tuple into multiple variables. In fact, tuple unpacking has the same meaning with multiple assignment of a tuple in Python.

Tất nhiên, có một số quy tắc nhất định phải được tuân theo khi sử dụng việc giải nén tuple. Hãy nhớ rằng phải có cùng một số biến bằng chiều dài của tuple. Nếu số lượng các phần tử là nhiều hơn hoặc ít hơn, ValueError sẽ tăng.tuple unpacking. Keep in mind that there must be the same number of variables equal to the length of the tuple. If the number of elements is either more or less, ValueError raises.

>>> director, year, imdb_rating = django_movie

Output:

Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack (expected 3)

Nó nói rằng chúng tôi đã cố gắng giải nén một tuple lớn hơn thành số lượng biến nhỏ hơn.

>>> director, scenarist, year, imdb_rating, stars = django_movie

Output:

Traceback (most recent call last):
File "", line 1, in
ValueError: not enough values to unpack (expected 5, got 4)

Lỗi cho chúng tôi biết rằng chúng tôi đã cố gắng giải nén một phần nhỏ hơn thành số lượng biến lớn hơn.

Các mặt hàng không mong muốn với dấu gạch dưới ‘_

Một dấu gạch dưới

>>> director, year, imdb_rating, stars = django_movie
6 giữ các biến mà bạn không quan tâm đến các giá trị của chúng. Nói cách khác, không quan trọng họ là gì.

Giả sử rằng bạn đã thắng sử dụng

>>> director, year, imdb_rating, stars = django_movie
7 trong dự án của bạn. Trong trường hợp này, bạn có thể sử dụng
>>> director, year, imdb_rating, stars = django_movie
6 để cho thấy rằng bạn không quan tâm đến giá trị của biến
>>> director, year, imdb_rating, stars = django_movie
7.

>>> director, year, _, stars = django_movie

Hãy nhớ rằng

>>> director, year, imdb_rating, stars = django_movie
6 là một tên biến hợp lệ, không phải là một từ khóa đặc biệt trong Python để nó vẫn giữ giá trị của
>>> director, year, imdb_rating, stars = django_movie
7.

>>> print(_)

Output:

8.4

Điều gì sẽ xảy ra nếu bạn muốn sử dụng chỉ giữ

>>> director, year, imdb_rating = django_movie
2 và
>>> director, year, imdb_rating = django_movie
3? Sau đó, bạn sẽ bỏ qua
>>> director, year, imdb_rating = django_movie
4 và
>>> director, year, imdb_rating, stars = django_movie
7 bằng cách sử dụng
>>> director, year, imdb_rating, stars = django_movie
6 cho mỗi người trong số họ.

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
0

Bạn có thể chỉ định tất cả các giá trị bạn muốn bỏ qua với

>>> director, year, imdb_rating, stars = django_movie
6.

Nhưng điều này không được tốt. Đúng?

Mở rộng việc giải nén với Asterisks ‘*

Toán tử

>>> director, year, imdb_rating = django_movie
8 được sử dụng để mở rộng giải nén.

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
1

Chúng ta có thể in các giá trị của họ để xem những gì đã xảy ra.

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
2

Output:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
3

Hãy cùng xem xét các ví dụ tiếp theo.

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
4

Output:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
5

Lưu ý rằng khi chúng tôi sử dụng toán tử

>>> director, year, imdb_rating = django_movie
8, danh sách trả về, không phải là một tuple.

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
6

Output:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
7

Một ví dụ cuối cùng:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
8

Output:

>>> director = django_movie[0]
>>> year = django_movie[1]
>>> imdb_rating = django_movie[2]
>>> stars = django_movie[3]
9

Tôi hy vọng bạn thấy bài viết này hữu ích.

Một bài viết hữu ích khác mà bạn có thể quan tâm:

Đóng gói và giải nén trong Python là gì?

Giới thiệu. Giải nén trong Python đề cập đến một hoạt động bao gồm việc gán một giá trị có thể lặp lại cho một tuple (hoặc danh sách) các biến trong một câu lệnh gán duy nhất. Để bổ sung, thuật ngữ đóng gói có thể được sử dụng khi chúng tôi thu thập một số giá trị trong một biến duy nhất bằng toán tử giải nén có thể lặp lại, *.Unpacking in Python refers to an operation that consists of assigning an iterable of values to a tuple (or list ) of variables in a single assignment statement. As a complement, the term packing can be used when we collect several values in a single variable using the iterable unpacking operator, * .

Đóng gói và giải nén là gì?

Đóng gói với * Toán tử Toán tử * là Toán tử giải nén Tuple (hoặc Iterables).Nó cho phép đóng gói nhiều giá trị thành một biến duy nhất.Chúng tôi đóng gói một bộ giá trị thành một biến duy nhất bằng cách sử dụng các toán tử * trong ví dụ sau.Thí dụ -The * operator is the tuple (or iterables) unpacking operator. It allows packing multiple values into a single variable. We pack a tuple of values into a single variable using the * operators in the following example. Example -

Đóng gói và giải nén các bộ dữ liệu trong Python là gì?

Theo một cách khác, nó được gọi là giải nén một tuple của các giá trị thành một biến.Trong đóng gói, chúng tôi đặt các giá trị vào một bộ tải mới trong khi giải nén, chúng tôi trích xuất các giá trị đó vào một biến duy nhất.In packing, we put values into a new tuple while in unpacking we extract those values into a single variable.

Đóng gói trong Python là gì?

Khoa học dữ liệu thực tế bằng cách sử dụng hoạt động của Python ở trên được gọi là 'Đóng gói vì nó đóng gói tất cả các đối số thành một biến duy nhất mà cuộc gọi phương thức này nhận được thành một tuple được gọi là Args.Chúng ta có thể sử dụng tên khác ngoài Args, nhưng Args là cách làm phổ biến và pythonic nhất.pack all the arguments into one single variable that this method call receives into a tuple called args. We can use name other than args, but args is the most common and pythonic way of doing things.