Thứ Ba, 14 tháng 5, 2024

22. Hàm trong Python

Trước khi có định nghĩa chính thức về hàm-function trong Python, chúng ta xét một ví dụ:

Vẫn "trung thành" với phong cách trong những phần trước, hãy xét một chương trình đóng mở mái che vườn rau tự động.

Chúng ta tạm hình dung cấu trúc của chương trình với "phong cách" của chương trình tào lao như sau:

 

if(Trời nắng to){
    Đóng mái che
    Đo nhiệt độ
    Đo độ ẩm không khí
    Tưới rau
}
else if(Trời nắng nhẹ){
    Mở mái che
    Đo nhiệt độ
    Đo độ ẩm không khí
    Tưới rau
}
else if(Trời mưa to){
    Đóng mái che
    Đo nhiệt độ
    Đo độ ẩm không khí
    Ngừng tưới rau
}
else if(Trời mưa nhẹ){
    Mở mái che
    Đo nhiệt độ
    Đo độ ẩm không khí
    Ngừng tưới rau
}
else{
    //Code else-Làm một việc gì khác
}

 

Ta sẽ thấy rằng việc đo nhiệt độ, tưới rau, đóng mở mái...cứ lặp đi lặp lại rất nhiều lần. Nếu đây là một việc lặp đi lặp lại hàng trăm lần thì công việc lập trình thật sự trở nên rất nhàm chán...Từ đây khái niệm về Hàm-Function ra đời. 

Hàm (function) là một nhóm các câu lệnh cùng nhau thực hiện một nhiệm vụ, một chức năng nào đó. Bạn có thể truyền dữ liệu, được gọi là tham số, vào một hàm.


Định nghĩa một hàm

Trong Python, một hàm được định nghĩa bằng từ khóa def.

Ví dụ, đây là một hàm đơn giản

 

def my_function():
  print("Xin Chao Dat Viet Lap Trinh")


my_function() # Gọi hàm


Tiếp tục sử dụng IDE Online để chạy các ví dụ


 

 

Để định nghĩa hàm, chúng ta cần theo các qui tắc sau:

  • Từ khóa def được sử dụng để bắt đầu phần định nghĩa hàm. Def xác định phần bắt đầu của khối hàm.
  • def được theo sau bởi ten_ham được theo sau bởi các dấu ngoặc đơn ().
  • Các tham số được truyền vào bên trong các dấu ngoặc đơn. Ở cuối là dấu hai chấm :.
  • Trước khi viết một code, một độ thụt lề được cung cấp trước mỗi lệnh. Độ thụt dòng này nên giống nhau cho tất cả các lệnh bên trong hàm đó.
  • Lệnh đầu tiên của hàm là tùy ý, và nó là Documentation String của một hàm đó.


Đối số (Arguments) của hàm 

Thông tin có thể được chuyển vào các hàm dưới dạng đối số.

Các đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn. Bạn có thể thêm bao nhiêu đối số tùy thích, chỉ cần phân tách chúng bằng dấu phẩy.

Đây là ví dụ

def my_function(dungcu):
  print(dungcu + " Tennis")

my_function("Vot")
my_function("Bong")
my_function("Giay")

Chạy chương trình


 


Đối số (argument) và Tham số (parameter)

Đôi khi bạn sẽ thấy nhiều bài phân biệt Đối số (argument) và Tham số (parameter).

Nó cũng giống như chúng ta đã nói về Phiên dịch và Biên dịch trước đây, cá nhân chúng tôi cho rằng cứ giữ nguyên parameter và argument thì sẽ dễ hơn.

Khi viết một hàm, nếu cần thiết  ta có thể sử dụng một hoặc nhiều parameter (các parameter là tùy chọn; có nghĩa là, một hàm có thể không chứa parameter.)

Trong hàm my_function() dungcu là tham số của hàm. Tham số (parameter) này chưa được gán bất cứ giá trị nào.

Khi ta gọi hàm, ta truyền giá trị Vot, Bong, Giay cho tham số dungcu, lúc này dungcu được gọi là argument.   
 
Nói chung, không cần quá để ý tới từ ngữ từ từ bạn sẽ dễ dàng phân biệt.

 

Số lượng đối số (Arguments)

Theo mặc định, một hàm phải được gọi với số lượng đối số chính xác. Có nghĩa là nếu hàm của bạn cần có 2 đối số, bạn phải gọi hàm với 2 đối số, không nhiều hơn cũng không ít hơn.

Vẫn sử dụng ví dụ trên, nếu chúng ta gọi hàm my_function(dungcu) mà không có đối số thì sẽ nhận báo lỗi. Đây là code:

def my_function(dungcu):
  print(dungcu + " Tennis")

my_function()

Chạy chương trình:


 

Hoặc nếu hàm my_function(dungcu) trên có 1 đối số mà khi gọi hàm chúng ta gọi 2 đối số thì cũng nhận báo lỗi.

Ví dụ:

def my_function(dungcu):
  print(dungcu + " Tennis")

my_function("Bong","Vot")

Chạy chương trình

 


Đối số tùy ý, *args

Nếu chúng ta không biết có bao nhiêu đối số sẽ được truyền vào hàm của mình, hãy thêm * trước tên tham số trong định nghĩa hàm.

Bằng cách này, hàm sẽ nhận được một bộ đối số và có thể truy cập các mục tương ứng. Đây là ví dụ

def my_function(*sinhvien):
  print("Sinh vien co diem cao nhat la " + sinhvien[2])

my_function("Tuan", "Thao", "Thanh", "Hau")

Chạy chương trình

 

Phần tiếp theo


Phần trước





 

Không có nhận xét nào:

Đăng nhận xét