Danh sách Keyword trong Python

Bài viết này sẽ cung cấp thông tin ngắn gọn và các ví dụ cụ thể về tất cả các từ khóa (Keyword) được sử dụng trong Python.

Từ khóa là những từ dành riêng trong Python. Bạn không thể sử dụng từ khóa làm tên biến, tên hàm hoặc bất kỳ định danh nào khác.

Danh sách từ khóa trong Lập trình Python

Danh sách các từ khóa trên có thể thay đổi trong các phiên bản Python khác nhau. Bạn luôn có thể xem danh sách các từ khóa trong phiên bản Python hiện tại của mình, bằng cách nhập nội dung sau vào lời nhắc:

>>> import keyword
>>> print(keyword.kwlist)

Mô tả các keyword trong Python kèm ví dụ

True, False

TrueFalse là giá trị xác thực trong Python. Chúng là kết quả của các phép toán so sánh hoặc phép toán logic (Boolean) trong Python. Ví dụ:

>>> 1 == 1
True
>>> 5 > 3
True
>>> True or False
True
>>> 10 <= 1
False
>>> 3 > 7
False
>>> True and False
False

Trong Python thì giá trị của True và False bạn có thể hiểu như sau:

>>> True == 1
True
>>> False == 0
True
>>> True + True
2

None

None là một hằng số đặc biệt trong Python, nó đại diện cho việc biến đó không có giá trị hoặc giá trị Null.

None là một đối tượng với kiểu dữ liệu của riêng nó (NoneType). Nó không phải 0, False hay một chuỗi trống, chỉ đơn giản None là None và nó chứa giá trị như nhau nếu gán cho các đối tượng khác nhau. Ví dụ:

>>> None == 0
False
>>> None == []
False
>>> None == False
False
>>> x = None
>>> y = None
>>> x == y
True

None cũng được trả về bởi các hàm mà trong đó dòng chương trình không gặp phải câu lệnh trả về.

Ví dụ : Chương trình dưới đây là một hàm không trả về giá trị, mặc dù nó có thực hiện một số thao tác bên trong. Vì thế, khi ta dùng lệnh print(x) thì sẽ nhận được kết quả trả về tự động (ngầm định) là None:

def a_void_function():
    a = 1
    b = 2
    c = a + b

x = a_void_function()
print(x)

Ví dụ khác : Hàm dưới đây có một câu lệnh nhưng nó không đạt được mọi trường hợp. Hàm sẽ chỉ trả về True khi đầu vào là chẵn. Trong trường hợp giá trị đầu vào là lẻ, hàm sẽ trả về None:

def improper_return_function(a):
    if (a % 2) == 0:
        return True

x = improper_return_function(3)
print(x)

and, or, not

and, or, not là các toán tử Logic trong Python.

Toán tử and sẽ chỉ trả về giá trị True nếu cả 2 toán từ đều True. Bảng dưới đây sẽ mô tả sự kết hợp của các toán tử and:

ABA and B
TRUETRUETRUE
TRUEFALSEFALSE
FALSETRUEFALSE
FALSEFALSEFALSE

Toán tử or sẽ trả về kết quả True nếu bất kỳ toán tử nào là True. Bảng dưới đây sẽ mô tả sự kết hợp của các toán tử or:

ABA or B
TRUETRUETRUE
TRUEFALSETRUE
FALSETRUETRUE
FALSEFALSEFALSE

Toán tử not được sử dụng để đảo ngược giá trị ban đầu. Bảng dưới đây mô tả sự kết hợp của toán tử not:

Anot A
TRUEFALSE
FALSETRUE

Một vài ví dụ dưới đây mô tả cách hoạt động của các toán tử trên:

>>> True and False
False
>>> True or False
True
>>> not False
True

as

as được sử dụng để tạo bí danh trong khi đang nhập một module. Nó có nghĩa là người dùng có thể đặt 1 tên khác cho một module sẵn có, trong khi đang nhập nó.

Ví dụ: Python có một module tiêu chuẩn được gọi là math. Giả sử chúng ta muốn tính Cos pi thông qua một bí danh khác là myAlias. Ta có thể làm điều đó như sau:

>>> import math as myAlias
>>>myAlias.cos(myAlias.pi)
-1.0

Ở đây, chúng ta nhập module math bằng cách gán tên myAlias cho nó. Sau đó, ta có thể sử dụng module math này với tên mới để tính toán cos(pi) và nhận được câu trả lời -1.0.

assert

assert được sử dụng cho mục đích gỡ lỗi.

Trong khi lập trình, đôi khi bạn muốn biết trạng thái bên trong hoặc kiểm tra xem các giả định của mình có đúng không. assert sẽ giúp bạn thực hiện việc này và dễ dàng tìm ra lỗi hơn.

Phía sau assert thường được đính kèm bởi một điều kiện. Nếu điều kiện là đúng, sẽ không có gì xảy ra; nếu điều kiện là sai thì thông báo AssertionError.

>>> a = 4
>>> assert a < 5
>>> assert a > 5
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
AssertionError

Để hiểu rõ hơn, bạn có thể cung cấp thông báo được hiển thị sau AssertionError.

>>> a = 4
>>> assert a > 5, "Gia tri cua a qua nho"
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
AssertionError: Gia tri cua a qua nho

Dựa vào ví dụ trên, bạn có thể thấy rằng:

assert dieu_kien, thong_bao

sẽ tương ứng với:

if not dieu_kien:
    raise AssertionError(thong_bao)

async, await

Từ khóa asyncawait được cung cấp bởi thư viện asyncio trong Python. Chúng được sử dụng để viết mã thực thi không đồng thời trong Python. Ví dụ:

import asyncio

async def main():
    print('QuanTriMang')
    await asyncio.sleep(1)
    print('xin chao')

Để chạy chương trình, chúng ta sử dụng:

asyncio.run(main())

Trong chương trình chạy trên, từ khóa async chỉ định rằng hàm sẽ được thực thi không đồng bộ. Đầu tiên, từ 'QuanTriMang' sẽ được viết ra, từ khóa await sẽ làm cho chương trình chờ trong 1 giây, sau đó mới viết nốt 'xin chao'.

break, continue

breakcontinue được sử dụng bên trong các vòng lặp forwhile để thay đổi hoạt động bình thường của vòng lặp.

break sẽ kết thúc vòng lặp nhỏ nhất mà nó nằm trong đó, và điều khiển chuyển đến câu lệnh ngay bên dưới vòng lặp. continue là để kết thúc việc lặp lại hiện tại của vòng lặp, nhưng không phải toàn bộ vòng lặp.

Xem ví dụ sau để hiểu hơn về từ khóa này break:

for i in range(1,11):
    if i == 5:
        break
    print(i)

Output:

1
2
3
4

Trong ví dụ trên, vòng lặp for dự định in các số từ 1 đến 10. Nhưng điều kiện if được đáp ứng khi i = 5 và phá vỡ vòng lặp in đó. Do đó, chỉ có số từ phạm vi từ 1 đến 4 được in ra.

Còn dưới đây là ví dụ về continue:

for i in range(1,11):
    if i == 5:
        continue
    print(i)

Output

1
2
3
4
6
7
8
9
10

Vẫn với ví dụ trên, chúng ta chỉ thay đổi break bằng continue và kết quả hoàn toàn khác. Khi gặp điều kiện i = 5, thay vì dừng hoàn toàn vòng lặp, lệnh continue chỉ bỏ qua lần lặp đó và thực hiện tiếp việc lặp cho các số > 5. Do vậy, ngoại trừ 5, các số trong chuỗi từ 1 đến 10 đều được in ra.

👉 Tìm hiểu thêm về Lệnh break và continue.

class

class được sử dụng để định nghĩa một lớp mới (do người dùng tự định nghĩa) trong Python.

Lớp (class) là một tập hợp các thuộc tính và phương thức có liên quan, nhằm cố gắng thể hiện một tình huống trong thế giới thực. Ý tưởng đặt dữ liệu và chức năng cùng nhau trong một lớp là trọng tâm của khái niệm lập trình hướng đối tượng (OOP).

Các lớp có thể được định nghĩa ở bất cứ đâu trong 1 chương trình, nhưng nơi tốt nhất để xác định một lớp duy nhất là trong module. Sau đây là ví dụ:

class ExampleClass:
    def function1(parameters):
        …
    def function2(parameters):
        …

👉  Xem thêm bài sau để Tìm hiểu về Object và Class

def

def được sử dụng để xác định một hàm (function) do người dùng định nghĩa.

Hàm là một khối các câu lệnh liên quan, cùng thực hiện một số nhiệm vụ cụ thể. Nó giúp chúng ta tổ chức mã thành các phần có thể quản lý và cũng để thực hiện một số tác vụ lặp đi lặp lại.

Cách sử dụng def như sau:

def function_name(parameters):
    …

👉 Tìm hiểu thêm về Hàm trong Python.

del

del được dùng để xóa tham chiếu đến một đối tượng (object). Mọi thứ trong Python đều là đối tượng và bạn có thể xóa nó bằng cách sử dụng del.

>>> a = b = 5
>>> del a
>>> a
Traceback (most recent call last):
  File "<string>", line 301, in runcode
  File "<interactive input>", line 1, in <module>
NameError: name 'a' is not defined
>>> b
5

Trong ví dụ trên, bạn thấy rằng tham chiếu tới biến a đã bị xóa, vì vậy nó không còn được định nghĩa nữa và sẽ báo lỗi khi bạn gọi nó ra. Biến b thì vẫn tồn tại giá trị như bạn đã gán ban đầu.

del cũng được dùng để xóa các mục khỏi danh sách hoặc từ điển:

>>> a = ['x','y','z']
>>> del a[1]
>>> a
['x', 'z']

if, else, elif

if, else, elif được sử dụng để phân nhánh có điều kiện và đưa ra tình huống xử lý.

Khi bạn muốn kiểm tra một số điều kiện và chỉ thực thi khối lệnh nếu điều kiện đúng, thì chúng ta sử dụng ifelif. elif là viết tắt của else if. else là phần khối lệnh thực thi khi điều kiện sai. Xem ví dụ sau để hiểu rõ hơn:

def if_example(a):
    if a == 1:
        print('Mot')
    elif a == 2:
        print('Hai')
    else:
        print('Quan Tri Mang')

if_example(2)
if_example(4)
if_example(1)

Output:

Hai
Quan Tri Mang
Mot

Trong ví dụ trên bạn thấy, hàm sẽ kiểm tra số đầu vào và in kết quả đọc của số đó nếu nó là 1 hoặc 2. Bất cứ giá trị đầu vào nào khác nó sẽ hiển thị phần khối lệnh đi sau else.

👉 Tìm hiểu thêm về Lệnh if, if...else, if...elif...else trong Python.

except, raise, try

except, raise, try được sử dụng với các ngoại lệ trong Python.

Về cơ bản, các ngoại lệ là các lỗi cho thấy đã xảy ra sự cố khi thực hiện chương trình. IOError, ValueError, ZeroDivisionError, ImportError, NameError, TypeError... là một vài ví dụ về ngoại lệ trong Python. Các khối try...except được sử dụng để 'bắt' các ngoại lệ trong Python.

Chúng ta có thể nêu ra ngoại lệ một cách rõ ràng hơn với từ khóa raise. Mời bạn xem ví dụ sau:

def reciprocal(num):
    try:
        r = 1/num
    except:
        print('Da thay ngoai le')
        return
    return r

print(reciprocal(10))
print(reciprocal(0))

Output:

0.1
Da thay ngoai le
None

Trong ví dụ trên, hàm reciprocal() trả về giá trị phân số đảo ngược của số đầu vào.

Khi nhập 10, bạn sẽ nhận được đầu ra bình thường là 0.1. Nhưng khi nhập 0, lỗi ZeroDivisionError sẽ tự động được đưa lên.

Điều này được ghi lại bằng cách sử dụng khối try…except và kết quả trả về là None. Chúng ta có thể đưa lỗi ZeroDivisionError một cách rõ ràng hơn bằng cách kiểm tra đầu vào và xử lý nó như sau:

if num == 0:
    raise ZeroDivisionError('Khong the chia cho 0')

finally

finally được sử dụng cùng với try…except để đóng các tài nguyên hoặc các luồng tệp.

Việc sử dụng finally nhằm đảm bảo rằng khối mã bên trong nó được thực thi, ngay cả khi có một ngoại lệ chưa được xử lý. Ví dụ:

try:
    Try-block
except exception1:
    Exception1-block
except exception2:
    Exception2-block
else:
    Else-block
finally:
    Finally-block

Ở đây, nếu có 1 ngoại lệ trong khối Try-block, nó sẽ được xử lý trong khối except hoặc else. Nhưng cho dù quy trình thực thi diễn ra theo thứ tự nào, thì chúng ta có thể yên tâm rằng khối Finally-block vẫn sẽ được thực thi ngay cả khi có lỗi. Điều này giúp ích khác nhiều trong việc dọn dẹp tài nguyên xử lý.

👉 Xem thêm bài: Xử lý ngoại lệ - Exception Handling trong Python

for

for được sử dụng để tạo vòng lặp với số lần lặp biết trước trong Python.

Trong Python, bạn có thể sử dụng for với bất kì loại chuỗi nào như dạng list hay string. Ví dụ dưới đây là sử dụng for để duyệt qua danh sách tên:

names = ['Han','Nam','Ngoc','Trung']
for i in names:
    print('Xin chao '+i)

Kết quả đầu ra:

Xin chao Han
Xin chao Nam
Xin chao Ngoc
Xin chao Trung

👉 Xem thêm về Vòng lặp for trong Python

from, import

Từ khóa import được sử dụng để nhập các module vào không namespace hiện tại. from…import được sử dụng để nhập các thuộc tính hoặc chức năng cụ thể vào namespace. Ví dụ sau sẽ nhập module math:

import math

Sau khi nhập xong, chúng ta có thể sử dụng hàm cos() bên trong nó như là math.cos(). Tuy nhiên nếu chúng ta chỉ muốn nhập hàm cos(), thì có thể thực hiện lệnh sau:

from math import cos

và bây giờ bạn có thể sử dụng hàm đơn giản như cos() chứ ko cần viết đầy đủ math.cos().

👉 Tìm hiểu thêm về Module trong Python.

global

global được sử dụng để khai báo rằng 1 biến bên trong hàm là biến toàn cục (bên ngoài hàm).

Nếu chúng ta cần đọc giá trị của 1 biến toàn cục, thì không cần nhất thiết phải xác định nó là global. Điều này sẽ mặc định được hiểu.

Còn nếu bạn cần sửa đổi giá trị của 1 biến toàn cục bên trong 1 hàm, thì phải khai báo nó là global. Nếu không, sẽ có 1 biến cục bộ trùng tên được tạo ra. Ví dụ sau giúp bạn hiểu rõ hơn nà:

globvar = 10
def read1():
    print(globvar)
def write1():
    global globvar
    globvar = 5
def write2():
    globvar = 15

read1()
write1()
read1()
write2()
read1()

Bạn sẽ thấy kết quả như sau:

10
5
5

Trong ví dụ trên, hàm read1() chỉ là đọc giá trị của globvar và in ra, vì vậy chúng ta không cần khai báo nó là global. Nhưng hàm write1() sẽ sửa đổi giá trị của nó, vì vậy ta cần khai báo nó là biến toàn cục global.

Chúng ta có thể thấy trong kết quả đầu ra là việc sửa đổi đã diễn ra: globvar được đổi từ 10 thành 5. write2() cũng cố gắng sửa đổi giá trị này nhưng vì nó không được khai báo global nên việc sửa đổi này không thành công.

Do đó, 1 biến cục bộ mới được tạo ra và không thể hoạt động bên ngoài hàm write2() này. Và khi chạy thử lại read1() bạn sẽ vẫn chỉ thấy giá trị sau khi đã bị đổi (5) ở hàm write1().

in

in được sử dụng để kiểm tra xem 1 giá trị bất kì có trong chuỗi (list, tuple, string...) hay không. Nó sẽ trả về True nếu chuỗi đó có chứa giá trị, nếu không sẽ trả về False. Ví dụ như sau:

>>> a = [2, 4, 6, 8, 10]
>>> 10 in a
True
>>> 5 in a
False

Công dụng tiếp theo của in là duyệt qua 1 chuỗi trong vòng lặp for:

for i in 'hello':
    print(i)

Kết quả sẽ là:

h
e
l
l
o

is

is được sử dụng trong Python để kiểm tra nhận dạng của đối tượng. Trong khi toán tử == được sử dụng để kiểm tra xem 2 biến có bằng nhau không, thì is được sử dụng để kiểm tra xem 2 biến có tham chiếu đến cùng 1 đối tượng hay không.

Nó trả về True nếu các đối tượng giống hệt nhau và False nếu không.

>>> True is True
True
>>> False is False
True
>>> None is None
True

Ở ví dụ trên, chúng ta thấy rằng chỉ có 1 trường hợp True, FalseNope trong Python, vì vậy chúng giống hệt nhau.

>>> [] == []
True
>>> [] is []
False
>>> {} == {}
True
>>> {} is {}
False

Giải thích ví dụ trên: Một list hoặc dictionary trống thì sẽ bằng với một list/dictionary trống khác. Tuy vậy, chúng không phải là những đối tượng giống hệt nhau, vì chúng nằm ở các vị trí riêng biệt trong bộ nhớ. Điều này là do list và dictionary có thể thay đổi (giá trị có thể được thay đổi).

>>> '' == ''
True
>>> '' is ''
True
>>> () == ()
True
>>> () is ()
True

Với ví dụ trên, không giống như list hay dictionary, string và tuple là bất biến (không thể thay đổi giá trị khi đã xác định). Do đó, 2 string và tuple bằng nhau cũng giống hệt nhau. Chúng cùng ở một ví trí bộ nhớ.

lambda

lambda được sử dụng để tạo 1 hàm vô danh (hàm không có tên). Nó là một hàm nội tuyến không chứa câu lệnh return. Ví dụ:

a = lambda x: x*2
for i in range(1,6):
    print(a(i))

Kết quả trả về:

2
4
6
8
10

Ở ví dụ trên, chúng ta đã sử dụng lambda tạo ra một hàm x2 lần các giá trị trong danh sách từ 1 đến 5.

👉 Tìm hiểu thêm về Hàm vô danh lamda trong Python.

nonlocal

Việc sử dụng từ khóa nonlocal rất giống với global. nonlocal được sử dụng để khai báo rằng 1 biến bên trong 1 hàm lồng nhau (hàm bên trong hàm) không phải là cục bộ của nó, có nghĩa là nó nằm trong hàm bao bên ngoài.

Nếu chúng ta cần sửa đổi giá trị của 1 biến không cục bộ bên trong hàm lồng nhau, thì phải khao báo nó là nonlocal. Nếu không, 1 biến cục bộ cùng tên đó sẽ được tạo ra bên trong hàm lồng nhau. Thật là rắc rối, cần phải xem kỹ ví dụ sau để hiểu thêm:

def outer_function():
    a = 5
    def inner_function():
        nonlocal a
        a = 10
        print("Hàm bên trong: ",a)
    inner_function()
    print("Hàm bên ngoài: ",a)

outer_function()

Kết quả:

Hàm bên trong: 10 Hàm bên ngoài: 10

Ở đây, hàm inner_function() được lồng vào bên trong hàm outer_function(). Biến a nằm ở hàm outer_function() vì vậy, nếu chúng ta muốn sửa đổi nó trong hàm inner_function(), chúng ta phải khao báo nó là nonlocal. Lưu ý rằng a không phải là biến global.

Do vậy, chúng ta thấy trong kết quả là biến đã được sửa đổi thành công bên trong hàm inner_function() lồng nhau. Kết quả của việc không sử dụng từ khóa nonlocal sẽ như sau:

def outer_function():
    a = 5
    def inner_function():
        a = 10
        print("Hàm bên trong: ",a)
    inner_function()
    print("Hàm bên ngoài: ",a)

outer_function()
Hàm bên trong:  10
Hàm bên ngoài:  5

Ở đây, chúng ta không khai báo biến a là nonlocal bên trong hàm lồng nhau. Do đó, một biến cục bộ mới cùng tên đã được tạo ra, nhưng biến này không sửa đổi được vào biến a ban đầu trong phần in ra sau cùng.

pass

pass là một câu lệnh null trong Python. Không có gì xảy ra khi nó được thực thi. Nó được sử dụng như một trình giữ chỗ.

Giả sử chúng ta có một chức năng chưa được triển khai, nhưng sẽ phải triển khai nó trong tương lai. Đơn giản chỉ cần viết:

def ham(args):
    pass

Ở chương trình trên nếu không có dữ liệu gì, hàm sẽ trả về lỗi IndentationError, thay vì điều đó, chúng ta chỉ cần tạo 1 phần thân chờ sẵn với câu lệnh pass.

Chúng ta cũng có thể làm điều tương tự trong 1 class trống:

class vi_du:
    pass

return

Câu lệnh return được sử dụng bên trong 1 hàm để thoát khỏi nó và trả về 1 giá trị. Nếu chúng ta không trả về 1 giá trị cụ thể, thì giá trị None sẽ được tự động trả về. Xem cụ thể hơn ở ví dụ sau:

def func_return():
    a = 10
    return a

def no_return():
    a = 10

print(func_return())
print(no_return())

Kết quả đầu ra:

10
None

while

while được sử dụng khi bạn muốn tạo vòng lặp liên tục thực thi các lệnh bên trong cho tới khi điều kiện của while được đánh giá là False hoặc gặp phải câu lệnh break. Lưu ý rằng 0 có nghĩa là False. Chương trình sau sẽ minh họa cụ thể hơn:

i = 5
while(i):
    print(i)
    i = i-1

Kết quả đầu ra:

5
4
3
2
1

👉 Tìm hiểu thêm về Vòng lặp while trong Python.

with

Câu lệnh with được dùng để bao bọc việc thực thi 1 khối mã lệnh trong các phương thức được xác định bởi trình quản lý ngữ cảnh.

Trình quản lý ngữ cảnh là một class triển khai các phương thức __enter____exit__. Việc sử dụng with nhằm đảm bảo rằng phương thức __exit__ được gọi ở cuối khối lồng nhau. Khái niệm này tương tự như việc sử dụng khối try...last. Ví dụ:

with open('quantrimang.txt', 'w') as my_file:
    my_file.write('Xin chào!')

Ví dụ trên sẽ viết dòng chữ Xin chào! vào tệp quantrimang.txt. Các đối tượng file có phương thức __enter____exit__ được xác định bên trong chúng, vì vậy chúng hoạt động như trình quản lý ngữ cảnh riêng.

yield

yield được sử dụng để trả về giá trị của hàm mà không hủy đi trạng thái của các biến trong hàm đó. Nó sẽ tạm giữ trạng thái của các biến tại vị trí yield đầu tiên, sau đó sẽ tiếp tục xử lý trong những lần gọi hàm tiếp theo.

Bất cứ 1 hàm nào có chứa yield đều đc coi là 1 đối tượng generator. Mỗi lệnh yield sẽ trả về một phần tử Generator object. Bạn có thể sử dụng nhiều từ khóa yield trong 1 hàm.

Ví dụ 1:

def generator():
    yield 10
    yield 2*5
    yield 9/3
 
for item in generator():
    print(item)

Kết quả trả về:

10
10
3.0

Trong ví dụ 1, sau mỗi vòng lặp for thì hàm generator() sẽ được gọi, lúc này nó sẽ lần lượt trả về các số 10, kết quả của 2*5 và 9/3 cho mỗi lần lặp.

Ví dụ 2:

def generator():
    for i in range(7):
        yield i*i

g = generator()
for i in g:
    print(i)

Kết quả trả về:

0
1
4
9
16
25
36

Ở ví dụ 2, hàm generator() trả về 1 bình phương của từng số từ 0 đến 6, kết quả sẽ được lần lượt in trong vòng lặp for.

Vậy là qua bài viết này, bạn đã nắm sơ bộ cách hoạt động của tất cả các keyword trong Python rồi đó. Để tìm hiểu kỹ hơn các từ khóa thường dùng thì bạn có thể tham khảo dần trong các bài viết sau nhé!

Thứ Sáu, 09/09/2022 11:31
52 👨 3.324
0 Bình luận
Sắp xếp theo
    ❖ Python