Thứ tư, 12/10/2016 | 00:00 GMT+7

Cách sử dụng các biến trong Python 3

Biến là một khái niệm lập trình quan trọng cần nắm vững. Về cơ bản, chúng là các ký hiệu đại diện cho giá trị bạn đang sử dụng trong một chương trình.

Hướng dẫn này sẽ bao gồm một số khái niệm cơ bản về biến và cách sử dụng chúng tốt nhất trong các chương trình Python 3 mà bạn tạo.

Hiểu các biến

Về mặt kỹ thuật, một biến đang chỉ định vị trí lưu trữ cho một giá trị được gắn với tên hoặc mã định danh tượng trưng. Tên biến được sử dụng để tham chiếu giá trị được lưu trữ đó trong chương trình máy tính.

Bạn có thể coi một biến như một nhãn có tên trên đó, bạn gắn vào một giá trị:

Các biến trong Python

Giả sử ta có một số nguyên, 103204934813 và ta muốn lưu trữ nó trong một biến thay vì liên tục nhập lại số dài nhiều lần. Thay vào đó, hãy sử dụng một cái gì đó dễ nhớ như biến my_int :

my_int = 103204934813 

Nếu ta nghĩ về nó giống như một nhãn được gắn với giá trị, nó sẽ trông giống như sau:

Ví dụ về biến trong Python

Nhãn có tên biến my_int được viết trên đó và được gắn với giá trị số nguyên 103204934813 .

Cụm từ my_int = 103204934813 là một câu lệnh gán , bao gồm một số phần:

  • tên biến ( my_int )
  • toán tử gán , còn gọi là dấu bằng ( = )
  • giá trị đang được gắn với tên biến ( 103204934813 )

Cùng với nhau, ba phần đó tạo thành câu lệnh đặt biến my_int bằng giá trị của số nguyên 103204934813 .

Ngay sau khi ta đặt một biến bằng một giá trị, ta khởi tạo hoặc tạo biến đó. Khi ta đã làm điều đó, ta được cài đặt để sử dụng biến thay vì giá trị. Trong Python, các biến không cần khai báo rõ ràng trước khi sử dụng như một số ngôn ngữ lập trình; bạn có thể bắt đầu sử dụng biến ngay lập tức.

Ngay sau khi ta đặt my_int bằng giá trị của 103204934813 , ta có thể sử dụng my_int thay cho số nguyên, vì vậy hãy in nó ra:

print(my_int) 
Output
103204934813

Sử dụng các biến, ta có thể làm toán nhanh chóng và dễ dàng. Với my_int = 1040 , hãy trừ giá trị số nguyên 813:

print(my_int - 813) 
Output
103204934000

Trong ví dụ này, Python thực hiện phép toán cho ta , trừ 813 từ biến my_int để trả về tổng 103204934000 .

Nói về toán học, các biến có thể được đặt bằng kết quả của một phương trình toán học. Hãy cộng hai số với nhau và lưu giá trị của tổng vào biến x :

x = 76 + 145 

Ví dụ trên có thể trông giống như một cái gì đó bạn đã quen thuộc: đại số. Trong đại số, các chữ cái và các ký hiệu khác được sử dụng để biểu thị số và đại lượng trong các công thức và phương trình, giống như cách các biến là tên ký hiệu biểu thị giá trị của kiểu dữ liệu. Để có cú pháp Python chính xác, bạn cần đảm bảo biến của bạn nằm ở bên trái của bất kỳ phương trình nào.

Hãy tiếp tục và in x :

print(x) 
Output
221

Python trả về giá trị 221 vì biến x được đặt bằng tổng của 76145 .

Các biến có thể đại diện cho bất kỳ kiểu dữ liệu nào, không chỉ số nguyên:

my_string = 'Hello, World!' my_flt = 45.06 my_bool = 5 > 9 #A Boolean value will return either True or False my_list = ['item_1', 'item_2', 'item_3', 'item_4'] my_tuple = ('one', 'two', 'three') my_dict = {'letter': 'g', 'number': 'seven', 'symbol': '&'} 

Nếu bạn in bất kỳ biến nào ở trên, Python sẽ trả về biến đó tương đương với. Ví dụ: hãy làm việc với câu lệnh gán cho kiểu dữ liệu danh sách ở trên:

my_list = ['item_1', 'item_2', 'item_3', 'item_4'] print(my_list) 
Output
['item_1', 'item_2', 'item_3', 'item_4']

Ta đã chuyển giá trị danh sách của ['item_1', 'item_2', 'item_3', 'item_4'] vào biến my_list , sau đó sử dụng hàm print() để in ra giá trị đó bằng cách gọi my_list .

Các biến hoạt động bằng cách tạo ra một vùng bộ nhớ nhỏ trong máy tính của bạn để chấp nhận các giá trị được chỉ định sau đó được liên kết với không gian đó.

Đặt tên biến: Luật và Kiểu

Việc đặt tên cho các biến khá linh hoạt, nhưng bạn cần lưu ý một số luật :

  • Tên biến chỉ được là một từ (không có khoảng trắng)
  • Tên biến chỉ được tạo thành từ các chữ cái, số và dấu gạch dưới ( _ )
  • Tên biến không được bắt đầu bằng số

Tuân theo các luật ở trên, hãy xem xét cả tên biến hợp lệ và không hợp lệ:

Có hiệu lực không hợp lệ Tại sao không hợp lệ
my_int my-int Dấu gạch nối không được phép
int4 4int Không thể bắt đầu bằng một số
MY_INT $ MY_INT Không thể sử dụng các ký hiệu ngoài _
another_int int khác Không được nhiều hơn một từ

Một điều nữa cần lưu ý khi đặt tên biến, đó là chúng có phân biệt chữ hoa chữ thường, nghĩa là my_int , MY_INT , My_IntmY_iNt là tất cả các biến hoàn toàn khác nhau. Bạn nên tránh sử dụng các tên biến tương tự trong một chương trình đảm bảo rằng cả bạn và các cộng tác viên hiện tại và tương lai của bạn đều có thể giữ các biến của bạn ổn định.

Cuối cùng là một số lưu ý về phong cách. Nói một cách thông thường, khi đặt tên cho các biến, thông thường sẽ bắt đầu chúng bằng một chữ cái thường và sử dụng dấu gạch dưới khi tách các từ. Bắt đầu bằng một chữ cái viết hoa không phải là không hợp lệ và một số người có thể thích camelCase hoặc kết hợp các chữ cái viết hoa và viết thường khi viết các biến của họ, nhưng đây là những lựa chọn ít thông thường hơn.

Phong cách thông thường Phong cách độc đáo Tại sao không bình thường
my_int myInt camelCase không thông thường
int4 Int4 Chữ hoa đầu tiên không theo quy ước
my_first_string myFirstString camelCase không thông thường

Lựa chọn phong cách quan trọng nhất bạn có thể thực hiện là phải nhất quán. Nếu bạn bắt đầu làm việc trên một dự án hiện có đang sử dụng camelCase cho các tên biến của nó, thì tốt nhất bạn nên tiếp tục sử dụng kiểu hiện có.

PEP 8 là hướng dẫn chính thức về kiểu mã Python và nó giải quyết nhiều câu hỏi về kiểu cách mà bạn có thể có về Python. Nói chung, tính dễ đọc và tính nhất quán được ưu tiên hơn các mối quan tâm về phong cách khác.

Chỉ định lại các biến

Như hàm ý của biến từ, các biến Python có thể dễ dàng thay đổi. Điều này nghĩa là bạn có thể kết nối một giá trị khác với một biến được gán trước đó rất dễ dàng thông qua việc gán lại đơn giản.

Có thể gán lại là hữu ích vì trong suốt quá trình của một chương trình, bạn có thể cần phải chấp nhận các giá trị do user tạo thành các biến đã được khởi tạo hoặc có thể phải thay đổi việc gán thành một thứ mà bạn đã xác định trước đó.

Biết rằng bạn có thể chỉ định lại một biến một cách dễ dàng và dễ dàng cũng có thể hữu ích trong những trường hợp mà bạn có thể đang làm việc trên một chương trình lớn do người khác bắt đầu và bạn chưa rõ những gì đã được xác định.

Trước tiên hãy gán x dưới dạng số nguyên, sau đó gán lại dưới dạng chuỗi :

#Assign x to be an integer x = 76 print(x)  #Reassign x to be a string x = "Sammy" print(x) 
Output
76 Sammy

Ví dụ trên cho thấy rằng trước tiên ta có thể gán biến x và gán nó với giá trị là một số nguyên, sau đó gán lại biến x gán nó lần này với giá trị là một chuỗi.

Nếu ta viết lại chương trình theo cách này:

x = 76 x = "Sammy" print(x) 

Ta sẽ chỉ nhận giá trị được gán thứ hai làm kết quả vì đó là lần gán mới nhất :

Output
Sammy

Việc gán lại các biến có thể hữu ích trong một số trường hợp, nhưng bạn cần biết về khả năng đọc mã của bạn và làm việc để làm cho chương trình của bạn rõ ràng nhất có thể.

Nhiều nhiệm vụ

Với Python, bạn có thể gán một giá trị duy nhất cho nhiều biến cùng một lúc. Điều này cho phép bạn khởi tạo một số biến cùng một lúc, bạn có thể tự mình gán lại sau này trong chương trình hoặc thông qua đầu vào của user .

Thông qua nhiều phép gán, bạn có thể đặt các biến x , yz thành giá trị của số nguyên 0 :

x = y = z = 0 print(x) print(y) print(z) 
Output
0 0 0

Trong ví dụ này, cả ba biến ( x , yz ) đều được gán cho cùng một vị trí bộ nhớ. Chúng đều bằng giá trị của 0.

Python cũng cho phép bạn gán một số giá trị cho một số biến trong cùng một dòng. Mỗi giá trị này có thể thuộc một kiểu dữ liệu khác nhau:

j, k, l = "shark", 2.05, 15 print(j) print(k) print(l) 
Output
shark 2.05 15

Trong ví dụ trên, biến j được gán cho chuỗi "shark" , biến k được gán cho float 2.05 và biến l được gán cho số nguyên 15 .

Cách tiếp cận này để gán nhiều biến cho nhiều giá trị trong một dòng có thể giữ cho các dòng mã của bạn không hoạt động, nhưng hãy đảm bảo bạn không ảnh hưởng đến khả năng đọc đối với ít dòng mã hơn.

Biến local và toàn cục

Khi sử dụng các biến trong một chương trình, điều quan trọng là phải ghi nhớ phạm vi của biến . Phạm vi của một biến đề cập đến những nơi cụ thể mà nó có thể truy cập được trong mã của một chương trình nhất định. Điều này nghĩa là không phải tất cả các biến đều có thể truy cập được từ tất cả các phần của một chương trình nhất định - một số biến sẽ là toàn cục và một số sẽ là local .

Các biến toàn cục tồn tại bên ngoài các hàm . Các biến local tồn tại trong các hàm.

Ta hãy xem xét các biến local và toàn cục đang hoạt động:

#Create a global variable, outside of a function glb_var = "global"  #Define a function def var_function():     lcl_var = "local" #Create a local variable, inside function     print(lcl_var)  #Call function to print local variable var_function()  #Print global variable outside function print(glb_var) 
Output
local global

Chương trình trên gán biến toàn cục glb_var bên ngoài bất kỳ hàm nào, sau đó định nghĩa hàm var_function() . Bên trong hàm, một biến local gọi là lcl_var được gán và sau đó được in ra. Chương trình kết thúc bằng cách gọi var_function() và sau đó in glb_var .

glb_var là một biến toàn cục, ta có thể tham chiếu đến nó trong var_function() . Hãy sửa đổi chương trình nhỏ ở trên để làm điều đó:

glb_var = "global"  def var_function():     lcl_var = "local"     print(lcl_var)     print(glb_var) #Print glb_var within function  var_function() print(glb_var) 
Output
local global global

Bây giờ ta có biến toàn cục glb_var được in ra hai lần, bởi vì nó được in bởi cả hàm và bên ngoài hàm.

Điều gì sẽ xảy ra nếu ta cố gắng gọi biến local bên ngoài hàm?

glb_var = "global"  def var_function():     lcl_var = "local"     print(lcl_var)  print(lcl_var) 
Output
NameError: name 'lcl_var' is not defined

Ta không thể sử dụng một biến local bên ngoài hàm mà nó được gán. Nếu ta cố gắng làm như vậy, đổi lại ta sẽ nhận được NameError .

Hãy xem một ví dụ khác trong đó ta sử dụng cùng một tên biến cho biến toàn cục và biến local :

num1 = 5 #Global variable  def my_function():     num1 = 10 #Use the same variable name num1     num2 = 7 #Assign local variable      print(num1) #Print local variable num1     print(num2) #Print local variable num2  #Call my_function() my_function()  #Print global variable num1 print(num1) 
Output
10 7 5

Vì biến local của num1 được gán local trong một hàm, nên khi ta gọi hàm đó, ta thấy num1 bằng giá trị local của 10 . Khi ta in ra giá trị toàn cục của num1 sau khi gọi my_function() , ta thấy rằng biến toàn cục num1 vẫn bằng giá trị của 5 .

Có thể gán các biến toàn cục trong một hàm bằng cách sử dụng câu lệnh global của Python:

def new_shark():     #Assign variable as global     global shark     shark = "Sammy"  #Call new_shark() function new_shark()  #Print global variable shark print(shark) 

Mặc dù biến shark đã được gán local trong hàm new_shark() , nó có thể truy cập được bên ngoài hàm vì câu lệnh global được sử dụng trước khi gán biến trong hàm. Do câu lệnh global đó, khi ta gọi print(shark) bên ngoài hàm, ta không nhận được lỗi. Mặc dù bạn có thể gán một biến toàn cục trong một hàm, nhưng có thể bạn sẽ không cần phải làm điều này thường xuyên và sẽ mắc lỗi ở phần mã có thể đọc được.

Một điều nữa cần lưu ý là nếu bạn tham chiếu một biến trong một hàm mà không gán giá trị cho nó, thì biến đó hoàn toàn là toàn cục. Để có một biến local , bạn phải gán một giá trị cho nó trong phần thân của hàm.

Khi làm việc với các biến, điều quan trọng là phải quyết định xem nên sử dụng biến toàn cục hay local thích hợp hơn. Thông thường, tốt nhất là giữ các biến local , nhưng khi bạn đang sử dụng cùng một biến trong một số hàm, bạn có thể cần khởi tạo một biến toàn cục. Nếu bạn đang làm việc với biến chỉ trong một hàm hoặc một lớp , có thể bạn cần sử dụng một biến local để thay thế.

Kết luận

Hướng dẫn này đã trình bày một số trường hợp sử dụng phổ biến của các biến trong Python 3. Các biến là một khối xây dựng quan trọng của lập trình, đóng role là biểu tượng đại diện cho giá trị của kiểu dữ liệu bạn đang sử dụng trong một chương trình.


Tags:

Các tin liên quan

Cách lập chỉ mục và cắt chuỗi trong Python 3
2016-09-28
Cách định dạng văn bản trong Python 3
2016-09-15
Giới thiệu về cách làm việc với chuỗi trong Python 3
2016-09-15
Hiểu các kiểu dữ liệu trong Python 3
2016-09-14
Python 2 và Python 3: Cân nhắc thực tế
2016-08-17
Cách triển khai các ứng dụng web Python với Khung Micro Chai trên Ubuntu 14.04
2015-10-19
Cách triển khai các ứng dụng web Python với Framework Micro Chai trên CentOS 7
2015-10-19
Cách triển khai ứng dụng Python Web2py với uWSGI và Nginx trên Ubuntu 14.04
2015-03-17
Cách triển khai các ứng dụng Python Web2py với uWSGI và Nginx trên CentOS 7
2015-03-17
Cách xác thực một ứng dụng Python với Twitter bằng Tweepy trên Ubuntu 14.04
2015-02-04