Biến trong Python là các vị trí bộ nhớ được dự trữ để lưu trữ giá trị trong một chương trình Python. Điều này có nghĩa là khi bạn tạo một biến, bạn đã dự trữ một số không gian trong bộ nhớ.
Dựa trên kiểu dữ liệu của một biến, Python interpreter phân bổ bộ nhớ và quyết định những gì có thể được lưu trữ trong bộ nhớ đã được dành riêng. Do đó, bằng cách gán các data types khác nhau cho các biến Python, bạn có thể lưu trữ số nguyên, số thập phân hoặc ký tự trong các biến này.
Các mục dữ liệu thuộc các kiểu dữ liệu khác nhau được lưu trữ trong bộ nhớ của máy tính. Các vị trí bộ nhớ của máy tính có một số hoặc địa chỉ, được biểu diễn nội bộ dưới dạng nhị phân. Dữ liệu cũng được lưu trữ dưới dạng nhị phân vì máy tính hoạt động dựa trên nguyên tắc biểu diễn nhị phân. Trong sơ đồ dưới đây, một chuỗi May và một số 18 được hiển thị như được lưu trữ trong các vị trí bộ nhớ.
Nếu bạn biết ngôn ngữ assembly, bạn sẽ chuyển đổi các mục dữ liệu này và địa chỉ bộ nhớ, và cung cấp một lệnh ngôn ngữ máy. Tuy nhiên, điều này không dễ dàng cho mọi người. Trình biên dịch ngôn ngữ như trình thông dịch Python thực hiện loại chuyển đổi này. Nó lưu trữ đối tượng ở một vị trí bộ nhớ được chọn ngẫu nhiên. Hàm tích hợp sẵn id() của Python trả về địa chỉ nơi đối tượng được lưu trữ.
>>> "May" May >>> id("May") 2167264641264 >>> 18 18 >>> id(18) 140714055169352
Khi dữ liệu được lưu trữ trong bộ nhớ, nó nên được truy cập nhiều lần để thực hiện một quy trình nhất định. Rõ ràng, việc lấy dữ liệu từ ID của nó là rất phức tạp. Các ngôn ngữ cấp cao như Python cho phép đặt một bí danh hoặc nhãn phù hợp để tham chiếu đến vị trí bộ nhớ.
Trong ví dụ trên, chúng ta hãy gán vị trí của May là month, và vị trí mà 18 được lưu trữ là age. Python sử dụng toán tử gán (=) để liên kết một đối tượng với nhãn.
>>> month="May" >>> age=18
Đối tượng dữ liệu (May) và tên của nó (month) có cùng id(). id() của 18 và age cũng giống nhau.
>>> id(month) 2167264641264 >>> id(age) 140714055169352
Nhãn là một định danh. Nó thường được gọi là một biến. Một biến trong Python là một tên biểu tượng đại diện cho một đối tượng hoặc một tham chiếu đến một đối tượng.
Các biến trong Python không cần khai báo rõ ràng để dự trữ không gian bộ nhớ hoặc bạn có thể nói là để tạo ra một biến. Một biến trong Python được tạo ra tự động khi bạn gán một giá trị cho nó. Dấu "=" được sử dụng để gán giá trị cho các biến.
Toán hạng bên trái của toán tử = là tên của biến và toán hạng bên phải của toán tử = là giá trị được lưu trữ trong biến. Ví dụ −
Ví dụ này tạo ra các loại biến khác nhau (một số nguyên, một số thực và một chuỗi).
counter = 100 # Creates an integer variable miles = 1000.0 # Creates a floating point variable name = "Zara Ali" # Creates a string variable
Một khi chúng ta tạo một biến Python và gán giá trị cho nó, chúng ta có thể in nó ra bằng cách sử dụng hàm print() . Dưới đây là phần mở rộng của ví dụ trước và cho thấy cách in các biến khác nhau trong Python:
Ví dụ này in ra các biến.
counter = 100 # Creates an integer variable miles = 1000.0 # Creates a floating point variable name = "Zara Ali" # Creates a string variable print (counter) print (miles) print (name)
Ở đây, 100, 1000.0 và "Zara Ali" là các giá trị được gán cho các biến counter , miles , và name tương ứng. Khi chạy chương trình Python ở trên, điều này sẽ tạo ra kết quả sau −
100 1000.0 Zara Ali
Bạn có thể xóa tham chiếu đến một đối tượng số bằng cách sử dụng câu lệnh del. Cú pháp của câu lệnh del là −
del var1[,var2[,var3[....,varN]]]]
Bạn có thể xóa một đối tượng đơn lẻ hoặc nhiều đối tượng bằng cách sử dụng câu lệnh del. Ví dụ −
del var del var_a, var_b
Các ví dụ sau đây cho thấy cách chúng ta có thể xóa một biến và nếu chúng ta cố gắng sử dụng một biến đã bị xóa, thì trình thông dịch Python sẽ ném ra một lỗi:
counter = 100 print (counter) del counter print (counter)
Điều này sẽ tạo ra kết quả sau:
100 Traceback (most recent call last): File "main.py", line 7, in <module> print (counter) NameError: name 'counter' is not defined
Bạn có thể lấy kiểu dữ liệu của một biến Python bằng cách sử dụng hàm tích hợp sẵn type() như sau.
x = "Zara" y = 10 z = 10.10 print(type(x)) print(type(y)) print(type(z))
Điều này sẽ tạo ra kết quả sau:
<class 'str'> <class 'int'> <class 'float'>
Bạn có thể chỉ định kiểu dữ liệu của một biến với sự trợ giúp của việc ép kiểu như sau:
Ví dụ này minh họa tính nhạy cảm với chữ hoa chữ thường của các biến.
x = str(10) # x will be '10' y = int(10) # y will be 10 z = float(10) # z will be 10.0 print( "x =", x ) print( "y =", y ) print( "z =", z )
Điều này sẽ tạo ra kết quả sau:
x = 10 y = 10 z = 10.0
Các biến trong Python phân biệt chữ hoa chữ thường, có nghĩa là Age và age là hai biến khác nhau:
age = 20 Age = 30 print( "age =", age ) print( "Age =", Age )
Điều này sẽ tạo ra kết quả sau:
age = 20 Age = 30
Python cho phép khởi tạo nhiều biến trong một câu lệnh duy nhất. Trong trường hợp dưới đây, ba biến có cùng giá trị.
>>> a=10 >>> b=10 >>> c=10
Thay vì các phép gán riêng biệt, bạn có thể thực hiện điều đó trong một câu lệnh gán duy nhất như sau −
>>> a=b=c=10 >>> print (a,b,c) 10 10 10
Trong trường hợp dưới đây, chúng ta có ba biến với các giá trị khác nhau.
>>> a=10 >>> b=20 >>> c=30
Các câu lệnh gán riêng biệt này có thể được kết hợp thành một câu lệnh. Bạn cần cung cấp các tên biến cách nhau bằng dấu phẩy ở bên trái và các giá trị cách nhau bằng dấu phẩy ở bên phải toán tử =.
>>> a,b,c = 10,20,30 >>> print (a,b,c) 10 20 30
Hãy thử một vài ví dụ trong chế độ kịch bản: −
a = b = c = 100 print (a) print (b) print (c)
Điều này tạo ra kết quả sau:
100 100 100
Ở đây, một đối tượng số nguyên được tạo với giá trị 1, và cả ba biến đều được gán cho cùng một vị trí bộ nhớ. Bạn cũng có thể gán nhiều đối tượng cho nhiều biến khác nhau. Ví dụ −
a,b,c = 1,2,"Zara Ali" print (a) print (b) print (c)
Điều này tạo ra kết quả sau:
1 2 Zara Ali
Ở đây, hai đối tượng số nguyên với giá trị 1 và 2 được gán cho các biến a và b tương ứng, và một đối tượng chuỗi với giá trị "Zara Ali" được gán cho biến c.
Mỗi biến trong Python nên có một tên duy nhất như a, b, c. Tên biến có thể có ý nghĩa như color, age, name, v.v. Có một số quy tắc cần được chú ý khi đặt tên cho một biến trong Python:
Nếu tên của biến chứa nhiều từ, chúng ta nên sử dụng các mẫu đặt tên sau −
Camel case − Chữ cái đầu tiên là chữ thường, nhưng chữ cái đầu tiên của mỗi từ tiếp theo là chữ hoa. Ví dụ: kmPerHour, pricePerLitre
Pascal case − Chữ cái đầu tiên của mỗi từ đều viết hoa. Ví dụ: KmPerHour, PricePerLitre
Snake case − Sử dụng ký tự gạch dưới đơn (_) để phân tách các từ. Ví dụ: km_per_hour, price_per_litre
Dưới đây là các tên biến hợp lệ trong Python:
counter = 100 _count = 100 name1 = "Zara" name2 = "Nuha" Age = 20 zara_salary = 100000 print (counter) print (_count) print (name1) print (name2) print (Age) print (zara_salary)
Điều này sẽ tạo ra kết quả sau:
100 100 Zara Nuha 20 100000
Các tên biến Python sau đây là không hợp lệ:
1counter = 100 $_count = 100 zara-salary = 100000 print (1counter) print ($count) print (zara-salary)
Điều này sẽ tạo ra kết quả sau:
File "main.py", line 3 1counter = 100 ^ SyntaxError: invalid syntax
Khi bạn sử dụng một biến để xác định một đối tượng dữ liệu, nó có thể được sử dụng lặp đi lặp lại mà không cần giá trị id() của nó. Ở đây, chúng ta có hai biến height và width của một hình chữ nhật. Chúng ta có thể tính diện tích và chu vi với những biến này.
>>> width=10 >>> height=20 >>> area=width*height >>> area 200 >>> perimeter=2*(width+height) >>> perimeter 60
Việc sử dụng biến đặc biệt có lợi khi viết kịch bản hoặc chương trình. Đoạn kịch bản sau cũng sử dụng các biến trên.
#! /usr/bin/python3 width = 10 height = 20 area = width*height perimeter = 2*(width+height) print ("Area = ", area) print ("Perimeter = ", perimeter)
Lưu đoạn mã trên với phần mở rộng .py và thực thi từ dòng lệnh. Kết quả sẽ là −
Area = 200 Perimeter = 60
Biến cục bộ trong Python được định nghĩa bên trong một hàm. Chúng ta không thể truy cập biến bên ngoài hàm.
A Python functions is a piece of reusable code and you will learn more about function in Python - Functions tutorial.
Dưới đây là một ví dụ để minh họa cách sử dụng biến cục bộ:
def sum(x,y): sum = x + y return sum print(sum(5, 10))
Điều này sẽ tạo ra kết quả sau −
15
Bất kỳ biến nào được tạo ra bên ngoài một hàm đều có thể được truy cập trong bất kỳ hàm nào và do đó chúng có phạm vi toàn cục.
Dưới đây là một ví dụ về biến toàn cục −
x = 5 y = 10 def sum(): sum = x + y return sum print(sum())
Điều này sẽ tạo ra kết quả sau −
15
Python không có bất kỳ hằng số nào được định nghĩa chính thức. Tuy nhiên, bạn có thể chỉ định một biến được coi là hằng số bằng cách sử dụng tên viết hoa hoàn toàn với dấu gạch dưới. Ví dụ, tên PI_VALUE chỉ ra rằng bạn không muốn biến này bị định nghĩa lại hoặc thay đổi theo bất kỳ cách nào.
The naming convention using all-caps is sometimes referred to as screaming snake case - where the all-caps (screaming) and the underscores (snakes).
Khái niệm về biến hoạt động khác nhau trong Python so với C/C++. Trong C/C++, một biến là một vị trí bộ nhớ có tên. Nếu a=10 và b=10, cả hai đều là hai vị trí bộ nhớ khác nhau. Giả sử địa chỉ bộ nhớ của chúng lần lượt là 100 và 200.
Nếu một giá trị khác được gán cho "a" - chẳng hạn như 50, thì giá trị ở địa chỉ 100 sẽ bị ghi đè.
Một biến trong Python tham chiếu đến đối tượng chứ không phải vị trí bộ nhớ. Một đối tượng chỉ được lưu trữ trong bộ nhớ một lần. Nhiều biến thực sự là nhiều nhãn cho cùng một đối tượng.
Câu lệnh a=50 tạo ra một đối tượng int mới 50 trong bộ nhớ tại một vị trí khác, để lại đối tượng 10 được tham chiếu bởi "b".
Hơn nữa, nếu bạn gán một giá trị khác cho b, đối tượng 10 sẽ không còn được tham chiếu.
Cơ chế thu gom rác của Python giải phóng bộ nhớ chiếm dụng bởi bất kỳ đối tượng nào không được tham chiếu.
Toán tử danh tính của Python is trả về True nếu cả hai toán hạng có giá trị id() giống nhau.
>>> a=b=10 >>> a is b True >>> id(a), id(b) (140731955278920, 140731955278920)