Biến Trong Python

Techacademy sẽ giới thiệu với các bạn về BIẾN TRONG PYTHON. Một phần tuy cơ bản nhưng rất quan trọng trong lập trình và nó sẽ theo bạn mãi cho tới khi bạn còn code.

I. Trong Python Biến Là Gì

Có hai trường phái định nghĩa biến trong python như sau:

Trường phái đầu tiên coi biến trong python giống như 1 cái hộp để lưu trữ dữ liệu. Các dữ liệu này có thể là số hoặc chuỗi mà bạn có thể ưu trữ vào biến và dùng nhiều lần. Kết quả của những phép xử lý như tính toán giá trị số, chỉnh sửa chuỗi ký tự sẽ tạm thời được giữ vào biến và dùng để sử dụng cho chương trình sau này.

Trường phái thứ hai coi biến trong python giống như thẻ ghi địa chỉ của dữ liệu. Các dữ liệu được lưu giữ tại các vị trí riêng biệt trong bộ nhớ với địa chỉ khác nhau, và biến trong python là thẻ dùng để ghi địa chỉ của dữ liệu đó trong bộ nhớ. Khi dùng dữ liệu, chúng ta sẽ truy cập vào địa chỉ được ghi trên biến của dữ liệu đó.

Bạn cũng không cần quá chú ý trường phái nào đúng, chỉ cần ghi nhớ khái niệm biến trong python bằng 1 trong hai cách trên là được.

Trong Python Biến Là Gì
Trong Python Biến Là Gì

II. Các Kiểu Biến Trong Python

Dữ liệu mà được lưu trữ trong bộ nhớ có thể có nhiều kiểu khác nhau. Ví dụ, lương của công nhân đươc lưu trữ dưới dạng một giá trị số còn địa chỉ của họ được lưu trữ dưới dạng những ký tự chữ-số. Python có đa dạng kiểu dữ liệu chuẩn được dùng để xác định các hành động có thể xảy ra trên chúng và phương thức lưu trữ cho mỗi kiểu.

Python có 5 kiểu dữ liệu chuẩn là:

  1. Kiểu Number
  2. Kiểu String
  3. Kiểu List
  4. Kiểu Tuple
  5. Kiểu Dictionary

Ngoài kiểu Number và kiểu String mà có thể bạn đã được làm quen với các ngôn ngữ lập trình khác thì ở trong Python còn xuất hiện thêm ba kiểu dữ liệu đó là List, Tuple và Dictionary.

 Các Kiểu Biến Trong Python
Các Kiểu Biến Trong Python

III. Kiểm Tra Kiểu Dữ Liệu Của Biến Trong Python

Trong Python, chúng ta có thể sử dụng nhiều cách khác nhau để kiểm tra dữ liệu input là chuỗi hay số.

Cách 1: Chuyển đổi thành int hoặc float để kiểm tra input là số hay chuỗi

Với cách này thì ta sử dụng hai hàm int() và float() để ép kiểu dữ liệu, dựa vào kết quả trả về ta sẽ biết chính xác người sử dụng nhập vào 1 chuỗi hay 1 số.

Ta phải đặt nó trong lệnh try .. except, bởi hai hàm ép kiểu trên sẽ không thể ép một chuỗi thành một số trong trường hợp giá trị của chuỗi không phải là số. Ví dụ bạn chuyển chuỗi “freetuts.net” thành số là hoàn toàn sai.

Quá trình kiểm tra như sau: Nếu ép kiểu thành công thì là số, ngược lại thì một Exception sẽ được bung ra nên nó là một chuỗi.

print ("Chương trình đăng tại freetuts.net")
user_input = input("Nhập tuổi của bạn ")
 
print("\n")
try:
    val = int(user_input)
    print("Dữ liệu nhập vào là int = ", val)
except ValueError:
    try:
        val = float(user_input)
        print("Dữ liệu nhâp vào là float = ", val)
    except ValueError:
        print("Dữ liệu nhập vào không phải là number")

Cách 2: Sử dụng hàm isdigit để kiểm tra là number hay string

Hàm này công dụng khá đơn giản như sau:

print ("Chương trình đăng tại freetuts.net")
num = input("Nhập số của bạn ")
 
print("\n")
if num.isdigit():
    print("Dữ liệu nhập vào là số ")
else:
    print("Dữ liệu nhập vào là chuỗi ")

Tuy nhiên hàm này chủ hoạt động với số nguyên dương. Nếu bạn nhập vào là một số thực hoặc một số âm thì nó sẽ trả về là chuỗi. Vì vậy, giải pháp tốt nhất vẫn là chọn phương án 1 nhé cả nhà.

Kiểm Tra Kiểu Dữ Liệu Của Biến Trong Python
Kiểm Tra Kiểu Dữ Liệu Của Biến Trong Python

IV. Ép Kiểu Dữ Liệu Của Biến Trong Python

Đây là thao tác tự động chuyển đổi một loại dữ liệu sang loại dữ liệu khác của Python, quá trình này không cần bất kỳ sự tham gia của lập trình viên.

Chúng ta hãy xem ví dụ dưới đây, trong đó Python chuyển đổi kiểu dữ liệu thấp hơn (số nguyên) sang kiểu dữ liệu cao hơn (float) để tránh mất dữ liệu.

num_int = 123
num_flo = 1.23
 
num_new = num_int + num_flo
 
print("Kiểu dữ liệu của num_int:",type(num_int))
print("Kiểu dữ liệu của num_flo:",type(num_flo))
 
print("Giá trị của num_new:",num_new)
print("Kiểu dữ liệu của num_new:",type(num_new))

Kết quả của chương trình này như sau:

Kiểu dữ liệu của num_int: <class 'int'>
Kiểu dữ liệu của num_flo: <class 'float'>
Giá trị của num_new: 124.23
Kiểu dữ liệu của num_new: <class 'float'>
Ép Kiểu Dữ Liệu Của Biến Trong Python
Ép Kiểu Dữ Liệu Của Biến Trong Python

Trong chương trình trên thì:

  • Mình đã định nghĩa hai biến num_int và num_flo, sau đó tạo một biến num_new để lưu trữ tổng của hai biến đó.
  • Tiếp theo sẽ dùng hàm type để kiểm tra kiểu dữ liệu của cả ba biến, thật bất ngờ vì num_new đã mang kiểu float vì đây là kiểu số lớn hơn kiểu int. Như vậy biến num_new đã được chuyển đổi ngầm.

Bây giờ, hãy thử thêm một chuỗi và một số nguyên và xem Python xử lý thế nào.

Ví dụ: Bổ sung kiểu dữ liệu chuỗi (cao hơn) và kiểu dữ liệu số nguyên (thấp hơn)

num_int = 123
num_str = "456"
 
print("Kiểu dữ liệu của num_int:",type(num_int))
print("Kiểu dữ liệu của num_str:",type(num_str))
 
# Dòng này sẽ lỗi vì string và number không chuyển ngầm được
print(num_int+num_str)

Khi chạy chương trình trên, kết quả sẽ là:

Traceback (most recent call last):
  File "C:\Users\gf63\IdeaProjects\LearnPython\helloworld.py", line 7, in <module>
    print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
Kiểu dữ liệu của num_int: <class 'int'>
Kiểu dữ liệu của num_str: <class 'str'>
Ép Kiểu Dữ Liệu Của Biến Trong Python
Ép Kiểu Dữ Liệu Của Biến Trong Python

Như vậy mặc định Python không thể tự động chuyển đổi ngầm giữa string và number.

V. Biến Global Trong Python Là Gì

Trong ngôn ngữ lập trình Python, một biến được khai báo bên ngoài hàm hoặc trong phạm vi toàn cục được gọi là biến toàn cục hay biến global. Biến toàn cục có thể được truy cập từ bên trong hoặc bên ngoài hàm

Hãy xem ví dụ về cách tạo biến toàn cục trong Python.

x = "Biến toàn cục" #khai báo biến x
#Gọi x từ trong hàm vidu()
def vidu():
    print("x trong hàm vidu() :", x)

vidu()
#Gọi x ngoài hàm vidu()
print("x ngoài hàm vidu():", x)

Trong ví dụ trên, ta khai báo biến x là biến toàn cục, và định nghĩa hàm vidu() để in biến x. Cuối cùng ta gọi hàm vidu() để in giá trị của biến x. Chạy code trên ta sẽ được kết quả là:

x trong hàm vidu(): Biến toàn cục
x ngoài hàm vidu(): Biến toàn cục

Chuyện gì sẽ xảy ra nếu bạn thay đổi giá trị của x trong hàm?

x = 2 
def vidu():
   x=x*2    
   print(x)

vidu()

Nếu chạy code này bạn sẽ nhận được thông báo lỗi:

UnboundLocalError: local variable 'x' referenced before assignment

Lỗi này xuất hiện là do Python xử lý x như một biến cục bộ và x không được định nghĩa trong vidu().

Để thay đổi biến toàn cục trong một hàm bạn sẽ phải sử dụng từ khóa global. Chúng tôi sẽ nói kỹ hơn trong bài về từ khóa global.

Biến Global Trong Python Là Gì
Biến Global Trong Python Là Gì

VI. Biến Cục Bộ Trong Python Là Gì

Biến được khai báo bên trong một hàm hoặc trong phạm vi cục bộ được gọi là biến cục bộ hay biến local.

def vidu():
 y = "Biến cục bộ"
vidu()
print(y)

Khi chạy code trên bạn sẽ nhận được thông báo lỗi:

NameError: name 'y' is not defined

Lỗi này xuất hiện là do chúng ta đã cố truy cập vào biến cục bộ y trong phạm vi toàn cục, nhưng y chỉ làm việc trong hàm vidu() hoặc phạm vi cục bộ.

Thông thường, để tạo một biến cục bộ, chúng ta sẽ khai báo nó trong một hàm như ví dụ dưới đây:

def vidu():
 y = "Biến cục bộ"
 print(y)
vidu()

Chạy code trên ta sẽ được kết quả

Biến cục bộ
Biến Cục Bộ Trong Python Là Gì
Biến Cục Bộ Trong Python Là Gì

VII. Biến Static Trong Python Là Gì

Hàm staticmethod() được coi là un-Pythonic (ngôn ngữ không chính thống của Python). Trong các phiên bản mới hơn của Python, bạn nên sử dụng decorator @staticmethod để thay thế.

Cú pháp của @staticmethod là:

@staticmethod
def func(args, ...)

Cú pháp của hàm staticmethod() trong Python

Hàm staticmethod() được xác định bằng cú pháp sau:

staticmethod(function)

Tham số của hàm staticmethod()

Hàm staticmethod() có một tham số duy nhất:

  • Hàm: Hàm cần được chuyển thành một static method

Giá trị trả về của hàm staticmethod()

Hàm staticmethod() trả về một static method cho một hàm tham số mà bạn đưa vào.

Biến Static Trong Python Là Gì
Biến Static Trong Python Là Gì

VIII. Biến Hằng Trong Python Là Gì

Biến là một đối tượng trong chương trình. Mỗi biến sẽ có một vị trí riêng trong bộ nhớ để lưu trữ dữ liệu (giá trị) được gán. Biến trong Python được đặt theo nguyên tắc định danh

Câu lệnh gán giá trị cho biến là: <tên biến> = <giá trị gán cho biến>

Biến trong Python không cần khai báo trước, không gần khai báo kiểu dữ liệu. Khi đặt tên và gán giá trị Python tự động nhận dạng và tùy biến theo kiểu dữ liệu được gán.

Ví dụ 1:

number = 10

number = 1.1

print(number)

input()

Ở ví dụ trên, biến được đặt tên là number, được gán giá trị là 10 sau đó lại được gán giá trị là 1.1. Như vậy sau sau 2 câu lệnh trên giá trị của biến number lưu sẽ là 1.1. Kết quả khi chạy chương trình là: 1.1.

Hằng là 1 loại biến đặc biệt, giá trị của hằng là không đổi trong suốt chương trình sau lần gán giá trị đầu tiên. Tên hằng được viết hoàn toàn bằng chữ hoa và dấu gạch dưới (nếu cần).

Ví dụ:

PI = 3.14 # đây là hằng
bankinh = 20 # đây là biến

Trong thực tế, việc đặt tên Hằng bằng những ký tự in hoa là để phân biệt với biến chứ nó không có tác dụng ngăn cản việc gán giá trị mới cho Hằng.

Đối với các chương trình lớn, Hằng số thường được khai báo riêng trong một mô-đun. Mô-đun là một tệp riêng chứa các biến, hàm, v.v. được nhập (import) vào tệp chính.

Ví dụ:

Tạo 1 file mới với tên “hang.py” trong cùng thư mục với file “thuchanh.py”.

– Nội dung file hang.py:

PI = 3.14
GRAVITY = 9.8





– Nội dung file thuchanh.py:

import hang

print(hang.PI)

print(hang.GRAVITY)

input()

Chạy file thuchanh.py sẽ cho kết quả là:

3.14 9.8
Biến Hằng Trong Python Là Gì
Biến Hằng Trong Python Là Gì

IX. Gán Biến Trong Python Thế Nào

Sau khi gán một giá trị cho biến trong Python, chúng ta có thể sử dụng biến để đại diện cho giá trị đó trong chương trình. Việc gán biến trong python có thể thực hiện cùng lúc hoặc sau khi bạn đã khai báo biến trong python. Bạn có thể gán một giá trị khác với giá trị khởi tạo ban đầu vào biến, hoặc gán giá trị một biến cho một biến khác. Hãy cùng học cách gán biến trong python sau bài học này.

Gán biến trong python bằng một giá trị khác giá trị khởi tạo

Khi khởi tạo và khai báo biến trong python, chúng ta cần chỉ định giá trị ban đầu để gán cho biến đó.

Tuy nhiên sau khi đã gán một giá trị cụ thể cho biến thì chúng ta vẫn có thể gán một giá trị khác cho biến đó như ví dụ sau đây:

price = 100
price = 200

print(price)
#>> 200

Trong bài biến trong python là gì bạn đã biết biến trong python không phải là địa chỉ của vị trí chứa giá trị trong bộ nhớ, mà chỉ là thẻ ghi địa chỉ của dữ liệu đó mà thôi. Do đó khi gán một giá trị khác cho một biến đã xác định, chúng ta chỉ đơn giản là thay đổi dòng địa chỉ ghi trên biến mà thôi.

Do đó, bản chất biến không thay đổi, chỉ là địa chỉ của giá trị trong bộ nhớ mà nó được gán đã thay đổi mà thôi.

Lại nữa, các giá trị dùng để gán vào biến tuy có thể thuộc các dạng dữ liệu khác nhau, tuy nhiên biến trong python lại được tự động nhận diện kiểu dữ liệu khi được gán giá trị.

Do đó, bạn có thể gán một biến có kiểu dữ liệu khác với kiểu dữ liệu ban đầu vào cùng một biến như ví dụ sau:

name = "Kiyoshi"
name = 30

print(name)

#>> 30

Trong ví dụ trên, mặc dù biến name được khai báo với giá trị dưới dạng chuỗi, nhưng sau đó, nó vẫn có thể được gán bởi giá trị dưới dạng số. Đó là nhờ trong python, các biến sẽ được tự động nhận diện kiểu giá trị được gán vào nó.

Gán giá trị một biến cho một biến khác

Chúng ta có thể gán giá trị một biến đã được khai báo cho một biến khác, như ví dụ sau đây:

num1 = 100
num2 = num1

print("num1",num1)
#>> num1 100
print("num2",num2)
#>> num2 100

Trong trường hợp này, cả hai biến num1 và num2 đều cùng ghi và trỏ về một địa chỉ, đó là vị trí của giá trị 100 trong bộ nhớ.

Tuy nhiên cần lưu ý, nếu lúc này chúng ta gán một giá trị mới vào biến num1, thì giá trị của biến num2 vẫn sẽ không thay đổi.

num1 = 100
num2 = num1

num1 = 200
print("num1",num1)
#>> 200
print("num2",num2)
#>> 100

Nếu bạn gán một giá trị khác cho num1 thay vì lưu trữ giá trị mới ở vị trí mà num1 đang tham chiếu, num1 sẽ ghi địa chỉ của giá trị mới đó trong bộ nhớ.

Tại thời điểm này, biến num2 vẫn đang tham chiếu đến vị trí ban đầu, do đó, biến num1 tham chiếu đến vị trí có giá trị 200 còn biến num2 thì tham chiếu đến vị trí có giá trị 100.

Do đó khi in ra màn hình, giá trị của hai biến này sẽ khác nhau:

num1 200
num2 100
Gán Biến Trong Python Thế Nào
Gán Biến Trong Python Thế Nào

X. Nhập Biến Trong Python Thế Nào

Hướng dẫn cách Nhập biến trong python. Bạn sẽ học được cách nhập giá trị của biến từ bàn phím bằng hàm inpput () trong python sau bài học này.

Để nhập biến trong python, chúng ta cần sử dụng một hàm dựng sẵn là hàm inpput () trong python.

Hàm input() sẽ giúp chúng ta nhập liệu từ bàn phím và gán giá trị đó vào biến với cú pháp sau đây:

tên biến= input()

Trong đó:

  • input dùng để gọi hàm. Khi hàm được gọi, một dòng nhập dữ liệu sẽ hiện ra để người dùng có thể nhập liệu từ bàn phím.
  • tên biến được đặt theo Quy tắc đặt tên biến trong Python mà bạn đã học trong bài Biến trong python là gì

Sau khi người dùng có thể nhập liệu từ bàn phím, chuỗi nhập vào sẽ được gán vào tên biến dưới dạng kiểu dữ liệu string.

Bạn cũng có thể dùng cú pháp sau đây để màn hình nhập liệu trở nên đẹp hơn:

tên biến= input(">>")

Ví dụ, chúng ta có chương trình nhập tên tuổi và in ra màn hình như sau:

print("Hay nhap ten cua ban : ")
name=input(">>")

print("Hay nhap tuoi cua ban : ")
old=input(">>")

user = "\n Ten ban : " + name + "\n Tuoi ban : " +old
print(user)

Hãy lưu lại chương trình trên với tên user.py và chạy trên Anaconda Prompt. Kết quả sẽ như sau:

Nhập Biến Trong Python Thế Nào
Nhập Biến Trong Python Thế Nào

XI. In Biến Ra Màn Hình Thế Nào Trong Python

Hàm print() trong Python có tác dụng hiển thị dữ diệu ra màn hình khi chương trình thực thi.

Cú pháp đầy đủ của print():

print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)

Tham số của hàm print():

  • objects: đối tượng được in, có thể có nhiều đối tượng. Sẽ được chuyển đổi thành chuỗi trước khi hiển thị ra màn hình.
  • sep: cách tách riêng các đối tượng, giá trị mặc định là một khoảng trắng.
  • end: giá trị cuối cùng được in ra màn hình.
  • file: mặc định hàm print sẽ ghi nội dung vào file sys.stdout.
  • flush: giá trị mặc định giá trị là False.

Lưu ý: sep, end, file và flush đều là các tham số keyword. Nếu bạn muốn sử dụng tham số sep, bạn phải dùng như này:

print(*objects, sep = 'separator')

không được sử dụng:

print(*objects, 'separator')

Ví dụ 1: Cách print() hoạt động trong Python

print("Học Python rất thú vị.")

a = 5
# 2 object
print("a =", a)

b = a
# 3 object
print('a =', a, '= b')

Chạy chương trình, kết quả trả về là:

Học Python rất thú vị.
a = 5
a = 5 = b

Trong 3 câu lệnh ở ví dụ trên, chỉ có duy nhất tham số object được sử dụng trong các câu lệnh.

Ví dụ 2: print () với các tham số separator và end

a = 5
print("a =", a, sep='00000', end='\n\n\n')
print("a =", a, sep='0', end='')

Chạy chương trình, kết quả trả về là:

a =000005



a =05
In Biến Ra Màn Hình Thế Nào Trong Python
In Biến Ra Màn Hình Thế Nào Trong Python

XII. Quy Tắc Đặt Tên Biến Trong Python

Để đặt tên cho biến trong python, chúng ta cần tuân theo Quy tắc đặt tên biến trong Python như dưới đây:

1/ Các ký tự có thể được sử dụng để đặt tên cho biến trong python là a đến z, A đến Z, 0 đến 9, gạch dưới _, chữ hán tự , tiếng việt có dấu v.v.

2/ Không thể sử dụng các giá trị số (0 đến 9) cho ký tự đầu tiên.

3/ Có thể sử dụng gạch dưới cho ký tự đầu tiên. Tuy nhiên vì gạch dưới thường được sử dụng trong các trường hợp đặc biệt, nên tốt hơn là không sử dụng nó.

4/ Phân biệt chữ hoa chữ thường khi đặt tên cho biến trong python

5/ Không thể sử dụng các từ khóa của Python.

Chúng ta sẽ cùng tìm hiểu chi tiết về các Quy tắc đặt tên biến trong Python ở trên như sau.

Dùng ký tự alphabet, chữ số, gạch dưới để đặt tên biến trong Python

Từ Python 3 trở đi, chúng ta có thể dùng chữ hán tự và tiếng Việt có dấu để Đặt tên cho biến trong python, tuy nhiên Kiyoshi không khuyến khích bạn dùng cách này.

tên = "Kiyoshi"
tuổi =30

名前 = "Kiyoshi"
年齢 = 30

Không dùng các giá trị số cho ký tự đầu tiên của biến

Chúng ta không thể sử dụng các giá trị số cho ký tự đầu tiên của biến trong python, bởi vì lỗi SyntaxError sẽ xuất hiện.

7up = 100

Lỗi SyntaxError:

File "Main.py", line 1
    7up = 100
     ^
SyntaxError: invalid syntax

Phân biệt chữ hoa chữ thường khi đặt tên biến trong Python

Phân biệt chữ hoa chữ thường khi Đặt tên cho biến trong python. Ví dụ hai biến trong ví dụ dưới đây là khác nhau và cho ra kết quả cũng khác nhau:

str = "Tôi yêu"
STR = "Việt Nam"
print(str, STR)

>> Tôi yêu Việt Nam

Không dùng các từ khóa của Python để đặt tên biến trong python

Chúng ta Không thể sử dụng các từ khóa của Python để đặt tên biến trong python. Các từ khóa (keyword) là các từ chỉ dành riêng cho Python và bạn không thể dùng chúng để đặt tên biến được.

Bạn có thể kiểm tra Danh sách các từ khóa trong python bằng câu lệnh dưới đây.

import sys
import keyword
 
print ("Python version: ", sys.version_info)
print ("Python keywords: ", keyword.kwlist)

Và đây là bảng các từ khóa trong python.

False    await    else    import    pass
None    break    except    in    raise
True    class    finally    is    return
and    continue    for    lambda    try
as    def    from    nonlocal while
assert    del    global    not    with
async    elif    if    or    yield

Nếu bạn dùng các từ khóa trong python ở bảng trên để đặt tên biến trong Python thì lỗi SyntaxError sẽ trả về như ví dụ sau:

from = "Việt Nam"

Lỗi SyntaxError:

 File "Main.py", line 1
    from = "Việt Nam"
         ^
SyntaxError: invalid syntax
Quy Tắc Đặt Tên Biến Trong Python
Quy Tắc Đặt Tên Biến Trong Python

 

Bài viết liên quan

guest
0 Thảo Luận & Hỏi Đáp
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x
Hotline: 0984.876.750
Chat Facebook
Gọi điện ngay