Làm cho nó bằng trong chuyên gia gán python

Một trong những thao tác cơ bản trong bất kỳ ngôn ngữ máy tính nào là câu lệnh gán. Câu lệnh gán cho phép chúng ta liên kết một tên biến với một giá trị, vì vậy chúng ta có thể dễ dàng thao tác dữ liệu của mình hơn. Trong python, giống như nhiều ngôn ngữ khác, dấu bằng [=] được sử dụng để gán giá trị cho một biến; . Một số ví dụ đơn giản về câu lệnh gán sau

>>> x = 3
>>> y = 'This is a string'
>>> z = x + 3
>>> y = abs[-7]
>>> vegies = ['broccoli','peas','carrots']      
>>> meal = vegies
Các câu lệnh gán có thể được xâu chuỗi; .
>>> count = number = check = 0
Cả ba biến [đếm, số và kiểm tra] sẽ có giá trị 0 sau phép gán này. Lưu ý rằng, khi sử dụng trình thông dịch python một cách tương tác, các câu lệnh gán này không tạo ra bất kỳ kết quả nào. [Tất nhiên, bạn có thể chỉ cần nhập tên của bất kỳ biến quan tâm nào và giá trị của nó sẽ được hiển thị trong chế độ tương tác. ]

Một tính năng hữu ích khác của toán tử gán trong python là nó hỗ trợ nhiều phép gán. Nếu bạn có một danh sách các biến được phân tách bằng dấu phẩy ở phía bên trái của dấu bằng và một số biểu thức được phân tách bằng dấu phẩy ở phía bên phải, python sẽ gán từng biến cho biểu thức tương ứng của nó

>>> zero,one,ten = 0,1,10     
>>> all = first,last = ['john','smith']
Ví dụ thứ hai cho thấy cách kết hợp các ý tưởng về xâu chuỗi và phân công nhiều lần; . Loại kỹ thuật này có thể được sử dụng với bất kỳ biểu thức nào đánh giá một chuỗi [chuỗi, danh sách hoặc bộ]

Mặc dù các chi tiết bên trong của python thường không khiến bạn lo lắng, nhưng có một khía cạnh của câu lệnh gán cần được hiểu để lập trình hiệu quả trong python. Xét các câu lệnh gán sau

# assignment of values
>>> x = 3
>>> z = x + 4
>>> breakfast = 'spam'
>>> names = ['Fred','Sam','Harry']
# assignments using variables
>>> friends = names
>>> y = x
>>> meal = breakfast

Trong tập hợp các phép gán đầu tiên, các giá trị của phép gán bao gồm các chuỗi ký tự, số hoặc danh sách hoặc biểu thức liên quan đến các đại lượng đó. Trong những trường hợp này, những giá trị đó được lưu trữ trong bộ nhớ và sẽ được liên kết với tên được gán của chúng cho đến khi bạn chủ động thay đổi chúng hoặc python kết thúc chương trình của bạn

Nhưng khi bạn gán một tên biến cho một tên biến khác, python thực sự lưu trữ một tham chiếu đến biến đó, nghĩa là thay vì tạo một bản sao mới của nội dung của biến ban đầu, nó sẽ lưu trữ thông tin về nơi lưu trữ biến ban đầu và . Như vậy, tuyên bố

>>> x = 3
yêu cầu python lưu trữ giá trị số nguyên 3 ở một vị trí được liên kết với tên biến x, nhưng câu lệnh_______5_________ yêu cầu python lưu trữ vị trí của biến x trong biến y và sử dụng giá trị được lưu trữ tại vị trí đó làm giá trị của y. Đây là một trong một số tính năng thiết kế của python giúp giữ cho ngôn ngữ hiệu quả. Để ngăn bạn mất dữ liệu, python theo dõi số lần một biến được tham chiếu và nếu bạn thay đổi giá trị của một biến mà một biến khác có tham chiếu, nó sẽ sao chép giá trị của biến đó trước khi hủy giá trị đó, do đó

Với các biến vô hướng, rất khó để xây dựng một tình huống trong đó sơ đồ này sẽ tạo ra kết quả đáng ngạc nhiên, vì khi giá trị của tham chiếu bị thay đổi, python sẽ tự động cập nhật giá trị của bất kỳ biến nào tham chiếu đến giá trị đó. Tuy nhiên, với các đối tượng có thể thay đổi như danh sách, các thay đổi trong danh sách không bắt đầu cơ chế cập nhật này và kết quả đáng ngạc nhiên có thể xảy ra

Để minh họa, giả sử chúng ta tạo một biến vô hướng và gán nó cho biến thứ hai

>>> sound = 'Ni'
>>> knight = sound
Nếu chúng ta thay đổi giá trị của biến sound, python sẽ cập nhật giá trị của Knight để giá trị này không bị mất.
>>> sound = 'Arf'
>>> sound
'Arf'
>>> knight
'Ni'

Bây giờ hãy xem xét trường hợp của một danh sách. Chúng tôi sẽ tạo một danh sách, sau đó gán nó cho một biến khác

>>> foods = ['spam','spam','spam','sausage','spam']
>>> meal = foods
Nếu chúng ta gán một giá trị hoàn toàn mới cho các loại thực phẩm, python sẽ cập nhật giá trị của bữa ăn để nó chứa danh sách ban đầu, vì bây giờ nó là biến duy nhất tham chiếu đến danh sách ban đầu đó.
>>> foods = ['beans','spam','eggs']
>>> meal
['spam', 'spam', 'spam', 'sausage', 'spam']
Nhưng nếu chúng tôi chỉ sửa đổi một phần của danh sách, python sẽ giữ lại tham chiếu để bữa ăn có giá trị của danh sách đã sửa đổi.
>>> count = number = check = 0
0Mặc dù chúng tôi đã không thay đổi rõ ràng bất kỳ giá trị nào được lưu trữ thông qua tên bữa ăn, nhưng bạn có thể thấy bữa ăn đó vẫn tham chiếu đến danh sách [hiện đã được sửa đổi] được lưu trữ dưới tên thực phẩm

Python cung cấp một số công cụ giúp bạn xử lý tình huống này. Mô-đun sao chép [Phần ] cung cấp một chức năng có tên là sao chép, chức năng này sẽ thực sự tạo một bản sao của danh sách, thay vì chỉ lưu trữ một tham chiếu. Vì vậy, nếu chúng ta muốn đảm bảo rằng bữa ăn chứa các thành phần ban đầu của thực phẩm ngay cả khi thực phẩm bị biến đổi, chúng ta có thể gọi hàm này thay vì sử dụng phép gán.

>>> count = number = check = 0
1Có thể thu được kết quả tương tự bằng cách chỉ định một lát của mảng không cung cấp chỉ số bắt đầu hoặc kết thúc. Thay vì gọi hàm sao chép, chúng ta có thể tạo một bản sao thực sự của các loại thực phẩm trong bữa ăn bằng một câu lệnh như
>>> count = number = check = 0
2

Toán tử is có thể được sử dụng để tìm hiểu xem một biến có phải là tham chiếu đến biến khác không. Giống như toán tử logic bằng [==, Phần ], toán tử is trả về 1 hoặc 0 tùy thuộc vào việc hai đối tượng được so sánh có thực sự tham chiếu đến cùng một đối tượng hay không. [Toán tử bằng chỉ đơn giản là kiểm tra xem chúng có cùng kiểu không và chứa các giá trị giống nhau. ] Chúng ta có thể nghiên cứu hành vi của toán tử is bằng cách chèn một vài câu lệnh bổ sung vào ví dụ trên

Chủ Đề