---
title: "Python Cheat Sheet dành cho người mới Phần 3"
description: "Python Cheat Sheet có thể đóng vai trò như một người hướng dẫn giúp bạn tìm hiểu và sử dụng Python một cách dễ dàng hơn."
canonical: "https://200lab.io/blog/python-cheat-sheet-danh-cho-nguoi-moi-phan-3"
published: "2022-07-29T09:06:08Z"
updated: "2026-08-21T07:17:48Z"
authors: ["Pum"]
tags: ["Data"]
reading_minutes: 15
access: "public"
---

### 21. Comprehensions trong Python

#### List Comprehensions

Là một cú pháp cho phép lập trình viên nhanh chóng tạo ra một biến dữ liệu list mới từ một list cũ hoặc vòng lặp dạng in-line, kết hợp với các điều kiện cho trước.

```
a = [0, 1, 2, 3]
# b will store values which are 1 greater than the values stored in a
b = [i + 1 for i in a]
print(b)
Output:
[1, 2, 3, 4]
```

#### Set Comprehension

Nó là một cú pháp ngắn hơn để tạo một tập hợp mới bằng cách sử dụng các giá trị của một tập hợp hiện có.

```
a = {0, 1, 2, 3}
 # b will store squares of the elements of a
 b = {i ** 2 for i in a}
 print(b)
 Output:
 {0, 1, 4, 9}
```

#### Dict Comprehension

Đây là một cú pháp ngắn hơn để tạo một dictionary mới bằng cách sử dụng các giá trị của một dictionary hiện có.

```
a = {'Hello':'World', 'First': 1}
 # b stores elements of a in value-key pair format
 b = {val: k for k , val in a.items()}
 print(b)
 Output:
 {'World': 'Hello', 1: 'First'}

```

### 22. Thao tác chuỗi (String) trong Python

#### Escape Sequences

**Escape Sequences** là các chuỗi ký tự bắt đầu bởi dấu gạch chéo ngược như **\\n hay \\t** , nhằm biểu diễn các ký tự vốn không thể biểu diễn theo cách thông thường trong Python.

Ví dụ:

        Ký tự đặc biệt (Escape Sequence)
        Ý nghĩa

        \\t
        Ký tự Tab

        \\n
        Ký tự xuống dòng

        \\\\
        Dấu gạch chéo ngược

        \\’
        Dấu nháy đơn

#### Multiline Strings

**Multiline Strings** được sử dụng trong python thông qua dấu ngoặc kép `'''`

Ví dụ:

```
a = ''' Hello
       World!
       This is a
       Multiline String.'''

print(a)
Output:
Hello
World!
This is a
Multiline String.
```

#### Strings Indexing

Các chuỗi trong Python được lập index giống như một list các ký tự, dựa trên việc lập index 0. Bạn có thể truy cập các phần tử (elements) của một chuỗi tại một số index bằng cách sử dụng ** \[\] **các **toán tử (operators)**.

Chúng ta cùng xem xét một ví dụ về chuỗi giá trị trong `Python`.

![](https://assets.200lab.io/images/2024/12/05/14-6-58c13290a1182587dddc.webp)

```
a = "Python"
print(a[0], a[2], a[4])
print(a[-1], a[-3], a[-5])
Output:
P t o
n h y
```

#### Strings Slicing

**Slicing** cũng được thực hiện theo cách tương tự như trong lists.

```
a = "Hello"
# Slices the string from 0 to 3 indexes
print(a[0:3])
# Slices the string from 3 to -1(same as 4) indexes
print(a[3:-1])
Output:
Hel
l
```

#### Chức năng Case Conversion

Các hàm **upper ()** và **under **() được sử dụng để chuyển đổi một chuỗi ký tự thành chữ hoa hoặc chữ thường tương ứng.

Hàm **isupper ()** và **islower () **được sử dụng để kiểm tra xem một chuỗi có tất cả chữ hoa hay chữ thường tương ứng hay không.

```
a = "Hello"
print(a)
# Converts string to uppercase
print(a.upper())
# Converts string to lowercase
print(a.lower())
# Checks if string is uppercase
print(a.isupper())
# Checks if string is lowercase
print(a.islower())
Output:
Hello
HELLO
hello
False
False
```

Các chức năng tương tự khác:

        Hàm số (Function)
        Ý nghĩa

        isspace()
        Trả về true nếu chuỗi chỉ chứa các ký tự khoảng trắng whitespace

        isalnum()
        Kiểm tra xem tất cả ký tự trong chuỗi có phải là ký tự chữ hoặc số (Alphanumeric) hay không

        isalpha()
        Trả về true nếu chuỗi có ít nhất 1 ký tự và tất cả ký tự là chữ cái

        isTitle()
        Trả về True nếu chuỗi bắt đầu bằng chữ hoa và sau đó phần còn lại của các ký tự là chữ thường

#### Chức năng join() và split()

Hàm **join ()** hợp nhất các phần tử (elements) của list với một số delimiter string và trả về kết quả dưới dạng một chuỗi (string).

```
list = ["One", "Two", "Three"]
# join function
s = ','.join(list)
print(s)
Output:
One,Two,Three
```

Hàm **split ()** chia thành các tokens, dựa trên một số dấu phân cách và trả về kết quả dưới dạng list.

```
# split function
newList = s.split(',')
print(newList)
Output:
['One', 'Two', 'Three']
```

Nói chung, một chuỗi (string) có thể được chia (split) thành list bằng phương thức split () và một list có thể được nối (join) với chuỗi (string) bằng phương thức **join ()** như trong hình dưới đây:

![](https://assets.200lab.io/images/2024/12/05/15-6-343a4bc8da2459f37e00.webp)

#### String Formatting

Thực hiện hàm **str.format ()** để định dạng chuỗi.

```
first = "first"
second = "second"
s = "Sunday is the {} day of the week, whereas Monday is the {} day of the week".format(first, second)
print(s)
Output:
Sunday is the first day of the week, whereas Monday is the second day of the week
```

#### Template Strings

**Template Strings** làm cho code trở nên dễ hiểu hơn, vì vậy chúng được khuyến khích sử dụng. Chúng có thể được sử dụng bằng cách Template class từ string module.

Ví dụ:

```
>>> from string import Template
>>> name = 'Scaler'
>>> t = Template('Hey $name!')
>>> t.substitute(name = name)
'Hey Scaler!'

```

### 23. Định dạng ngày (Dates) trong Python

Để xử lý các hoạt động ngày và giờ trong Python, bạn hãy sử dụng mô-đun **datetime**.

- **time class:** bạn có thể biểu diễn các giá trị thời gian.

Ví dụ:

```
import datetime
   tm = datetime.time(1, 30, 11, 22)
   print(tm)
   Output:
   01:30:11.000022
```

- **date class: **bạn có thể biểu diễn các giá trị ngày.

Ví dụ:

```
 import datetime
   date = datetime.date(2000, 11, 16)
   print('Date date is ', date.day, ' day of ', date.month, ' month of the year ', date.year)
   Output:
   Date date is  16  day of  11  month of the year  2000
```

- **Chuyển đổi từ ngày sang giờ:** bạn có thể dùng hàm **strptime ()** để chuyển đổi ngày sang thời gian tương ứng.

Ví dụ:

```
from datetime import datetime
   print(datetime.strptime('15/11/2000', '%d/%m/%Y'))
   Output:
   2000-11-15 00:00:00
```

- **time.strftime() **trong Python: Nó sẽ chuyển đổi một tuple hoặc **struct\_time** đại diện cho thời gian thành một string object.

Ví dụ:

```
from time import gmtime, strftime
   s = strftime("%a, %d %b %Y %H:%M:%S + 1010", gmtime())
   print(s)
   Output:
   Sun, 28 Nov 2021 18:51:24 + 1010

```

### 24. Python RegEx

#### Regex Matching

**re** module trong Python cho phép bạn thực hiện hệ thống **regex matching.**

```
import re
landline = re.compile(r'\d\d\d\d-\d\d\d\d')
num = landline.search('LandLine Number is 2435-4153')
print('Landline Number is: {}'.format(num.group()))
Output:
Landline Number is: 2435-4153
```

#### Parenthesis Grouping

**Group** là một phần của mẫu **regex** được đặt trong **dấu ngoặc đơn ()**. Bạn có thể đặt kết quả phù hợp vào các group khác nhau bằng cách sử dụng dấu ngoặc đơn (). Ngoài ra, bạn còn có thể truy cập các group bằng cách sử dụng hàm **group ()**.

```
import re
landline = re.compile(r'(\d\d\d\d)-(\d\d\d\d)')
num = landline.search('LandLine Number is 2435-4153')
# This will print the first group, which is the entire regex enclosed in the brackets
print(num.group(0))
# This will print the second group, which is the nested regex enclosed in the 1st set of nested brackets
print(num.group(1))
# This will print the third group, which is the nested regex enclosed in the 2nd set of nested brackets
print(num.group(2))
Output:
2435-4153
2435
4153
```

#### Regex Symbols trong Python

Các ký hiệu **regex** có các chức năng khác nhau được đề cập trong bảng dưới đây:

        Ký hiệu (Symbol)
        Matches

        +
        One or More of the preceding group

        \*
        Zero or More of preceding group

        ?
        Zero or One of preceding group

        ^name
        String must begin with the name

        name$
        String must end with the name

        .
        Any character except \\n

        {n}
        Exactly n of preceding group

        {n, }
        \>= n of preceding group

        {,n}
        \[0, m\] of preceding group

        {n, m}
        \[n, m\] of preceding group

        \*?
        Non Greedy matching of the preceding group

        \[abc\]
        Any character enclosed in the brackets

        \[^abc\]
        Any character not enclosed in the brackets

        \\d, \\w, \\s
        Digit, word, or space respectively

        \\D, \\W, \\S
        Anything except digit, word, or space respectively

Ví dụ:

Chúng ta sẽ xác định mẫu regex ở đây.

```
address = "(\\d*)\\s?(.+),\\s(.+)\\s([A-Z]{2,3})\\s(\\d{4})"
```

Chúng ta sẽ giải thích một số ký hiệu trong bảng trên:

- \\ s ?: 0 hoặc 1 khoảng trắng.
- (\\ d \*): 0 hoặc nhiều ký tự chữ số.
- (. +): Lớn hơn hoặc bằng 1 ký tự.
- \\ s: Một khoảng trắng
- (\[A-Z\] {2, 3}): 2 hoặc 3 bảng chữ cái viết hoa
- (\\ d {4}): ký tự 4 chữ số

### 25. Debugging trong Python

#### Raising Exceptions with raise statement

Câu lệnh** raise **được sử dụng để nêu ra các **ngoại lệ (exceptions)** bao gồm 3 thành phần:

- Nâng cao keyword
- Lệnh gọi hàm Exception ()
- Tham số của hàm Exception (), thường chứa thông báo lỗi.

```
raise Exception("Error Occurred!!")
Traceback (most recent call last):
 File "./prog.py", line 1, in <module>
Exception: Error Occurred!!
```

#### Traceback dưới dạng chuỗi (String)

Có một hàm trong python được gọi là **traceback.format\_exc () returns** truy xuất được hiển thị bởi Python khi raised Exception không được xử lý dưới String type. **Traceback Module** được yêu cầu phải được nhập cho mục đích này.

Ví dụ:

```
import traceback
try:
    raise Exception('Error Message.')
except:
    with open('error.txt', 'w') as error_file:
        error_file.write(traceback.format_exc())
    print('The traceback info was written to error.txt.')

Output:
The traceback info was written to error.txt.
```

#### Assert Statements trong Python

Câu lệnh** Assert / Assertions **được sử dụng để gỡ lỗi chương trình và kiểm tra xem code có đang thực hiện hoạt động rõ ràng theo logic của chương trình hay không.

Vì khi có xác nhận không thành công, chương trình sẽ ngay lập tức bị treo, điều đó dẫn đến chúng ta sẽ bị thu hẹp space tìm kiếm lỗi.

- assert keyword
- Điều kiện dẫn đến một giá trị boolean
- Thông báo hiển thị khi xác nhận không thành công
- Dấu phẩy ngăn cách điều kiện và thông báo hiển thị.

```
>>> sum = 4
>>> assert sum == 5, 'Addition Error'
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
AssertionError: Addition Error
```

Các xác nhận có thể bị vô hiệu hóa bằng cách chuyển tùy chọn -O khi chạy Python như được hiển thị trong các lệnh bên dưới.

```
$ python -Oc "assert False"
$ python -c "assert False"
Traceback (most recent call last):
 File "<string>", line 1, in <module>
AssertionError

```

### 26. Đăng nhập (Log) bằng Python

**Log** cho phép bạn theo dõi một số sự kiện xảy ra khi có một số phần mềm chạy. Nó sẽ trở nên rất quan trọng trong **Software Development, Debugging và Running Softwares.**

```
import logging
# Create and configues the logger
logging.basicConfig(filename="newfile.log", format='%(asctime)s %(message)s', filemode='w')
# Creates logging object
logg = logging.getLogger()
# Sets the level of logging to DEBUG
logg.setLevel(logging.DEBUG)
# Messages
logg.debug("Debug Message")
logger.warning("Its a Warning")
logger.info("Just an information")
```

Levels của Logging:

        Level
        Function
        What it does

        DEBUG
        logging.debug()
        Used for tracking any events that occur during program execution

        INFO
        logging.info()
        Confirms the working of things at the end of the module in the program

        WARNING
        logging.warning()
        Used to flag some issues that might hinder the program from working in the future, but allows it to work for now

        ERROR
        logging.error()
        Records errors that might have made the program fail at some point

        CRITICAL
        logging.critical()
        Indicates or flags fatal errors in the program

### 27. Hàm Lambda trong Python

Hàm Lambda là một hàm được định nghĩa mà không có tên. Trong khi các hàm bình thường sẽ được định nghĩa bằng các từ khóa def trong Python, thì các hàm ẩn danh sẽ được định nghĩa bằng từ khóa lambda .

Chúng ta sẽ cùng tìm hiểu nó với một ví dụ sau,

Xét hàm nhân 2 số:

```
def mul(a, b):
   return a * b
print(mul(3, 5))
Output:
15
```

Hàm Lambda tương đương sẽ là:

```
Hàm Lambda tương đương cho hàm này sẽ là:
```

Cú pháp này sẽ được hiển thị bên dưới:

![](https://assets.200lab.io/images/2024/12/05/lambda-functions-1-f45dc8e41a37aa99968f.webp)

Các hàm khác cũng có thể được viết dưới dạng của hàm Lambda, dẫn đến các code sẽ ngắn hơn dù chạy cùng một logic chương trình.

### 28. Toán tử ba ngôi (Ternary Operator) trong Python

Toán tử ba ngôi được sử dụng như sự thay thế cho các câu lệnh điều kiện** if-else** và cách để viết **short crisp one-liner. **

Cú pháp như sau:

```
<expression 1> if <condition> else <expression 2>
```

```
f = 2
s = 2
# if the sum of f and s is greater than 0 the sum
# is printed, else 0 is printed
print(f + s if (f + s > 0) else 0)
Output:
4

```

### 29. \*args và \*\*kwargs trong Python

**\*args** là viết tắt của (arguments) đối số, **\*\*kwargs** là viết tắt của (keyword arguments) đối số từ khóa. Nó được sử dụng để giải nén ra loại đối số tương ứng, cho phép gọi function có list đối số có số lượng giá trị thay đổi

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

**\* args: **đối với các đối số không phải từ khóa.

Ví dụ:

```
 # the function will take in a variable number of arguments
   # and print all of their values
   def tester(*argv):
       for arg in argv:
           print(arg)
   tester('Sunday', 'Monday', 'Tuesday', 'Wednesday')
   Output:
   Sunday
   Monday
   Tuesday
   Wednesday
```

**\*\* kwargs**: đối với các đối số từ khóa.

Ví dụ:

```
# The function will take variable number of arguments
   # and print them as key value pairs
   def tester(**kwargs):
       for key, value in kwargs.items():
           print(key, value)
   tester(Sunday = 1, Monday = 2, Tuesday = 3, Wednesday = 4)
   Output:
   Sunday 1
   Monday 2
   Tuesday 3
   Wednesday 4

```

### 30. if \_\_name\_\_ == "\_\_main\_\_" trong Python

Khi Python chạy "tệp chứa mã nguồn" dưới vai trò là chương trình chính, nó sẽ gán giá trị (“\_\_main\_\_”) cho biến (\_\_name\_\_).

```
>>> if __name__ == "__main__":
...     main()

```

### 31. Dataclass trong Python

**Dataclass **được sử dụng để lưu trữ dữ liệu, chúng có một số tính năng như:

- Có thể so sánh với các đối tượng khác cùng loại.
- Lưu trữ dữ liệu, đại diện cho một kiểu dữ liệu cụ thể.

#### Python 2.7

Nếu bạn đang sử dụng Python phiên bản cũ thì ví dụ dưới đây sẽ cho bạn thấy chức năng hoạt động của Dataclass theo hệ điều hành cũ.

```
class Self:
   def __init__(self, x):
       self.x = x

ob = Self("One")
print(ob.x)
Output:
One
```

#### Python 3.7

Còn nếu bạn sử dụng phiên bản Python mới hơn thì ví dụ này sẽ hướng dẫn bạn cách sử dụng.

```
@dataclass #annotation indicates that it is a dataclass module
class Self:
   x: string
ob = Self("One")
print(ob.x)
Output:
One
```

```
from dataclasses import dataclass
from typing import Any
@dataclass
class WithoutExplicitTypes:
  name: Any
  age: Any = 16

```

### 32. Virtual Environment trong Python

**Virtual Environment** thiết lập một môi trường ảo, cho phép bạn nghịch lung tung với các **packages** của Python mà không làm ảnh hưởng đến những packages đã được cài đặt sẵn trên Python.

Các bước cài đặt:

```
pip install virtualenv
```

```
pip install virtualenvwrapper-win
```

Các bước sử dụng:

```
mkvirtualenv Test # Make virtual environment called Test
#setprojectdir .

deactivate # To move to something else in the command #line.

workon Test # Activate environment

```

### 33. Lệnh trong Python

Magic Commands là tính năng mới, được thêm vào python shell. Chúng có những cải tiến hơn so với python thông thường, được thực hiện bởi IPython Kernel.

Ký tự chính: %

Các loại lệnh chính:

- **%prefix**: command sẽ chỉ hoạt động trên một code đã cho.
- **%%prefix**: command sẽ hoạt động trên code block.

Một số ví dụ về  command trong Python là:

- **% run**: được sử dụng để chạy một tệp bên ngoài bằng Python.
- **%% time**: Cho phép bạn theo dõi thời gian mà code cần để thực thi.
- **%% writefile**: command này sẽ sao chép nội dung từ code cell hiện tại sang một tệp bên ngoài.
- **$ pyca**t: command này được sử dụng để hiển thị nội dung của tệp bên ngoài.
- **%who**: command  này liệt kê tất cả các biến trong Python notebook.
- **%% html**: command này sẽ cho phép bạn viết và thực thi code html trong ô hiện tại.

```
def runner():
   print("Hello World")

runner()
%run runner.py
Output:
Hello World
```

```
%%time
for i in range(10000):
   a = a + i**2
Output:
CPU Times: user: 3.72 ms, sys: 9us, , total: 3.73ms, Wall time: 3.75ms
```

```
%%writefile code.py
def func():
   print("Hello")
func()
Output:
Overwriting code.py
```

```
%pycat code.py
def func():
   print("Hello")
func()
```

```
a = "hello"
b = 5
c = 1
%who
Output:
a b c
```

```
%%html
<html>
<body>
<table>
       <tr>
           <th>Name</th>
           <th>Country</th>
           <th>Age</th>
       </tr>
       <tr>
           <td>Sid</td>
           <td>India</td>
           <td>22</td>
       </tr>
       <tr>
           <td>Dave</td>
           <td>UK</td>
           <td>28</td>
       </tr>
</table>
</body>
</html>
```

Output:

![](https://assets.200lab.io/images/2024/12/05/16-6-e4785965825516fae29d.webp)

- **% env**: command này cho phép bạn liệt kê tất cả các biến môi trường (environment variables).
- **% pinfo**: command này cung cấp thông tin chi tiết về đối tượng được truyền cùng với nó.

![](https://assets.200lab.io/images/2024/12/05/17-7-ae75bfc310e87083fdfb.webp)

![](https://assets.200lab.io/images/2024/12/05/18-6-916906d19bcc9a019bf1.webp)

Bài viết được dịch từ [đây](<https://www.interviewbit.com/python-cheat-sheet>).

Python Cheat Sheet có thể đóng vai trò như một người hướng dẫn giúp bạn tìm hiểu và sử dụng Python một cách dễ dàng hơn.

Nếu bạn có định hướng trở thành **Data Analyst chuyên nghiệp** thì bạn có thể tham khảo bộ khóa học toàn diện chuyên nghiệp với **combo 4 khóa học** trong **1 bootcamp** của **200Lab **tại [đây](<https://200lab.io/khoa-hoc/khoa-hoc-data-analysis?fbclid=IwAR0W-b0konuLmIz9ZjOcSLit5obpxi0WTgtrtvnhDeIwgQM9DgwHKAQLCDE>).

Ngoài ra, bạn có thể nhấn vào[link](<https://zalo.me/g/ofnepz110?fbclid=IwAR3Jkq4g--18-FfbJvPx80lpAsnyuAW_dloBKOmnGSUEaoGmHq46ggexELs>)này để tham gia vào nhóm và nhận thêm nhiều tài liệu hữu ích khác về** Data** nhé!
