Mục lục
21. Comprehensions trong Python
List Comprehensions
Cú pháp này cho phép tạo ra một danh sách mới từ một danh sách hiện có hoặc một vòng lặp, kết hợp với các điều kiện đã cho.
a = [0, 1, 2, 3]
b = [i + 1 for i in a]
print(b)
Output: [1, 2, 3, 4]
Set Comprehension
Cú pháp này cho phép tạo ra một tập hợp mới từ các giá trị của một tập hợp hiện có.
a = {0, 1, 2, 3}
b = {i ** 2 for i in a}
print(b)
Output: {0, 1, 4, 9}
Dict Comprehension
Cú pháp này cho phép tạo ra một từ điển mới từ các giá trị của một từ điển hiện có.
a = {'Hello':'World', 'First': 1}
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
Các chuỗi ký tự bắt đầu bằng dấu gạch chéo ngược như \n
hoặc \t
, được sử dụng để 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 \n Ký tự xuống dòng \t Ký tự Tab \ 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 '''
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).
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"
print(a[0:3])
print(a[3:-1])
Output: Hel l
Chức năng Case Conversion
Các hàm upper()
và lower()
đượ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
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"]
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.
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()
.
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
.
from string import Template
name = 'Scaler'
t = Template('Hey $name!')
t.substitute(name = name)
Output: 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.
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.
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àmstrptime()
để chuyển đổi ngày sang thời gian tương ứng.
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ặcstruct_time
đại diện cho thời gian thành một string object.
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'dddd-dddd')
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'(dddd)-(dddd)')
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!!")
Output: Error Occurred!!
Traceback dưới dạng chuỗi (String)
Có một hàm trong python được gọi là traceback.format_exc()
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.
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.
assert keyword
: Điều kiện dẫn đến một giá trị booleanThô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'
Output: 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 "", line 1, in
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")
logg.warning("Its a Warning")
logg.info("Just an information")
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
.
Ví dụ: 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 cho hàm này sẽ là:
mul = lambda a, b: a * b
print(mul(3, 5))
Output: 15
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:
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.
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.
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
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()
a = "hello"
b = 5
c = 1
%who
Output: a b c
%%html
Name
Country
Age
Sid
India
22
Dave
UK
28
Bài viết được dịch từ đây.
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.