CÁC LOẠI HÀM TRONG PYTHON BẠN CẦN NẮM

Hàm trong python là gì?

Hàm (function) được hiểu là tập hợp của một khối code được viết ra, nhóm lại với nhau và đặt tên để có thể tái sử dụng cho những lần tiếp theo một cách nhanh chóng mà không cần phải viết lại toàn bộ đoạn code.

Hàm giúp chia chương trình Python thành những khối, phần, mô -đun nhỏ hơn để dễ dàng tổ chức và quản lý hơn khi chương trình Python quá lớn hoặc cần được mở rộng. Việc sử dụng hàm (function) trong Python rất phổ biến vì nó giúp cho các đoạn code trở lên gọn gàng và có thể tái sử dụng nhiều lần.

Cấu trúc hàm trong python

cấu trúc hàm trong python

Về cơ bản, cấu trúc hàm Python sẽ bao gồm các thành phần sau:

  • Từ khóa def: Bắt đầu hàm trong python
  • ten_ham (function_name): Tên hàm trong python là định danh duy nhất, cần tuân theo một số quy tắc viết tên và định danh trong Python
  • Các tham số/đối số: Được đặt trong dấu (), chúng ta truyền giá trị cho hàm thông qua các tham số này. Chúng là tùy chọn, nếu có nhiều tham số thì chúng viết tách nhau bởi dấu phẩy. 
  • Dấu hai chấm (:): là kết thúc thúc của tiêu đề hàm
  • Docstring: Mô tả chức năng của hàm
  • Các câu lệnh: Các lệnh khác nhau đều phải cùng có mức lùi đầu dòng giống nhau
  • Return: Chỉ xuất hiện khi hàm cần trả về giá trị nhất định.

Các loại hàm trong python

Hàm trong python có 2 loại hàm cơ bản chính, một là các loại hàm tích hợp sẵn, hai là các loại hàm Python do người dùng tự định nghĩa. Các hàm do người dùng tự định nghĩa sẽ có cấu trúc như phần bên trên mà bài viết này đã chia sẻ. Ngoài ra, trình thông dịch của Python có sẵn một số hàm để bạn có thể sử dụng, được gọi là hàm tích hợp. Ví dụ, print()hàm trong python trả ra kết quả của hàm…

Hàm trong Python 3.6 có 68 hàm tích hợp sẵn được liệt kê trong bảng dưới. Bạn có thể nhấn Ctrl+F trên trình duyệt và nhập tên hàm cần tìm, nếu bạn muốn tìm nhanh bất cứ hàm nào nhé:

Hàm trong python
Tên hàmChức năng
abs()Trả về giá trị tuyệt đối của một số
all()Trả về True khi tất cả các phần tử trong iterable là đúng
any()Kiểm tra bất kỳ phần tử nào của iterable là True
ascii()Tả về string chứa đại diện (representation) có thể in
bin()Chuyển đổi số nguyên sang chuỗi nhị phân
bool()Chuyển một giá trị sang Boolean
bytearray()Trả về mảng kích thước byte được cấp
bytes()Trả về đối tượng byte không đổi
callable()Kiểm tra xem đối tượng có thể gọi hay không
chr()Trả về một ký tự (một chuỗi) từ Integer
classmethod()Trả về một class method cho hàm
compile()Trả về đối tượng code Python
complex()Tạo một số phức
delattr()Xóa thuộc tính khỏi đối tượng
dict()Tạo Dictionary
dir()Trả lại thuộc tính của đối tượng
divmod()Trả về một Tuple của Quotient và Remainder
enumerate()Trả về đối tượng kê khai
eval()Chạy code Python trong chương trình
exec()Thực thi chương trình được tạo động
filter()Xây dựng iterator từ các phần tử True
float()Trả về số thập phân từ số, chuỗi
format()Trả về representation được định dạng của giá trị
frozenset()Trả về đối tượng frozenset không thay đổi
getattr()Trả về giá trị thuộc tính được đặt tên của đối tượng
globals()Trả về dictionary của bảng sumbol toàn cục hiện tại
hasattr()Trả về đối tượng dù có thuộc tính được đặt tên hay không
hash()Trả về giá trị hash của đối tượng
help()Gọi Help System được tích hợp sẵn
hex()Chuyển Integer thành Hexadecimal
id()Trả về định danh của đối tượng
input()Đọc và trả về chuỗi trong một dòng
int()Trả về số nguyên từ số hoặc chuỗi
isinstance()Kiểm tra xem đối tượng có là Instance của Class không
issubclass()Kiểm tra xem đối tượng có là Subclass của Class không
iter()Trả về iterator cho đối tượng
len()Trả về độ dài của đối tượng
list()Tạo list trong Python
locals()Trả về dictionary của bảng sumbol cục bộ hiện tại
map()Áp dụng hàm và trả về một list
max()Trả về phần tử lớn nhất
memoryview()Trả về chế độ xem bộ nhớ của đối số
min()Trả về phần tử nhỏ nhất
next()Trích xuất phần tử tiếp theo từ Iterator
object()Tạo một đối tượng không có tính năng (Featureless Object)
oct()Chuyển số nguyên sang bát phân
open()Trả về đối tượng File
ord()Trả về mã Unicode code cho ký tự Unicode
pow()Trả về x mũ y
print()In đối tượng được cung cấp
property()Trả về thuộc tính property
range()Trả về chuỗi số nguyên từ số bắt đầu đến số kết thúc
repr()Trả về representation có thể in của đối tượng
reversed()Trả về iterator đảo ngược của một dãy
round()Làm tròn số thập phân
set()Tạo một set các phần tử mới
setattr()Đặt giá trị cho một thuộc tính của đối tượng
slice()Cắt đối tượng được chỉ định bằng range()
sorted()Trả về list được sắp xếp
staticmethod()Tạo static method từ một hàm
str()Chuyển đối tượng đã cho thành chuỗi
sum()Thêm một mục vào Iterable
super()Cho phép tham chiếu đến Parent Class bằng super
tuple()Tạo một Tuple
type()Trả về kiểu đối tượng
vars()Trả về thuộc tính __dict__ của class
zip()Trả về Iterator của Tuple
__import__()Hàm nâng cao, được gọi bằng import

Gọi hàm trong Python

Vậy sau khi đã định nghĩa xong 1 hàm hoặc biết đến các hàm có sẵn, làm sao để bạn có thể gọi ra 1 hàm trong Python?

Dưới đây, chúng ta có ví dụ về định nghĩa một hàm:

def chao(ten):
    “””Hàm này dùng để chào một người được truyền vào như một tham số”””
     print("Xin chào, " + ten + "!")

Khi một hàm được định nghĩa thì bạn có thể gọi nó từ một hàm/chương trình khác hoặc tại dấu nhắc lệnh. Để gọi hàm, chỉ cần nhập tên hàm với các tham số thích hợp là bạn có thể sử dụng được hàm đó. 

Ví dụ: Bạn có thể dùng cậu lệnh sau để gọi hàm Python trên:

chao (“mcivietnam.com”)

Kết quả sẽ được:

chao(“mcivietnam.com”)
Xin chào, mcivietnam.com!

Lệnh Return trong hàm Python

Lệnh return trong hàm Python thường được dùng trong trường hợp bạn muốn sử dụng kết quả của hàm vừa tính để thực hiện các mục đích khác. Bạn chỉ cần thêm keyword return trước kết quả bạn muốn trả về.

def Chao():
print ("Mcivietnam.com xin chào!")
return;
Chao()

Kết quả trả về:

Mcivietnam.com xin chào!

Ở đây, chúng ta định nghĩa hàm Chao() và gọi nó ra. Đầu tiên, bạn định nghĩa hàm trong python như cấu trúc hàm mặc định trong python, và thêm các dòng lệnh cần thiết trong hàm. Bổ sung lệnh return nếu bạn muốn thoát hàm sau khi thực thi câu lệnh hoặc trở về nơi hàm được gọi

Từ đây, bất cứ khi nào muốn gửi lời chào tới mọi người, bạn chỉ cần viết Chao() là xong.

Cách truyền tham số vào hàm trong python

Hàm trong python giúp giảm bớt các công việc lặp lại nhiều lần, bên cạnh đó hàm trong python còn có chức năng cực hữu hiệu khác là cho và nhận dữ liệu. Python cho phép chúng ta gọi một hàm trong khi truyền dữ liệu vào nó.

Ví dụ: Chúng ta muốn thêm từ “Xin chào” vào trước hàm, chúng ta sẽ làm như sau:

def Chao(ten):
print ("Xin chào " + ten)
return;
Chao("Mcivietnam")

Kết quả trả về sẽ là:

Xin chào Mcivietnam

Thiết lập giá trị mặc định cho hàm

Một trong những vấn đề quan trọng khi làm việc với hàm trong Python là đó chính là tham số. Hàm trong python bao gồm 3 loại tham số sau: tham số bắt buộc, tham số mặc định, tham số biến động.

Trong bài viết này, chúng ta sẽ tìm hiểu về phần tham số mặc định trong hàm Python. Trong Python, tham số của hàm trong python có thể gán giá trị mặc định bằng cách sử dụng toán tử gán “=” như sau:

def Chao(ten, loi_chao = “học tại MCI rất hiệu quả đúng không?"):
“””
Hàm trong python này có chức năng hiện lời chào với mẫu đã định sẵn
Nếu thông điệp không được cung cấp,nó sẽ được mặc định là “Học tại MCI rất hiệu quả đúng không?”
“””
print ("Xin chào ", ten + “,” + loi_chao)
chao(“Sơn")
Chao("Chi", “Hôm nay bạn vui chứ?”)

Và kết quả sẽ là:

Xin chào Sơn, Học tại MCI rất hiệu quả Gđúng không?
Xin chào Chi, Hôm nay bạn vui chứ?

Trên đây, tham số “ten” không được gán giá trị mặc định. Tham số “loi_chao” có giá trị mặc định là “Học tại MCI rất hiệu quả đúng không?”. Vì vậy, khi gọi hàm bạn có thể cung cấp tham số này hoặc không. Nếu cung cấp tham số “loi_chao”, nó sẽ ghi đè lên giá trị mặc định.

Trong một hàm, số lượng tham số có giá trị mặc định không bị giới hạn, nhưng một khi có tham số mặc định, tất cả các tham số sau tham số mặc định bắt buộc phải có được gán giá trị mặc định.

Các loại toán tử trong python

Giới hạn thực thi và thời gian khả dụng của các biến trong hàm

Giới hạn của biến ở hàm trong python nằm ở việc các biến và tham số trong một hàm chỉ có tác dụng thực thi trong hàm đó

Thời gian khả dụng của biến trong hàm chính là khoảng thời gian diễn ra quá trình thực thi của hàm, khi quá trình thực thi kết thúc, biến trong hàm cũng sẽ biến mất khỏi bộ nhớ máy

Ví dụ:

# Biến bên trong hàm
def trial():
x = 3
print("Giá trị bên trong hàm:",x)

#Biến bên ngoài hàm
x = 10
trial()
print("Giá trị bên ngoài hàm:",x)

Kết quả:

Giá trị bên trong hàm: 3
Giá trị bên ngoài hàm: 10

Kết quả ở trên mặc dù cùng sử dụng biến x, tuy nhiên một biến x nằm trong hàm – sau lệnh def và một biến x nằm ngoài hàm

Biến x trong hàm còn gọi là biến cục bộ chỉ có thể thực thi lệnh trong hàm. Biến x ngoài hàm có áp dụng lệnh trên toàn bộ lệnh của dự án

Đối với các biến cục bộ, để thay đổi giá trị bạn cần khai báo như các biến global bằng cách sử dụng biến global

Biến Global

Với hàm trong Python, biến global ( hay biến toàn cục ) là biến được khai báo bên ngoài hoặc trong phạm vi hàm. Biến global có thể được truy cập từ bên trong hoặc bên ngoài hàm. 

Ví dụ cách tạo biến global 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)

Trên đây, biến x là biến global, và hàm vidu() được định nghĩa có chức năng in biến x.

Sau đây là kết quả của hàm vidu():

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

Docstring trong Python

Docstring trong python (tiếng anh là documentation string) chính là chuỗi ký tự đầu tiên ngay sau tiêu đề hàm có chức năng giải thích đặc điểm của hàm đó. Docstring không bắt buộc nhưng dùng nó để giải thích ngắn gọn về chức năng của hàm sẽ giúp người dùng có thể hiểu hàm ngay mà không cần tìm định nghĩa để xem.

Docstring thường được đặt giữa cặp 3 dấu ngoặc kép. Chuỗi này sẽ xuất hiện như thuộc tính __doc__ của hàm. Chúng ta có thể xem xét ví dụ sau:

def Chao(ten, loi_chao = “học tại MCI rất hiệu quả đúng không?"):
“””
Hàm trong python này có chức năng hiện lời chào với mẫu đã định sẵn
Nếu thông điệp không được cung cấp,nó sẽ được mặc định là “Học tại MCI rất hiệu quả đúng không?”
“””
print ("Xin chào ", ten + “,” + loi_chao)
chao(“Sơn")
Chao("Chi", “Hôm nay bạn vui chứ?”)

Phần in nghiêng là docstring và được đặt trong cặp 3 dấu “””, nó giúp chúng ta có được các thông tin về chức năng của hàm

Đệ quy trong python

Đệ quy là hàm trong python tự gọi lại chính nó

Điều kiện chấm dứt: Một hàm đệ quy cần phải có điều kiện chấm dứt để dừng việc tự gọi lại nó. Hàm đệ quy chấm dứt khi và chỉ khi mỗi lần hàm được đệ quy trả ra kết quả của vấn đề tiến gần đến điều kiện cơ sở.

Trong đó điều kiện cơ sở chính là kết quả khi vấn đề đã được giải quyết. Nếu hàm gọi đệ quy không thể đạt được điều kiện cơ sở thì hàm đẹ quy sẽ được lặp lại vô hạn lần.

Như vậy, hàm đệ quy trong ngnahf data science là chia nhỏ trường hợp lớn thành nhiều trường hợp nhỏ, đưa ra kết quả và chỉ dừng lại khi đạt được điều kiện cơ sở.

Chúng ta hãy xem xét ví dụ sau: Một hàm đệ quy in ra giá trị từ 15 đến 1

Def vidu(n):
print (n)
if(n==1):
return 1
vidu(n-1)
vidu(15)

Kết quả trả về:

15
14
13
12
11
10
9
8
7
6
5
4
3
2
1

Trong ví dụ trên, hàm vidu() là một hàm đệ quy vì hàm này tự gọi chính nó. Khi chúng ta truyền vào một giá trị là 15, hàm sẽ thực hiện việc in ra các giá trị tương ứng và tiếp tục giảm giá trị được truyền vào. Khi giá trị bằng 1, hàm đệ quy đạt được điều kiện cơ sở đã được định sẵn từ trước.

Ưu điểm của đệ quy

  • Các hàm đệ quy làm cho đoạn mã trông gọn gàng và dễ nhìn hơn.
  • Một vấn đề lớn có thể dùng hàm đệ quy để chi nhỏ vấn đề thành các vấn đề con đơn giản hơn để giải quyết.
  • Ứng dụng hàm đệ quy đơn giản hơn so với việc tạo nên một vòng lặp lồng

Nhược điểm của đệ quy

  • Trong một số trường hợp, sự logic của hàm đệ quy đôi khi khó giải thích
  • Hàm đệ quy do chia nhỏ trường hợp lớn vì thế chiếm dụng bộ nhớ và thời gian thực thi
  • Khó để gỡ lỗi

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *