Làm thế nào để bạn khai báo một biến python?

Chuyển nhượng có nghĩa là "tên này ở phía bên trái hiện đề cập đến kết quả đánh giá phía bên phải, bất kể nó được gọi là gì trước đó [nếu có]"

foo = 'bar' # the name 'foo' is now a name for the string 'bar'
foo = 2 * 3 # the name 'foo' stops being a name for the string 'bar',
# and starts being a name for the integer 6, resulting from the multiplication

Như vậy, tên của Python [một thuật ngữ tốt hơn so với "biến", được cho là] ​​không có các loại liên quan; . Bạn có thể áp dụng lại cùng một tên cho bất kỳ thứ gì bất kể loại của nó, nhưng thứ đó vẫn có hành vi phụ thuộc vào loại của nó. Tên chỉ đơn giản là một cách để chỉ giá trị [đối tượng]. Điều này trả lời câu hỏi thứ hai của bạn. Bạn không tạo biến để giữ loại tùy chỉnh. Bạn không tạo các biến để giữ bất kỳ loại cụ thể nào. Bạn hoàn toàn không "tạo" các biến. Bạn đặt tên cho các đối tượng

Điểm thứ hai. Python tuân theo một quy tắc rất đơn giản khi nói đến các lớp, điều đó thực sự nhất quán hơn nhiều so với những ngôn ngữ như Java, C++ và C#. mọi thứ được khai báo bên trong khối

class Example:
    data = 42
    def method[self]: pass
9 là một phần của lớp. Vì vậy, các hàm [
class Example:
    data = 42
    def method[self]: pass
0] được viết ở đây là các phương thức, tôi. e. một phần của đối tượng lớp [không được lưu trữ trên cơ sở từng trường hợp], giống như trong Java, C++ và C#; . Một lần nữa, tên chỉ là tên và chúng không có kiểu liên kết và hàm cũng là đối tượng trong Python. Như vậy

class Example:
    data = 42
    def method[self]: pass

Lớp cũng là đối tượng trong Python

Vì vậy, bây giờ chúng tôi đã tạo một đối tượng có tên là

class Example:
    data = 42
    def method[self]: pass
1, đại diện cho lớp của tất cả những thứ là
class Example:
    data = 42
    def method[self]: pass
1. Đối tượng này có hai thuộc tính do người dùng cung cấp [Trong C++ là "thành viên"; trong C# là "trường hoặc thuộc tính hoặc phương thức"; trong Java là "trường hoặc phương thức"]. Một trong số chúng được đặt tên là
class Example:
    data = 42
    def method[self]: pass
0 và nó lưu trữ giá trị số nguyên
class Example:
    data = 42
    def method[self]: pass
1. Cái còn lại có tên là
class Example:
    data = 42
    def method[self]: pass
2 và nó lưu trữ một đối tượng hàm. [Có một số thuộc tính nữa mà Python tự động thêm vào. ]

Tuy nhiên, những thuộc tính này vẫn không thực sự là một phần của đối tượng. Về cơ bản, một đối tượng chỉ là một tập hợp nhiều tên hơn [tên thuộc tính], cho đến khi bạn nhận ra những thứ không thể phân chia được nữa. Do đó, các giá trị có thể được chia sẻ giữa các thể hiện khác nhau của một lớp hoặc thậm chí giữa các đối tượng của các lớp khác nhau, nếu bạn cố ý thiết lập điều đó

Hãy tạo một ví dụ

x = Example[]

Bây giờ chúng ta có một đối tượng riêng tên là

class Example:
    data = 42
    def method[self]: pass
3, là một thể hiện của
class Example:
    data = 42
    def method[self]: pass
1.
class Example:
    data = 42
    def method[self]: pass
0 và
class Example:
    data = 42
    def method[self]: pass
2 không thực sự là một phần của đối tượng, nhưng chúng ta vẫn có thể tra cứu chúng qua
class Example:
    data = 42
    def method[self]: pass
3 nhờ một số phép thuật mà Python thực hiện ở hậu trường. Cụ thể, khi chúng tôi tra cứu
class Example:
    data = 42
    def method[self]: pass
2, chúng tôi sẽ nhận được một "phương thức ràng buộc" [khi chúng tôi gọi nó,
class Example:
    data = 42
    def method[self]: pass
3 được chuyển tự động dưới dạng tham số
x = Example[]
0, điều này không thể xảy ra nếu chúng tôi tra cứu trực tiếp
x = Example[]
1]

Điều gì xảy ra khi chúng tôi cố gắng sử dụng

x = Example[]
2?

Khi chúng tôi kiểm tra nó, nó được tìm kiếm trong đối tượng đầu tiên. Nếu không tìm thấy trong đối tượng, Python sẽ tìm trong lớp

Tuy nhiên khi chúng ta gán cho

x = Example[]
2 thì Python sẽ tạo một thuộc tính trên đối tượng. Nó sẽ không thay thế thuộc tính của lớp

Điều này cho phép chúng ta khởi tạo đối tượng. Python sẽ tự động gọi phương thức

x = Example[]
4 của lớp trên các phiên bản mới khi chúng được tạo, nếu có. Trong phương thức này, chúng ta có thể chỉ cần gán cho các thuộc tính để đặt giá trị ban đầu cho thuộc tính đó trên mỗi đối tượng

class Example:
    data = 42
    def method[self]: pass
7

Bây giờ chúng ta phải chỉ định một

x = Example[]
5 khi chúng ta tạo một
class Example:
    data = 42
    def method[self]: pass
1 và mỗi phiên bản có một
x = Example[]
5 riêng. Python sẽ bỏ qua thuộc tính lớp
x = Example[]
8 bất cứ khi nào chúng ta tra cứu
x = Example[]
9 của một thể hiện, bởi vì thuộc tính của thể hiện sẽ được tìm thấy đầu tiên

Một cảnh báo cuối cùng. sửa đổi [đột biến] và chuyển nhượng là những thứ khác nhau

Trong Python, các chuỗi là bất biến. Chúng không thể được sửa đổi. khi bạn làm

class Example:
    data = 42
    def method[self]: pass
2

Bạn không thay đổi chuỗi 'hi' ban đầu. Điều đó là không thể trong Python. Thay vào đó, bạn tạo một chuỗi mới

class Example:
    data = 42
    def method[self]: pass
70 và làm cho
class Example:
    data = 42
    def method[self]: pass
71 không còn là tên của
class Example:
    data = 42
    def method[self]: pass
72 nữa mà thay vào đó bắt đầu là tên của
class Example:
    data = 42
    def method[self]: pass
70. Chúng tôi cũng đã đặt tên
class Example:
    data = 42
    def method[self]: pass
74 cho
class Example:
    data = 42
    def method[self]: pass
72 và sau khi áp dụng lại tên
class Example:
    data = 42
    def method[self]: pass
71,
class Example:
    data = 42
    def method[self]: pass
74 vẫn là tên cho
class Example:
    data = 42
    def method[self]: pass
72, vì
class Example:
    data = 42
    def method[self]: pass
72 vẫn tồn tại và không bị thay đổi

Nhưng danh sách có thể được thay đổi

class Example:
    data = 42
    def method[self]: pass
3

Bây giờ

class Example:
    data = 42
    def method[self]: pass
74 cũng là [1, 2, 3, 4], bởi vì chúng tôi đã đặt tên cho
class Example:
    data = 42
    def method[self]: pass
74 cho cùng một thứ mà
class Example:
    data = 42
    def method[self]: pass
71 đã đặt tên, và sau đó chúng tôi đã thay đổi thứ đó. Chúng tôi đã không tạo một danh sách mới cho
class Example:
    data = 42
    def method[self]: pass
71 để đặt tên, bởi vì Python chỉ đơn giản là đối xử khác với
class Example:
    data = 42
    def method[self]: pass
24 đối với các danh sách

Điều này quan trọng đối với các đối tượng vì nếu bạn có một danh sách dưới dạng thuộc tính lớp và sử dụng một thể hiện để sửa đổi danh sách, thì thay đổi đó sẽ được "nhìn thấy" trong tất cả các thể hiện khác. Điều này là do [a] dữ liệu thực sự là một phần của đối tượng lớp chứ không phải bất kỳ đối tượng thể hiện nào;

Bạn có thể khai báo một biến trong Python không?

Trong các ngôn ngữ đó, loại biến phải được chỉ định trước khi nó có thể được gán giá trị. Quá trình này được gọi là khai báo biến. Nhưng trong Python, chúng ta không khai báo biến, chúng ta chỉ gán biến cho chúng . Tóm lại, chúng ta có thể coi một biến trong Python là tên của một đối tượng.

Cách chính xác để khai báo các biến là gì?

Khai báo biến là nơi chương trình nói rằng nó cần một biến. Đối với các chương trình nhỏ của chúng tôi, đặt câu lệnh khai báo giữa hai dấu ngoặc nhọn của phương thức chính . Phần khai báo đặt tên và kiểu dữ liệu cho biến. Nó cũng có thể yêu cầu một giá trị cụ thể được đặt trong biến.

Chủ Đề