Python - Variables

Python Variables

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.

Memory Addresses

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ớ.

memory

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.

Creating Python Variables

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ụ −

Example to Create Python Variables

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

Printing Python Variables

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:

Example to Print Python Variables

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

Deleting Python Variables

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

Example

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

Getting Type of a Variable

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.

Example: Printing Variables Type

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'>

Casting Python Variables

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:

Example

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

Case-Sensitivity of Python Variables

Các biến trong Python phân biệt chữ hoa chữ thường, có nghĩa là Age 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 Variables - Multiple Assignment

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.

Python Variables - Naming Convention

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:

  • A variable name must start with a letter or the underscore character
  • A variable name cannot start with a number or any special character like $, (, * % etc.
  • A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ )
  • Python variable names are case-sensitive which means Name and NAME are two different variables in Python.
  • Python reserved keywords cannot be used naming the variable.

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

Example

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

Example

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

Example

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

Python Local Variables

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.

Example

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

Python Global Variables

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.

Example

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

Constants in Python

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).

Python vs C/C++ Variables

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.

named memory location

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 đè.

Image-20

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.

address_100

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".

address_150

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.

address_200

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)