Functions in Python

Khi bắt đầu làm quen với một ngôn ngữ lập trình, chúng ta sẽ thường phải làm việc với các functions, trong tiếng việt mình gọi là hàm. Vậy hàm là gì và nó được ứng dụng trong ngôn ngữ Python như nào? Sau đây mình cùng tìm hiểu nhé.

1. Khái niệm

Đầu tiên, mình sẽ tìm hiểu khái niệm về hàm.

Hàm là một tập hợp các câu lệnh lấy đầu vào, thực hiện một số tính toán cụ thể và tạo đầu ra. Hàm giúp chia chương trình Python thành những mô-đun nhỏ hơn, giúp chương trình được quản lý dễ dàng hơn.
Ngoài ra, hàm có thể tái sử dụng, không cần lặp đi lặp lại đoạn code để thực hiện các tác vụ tương tự nhau.

2. Hàm trong Python
*Cú pháp:
Để tạo một hàm trong function, chúng ta sử dụng từ khóa def và có cú pháp như sau:

nameOfFunction: tên hàm không được bắt đầu bằng số và không chứa ký tự đặc biệt trừ ký tự (_).

listOfParameters: là các tham số bạn muốn truyền vào, nếu không có thì để trống trường này.

*Các loại hàm trong Python:

  • Hàm không có giá trị trả về

Hàm này không được truyền vào tham số cũng không có giá trị trả về, nên mỗi lần cần gọi hàm mình chỉ cần gọi tên hàm là được. Ở đây, khi mình muốn in dòng chữ “Hello World!” ra màn hình mình chỉ cần gọi printHelloWorld() nhiều lần.

  • Hàm có giá trị trả về

Khác với các ngôn ngữ khác, chúng ta sử dụng lệnh return để trả về giá trị của hàm. Ngôn ngữ Python ngoài sử dụng lệnh “return”, ta còn có thể sử dụng một lệnh khác là “yield”.

Trong khi lệnh return trả về một giá trị cho người dùng (object) thì “yield” trả về một chuỗi các giá trị (generator).

Trong khi đó, để return cũng trả về một chuỗi giá trị, ta cần tạo một list để lưu chuỗi giá trị đó và in ra sau => tốn dữ liệu bộ nhớ.

3. Functions Decorator

Trong Python, thi thoảng ta bắt gặp ký hiệu @ trước hàm, đó gọi là decorator trong Python.

Một decorator là một hàm lấy hàm làm tham số duy nhất và trả về một hàm. Điều này rất hữu ích, giống như một lớp vỏ bọc, nó làm thay đổi hành vi của code trước và sau khi gọi hàm chính.

Output:

Decorator có thể cũng được sử dụng để đính kèm dữ liệu (hoặc thêm attribute) cho hàm.

Note:

  • Hàm được định nghĩa bên trong decorator và hàm được truyền vào phải có tham số phù hợp
  • Một hàm có thể dùng nhiều decorator cùng lúc.

Kết luận

Trên đây là một số hiểu biết của mình về functions sau khi tìm hiểu trên geeksforgeeks.

Để hiểu thêm về ngôn ngữ Python cũng như functions trong Python, mọi người có thể tìm hiểu tại link sau:

5 Likes

Tuyệt, nội dung cơ bản, nhưng được diễn đạt một cách chi tiết, thể hiện sự cẩn thận.

Chúc mừng, chúc mừng @anon26170876 với bài viết đầu tiên rất thú vị về Functions trên Stories, mặc dù có những thứ anh còn chẳng biết mà nhận xét ấy (như cái Function Decorator) @@@
Em vốn là một bạn có thói quen viết “dài nhất như văn tế sớ” trong số 4 bạn thực tập, nhưng dạo này anh thấy em đã biết cách viết gọn ý lại và trọng tâm hơn rất nhiều rồi đó :blush: :blush: :blush:
Cộng thêm với tinh thần, em chưa làm tốt task “should have” nên em không muốn được cộng điểm. Càng khiến anh rất muốn dành lời khen cho em đó !!!
Giờ mấy đứa lại còn yêu cầu anh phải phản hồi cho từng bài viết, thế nên anh sẽ soi kỹ để comment nhé:

  1. Phần hình ảnh em chụp để đưa vào bài viết không thực sự “đẹp” với ảnh to, ảnh nhỏ không theo chuẩn một khung kích thước ==> dẫn đến phông chữ trong ảnh bị “quá cỡ” so với font chữ mặc định của bài viết.
  2. Anh muốn recommend em nên đọc về cách sử dụng Markdown trước khi viết tiếp bài số 2 nhé: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet#code-and-syntax-highlighting
    Đọc được hết bài viết này, em sẽ có thể: lồng được code python vào trong bài viết, tạo được tiêu mục đầu dòng, bôi đen, in nghiêng hay căn chỉnh đoạn văn một cách dễ dàng hơn rất nhiều đó !!!

Cố gắng lên nhé, anh sẽ chờ đợi bài viết sắp tới của em :wink: :wink: :wink:

2 Likes

Theo anh em nên tập trung vào các phần truyền tham số trên hàm trước khi đi vào decorator. Anh mong chờ lại một bài viết có những phần đó nhé
@anon26170876

1 Like

@walter vâng ạ, em sẽ tìm hiểu thêm và trình bày ở bài viết trong thời gian tới ạ. Em cảm ơn anh

1 Like

@Mike @anon67481427 em cảm ơn các anh ạ. Em sẽ cố gắng và rút kinh nghiệm trong các bài viết sắp tới ạ.