PHP
Python

Trang chủ

Tìm hiểu Positional Arguments trong Python

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
09/01/2025
8 phút đọc
Theo dõi Vietnix trên

Tìm hiểu Positional Arguments trong Python

Positional arguments đóng vai trò quan trọng trong việc xây dựng và tương tác với các hàm trong Python. Việc sử dụng thành thạo loại đối số này là yếu tố then chốt để viết code rõ ràng và dễ bảo trì. Trong bài viết này mình sẽ giải thích cặn kẽ về positional arguments, với các ví dụ cụ thể giúp bạn nâng cao kỹ năng lập trình Python.

Positional Arguments trong Python là gì?

Positional arguments trong Python là cách chúng ta truyền dữ liệu vào hàm dựa trên thứ tự của các tham số khi định nghĩa hàm. Cụ thể, khi bạn khai báo một hàm, các biến được đặt trong cặp dấu ngoặc đơn () được gọi là tham số hình thức (formal arguments). Các tham số hình thức này thường được biết đến là tham số vị trí (positional arguments) bởi vì vị trí của chúng khi định nghĩa sẽ quyết định cách chúng ta truyền dữ liệu cho hàm.

image 37
Tìm hiểu Positional Arguments trong Python 4

Khi gọi một hàm, bạn cần lưu ý những điều sau về các tham số vị trí:

  • Bắt buộc cung cấp đủ tham số: Bạn cần phải truyền đầy đủ giá trị cho tất cả các tham số hình thức đã được định nghĩa trong hàm.
  • Số lượng tham số phải khớp: Số lượng tham số thực tế mà bạn truyền vào khi gọi hàm phải chính xác bằng số lượng tham số hình thức đã khai báo.
  • Thứ tự truyền tham số quan trọng: Các giá trị được truyền vào hàm sẽ được gán cho các tham số hình thức theo đúng thứ tự mà các tham số này được định nghĩa.
  • Kiểu dữ liệu phải tương thích: Kiểu dữ liệu của các tham số truyền vào cần phải phù hợp với kiểu dữ liệu mong đợi của các tham số hình thức.
  • Tên tham số không cần giống nhau: Tên của các tham số hình thức và tên của các biến được truyền vào không nhất thiết phải giống nhau.

4 ví dụ về positional arguments trong Python

Tiếp theo, hãy cùng xem qua 4 ví dụ cụ thể để hiểu rõ hơn về cách sử dụng tham số vị trí:

Ví dụ 1

Đoạn code sau đây minh họa cách tham số vị trí hoạt động:

def hien_thi_thong_tin(ten, tuoi):
    print ("Chào bạn {}! Năm nay bạn {} tuổi.".format(ten, tuoi))

ho_ten = "Nguyễn Văn A"
so_tuoi = 25
hien_thi_thong_tin(ho_ten, so_tuoi)

Kết quả khi chạy đoạn code trên sẽ như sau:

Chào bạn Nguyễn Văn A! Năm nay bạn 25 tuổi.

Giải thích code:

  • Hàm hien_thi_thong_tin: có hai tham số hình thức (cũng là tham số vị trí): ten (tên) và tuoi (tuổi).
  • Biến ho_ten: được gán giá trị là “Nguyễn Văn A”, và so_tuoi được gán giá trị là 25.
  • Khi gọi hien_thi_thong_tin(ho_ten, so_tuoi): giá trị của biến ho_ten sẽ được gán cho tham số ten, và so_tuoi được gán cho tuoi. Thứ tự truyền tham số ở đây rất quan trọng.
  • Hàm sau đó sẽ: in ra thông tin người dùng.

Ví dụ 2

Python sẽ thông báo lỗi khi số lượng tham số bạn truyền vào không khớp với số lượng tham số đã được định nghĩa trong hàm. Ví dụ, nếu bạn định nghĩa một hàm có hai tham số vị trí, nhưng bạn chỉ truyền vào một tham số, bạn sẽ gặp phải lỗi. Hãy xem xét đoạn code sau:

def tinh_thuong(a, b):
  thuong = a / b
  print(thuong)

x = 20
tinh_thuong(x)

Kết quả, khi chạy đoạn code trên bạn sẽ nhận được thông báo lỗi như sau:

TypeError: tinh_thuong() missing 1 required positional argument: ‘b’

Giải thích code:

  • def tinh_thuong(a, b):: Hàm tinh_thuong được định nghĩa để nhận hai tham số vị trí là ab. Mục đích của hàm là tính thương (phép chia) của hai số ab, sau đó in ra kết quả.
  • x = 20: Một biến x được khai báo và gán giá trị 20.
  • tinh_thuong(x): Chúng ta gọi hàm tinh_thuong nhưng chỉ truyền vào một tham số x, trong khi hàm được định nghĩa với hai tham số ab. Đây chính là nguyên nhân gây ra lỗi.

Ví dụ 3

Tương tự như việc truyền thiếu tham số, nếu bạn cố tình truyền nhiều hơn số lượng tham số hình thức mà hàm yêu cầu, Python sẽ báo lỗi. Hãy xem qua hàm add đơn giản sau đây:

def add(x, y):
    z = x + y
    print("x={} , y={} , x+y={}".format(x, y, z))

add(10, 20, 30)

Khi bạn chạy đoạn code trên, bạn sẽ gặp thông báo lỗi sau:

TypeError: add() takes 2 positional arguments but 3 were given

Giải thích Code và Diễn Giải Chi Tiết:

  • def add(x, y):: Hàm add được định nghĩa với hai tham số hình thức là xy, cả hai đều là tham số vị trí.
  • z = x + y: Hàm này chỉ đơn giản thực hiện phép cộng hai số và lưu kết quả vào biến z.
  • print("x={} , y={} , x+y={}".format(x, y, z)): Hàm sẽ in giá trị của x, y và tổng x+y lên màn hình.
  • add(10, 20, 30): Tại đây, khi gọi hàm, ta đã truyền vào 3 tham số (10, 20 và 30), trong khi hàm add chỉ được định nghĩa với hai tham số vị trí.
  • TypeError: add() takes 2 positional arguments but 3 were given: Thông báo lỗi TypeError: add() takes 2 positional arguments but 3 were given cho thấy rõ ràng vấn đề: hàm add chỉ chấp nhận 2 tham số vị trí, nhưng thực tế lại được gọi với 3 tham số. Đây là một lỗi phổ biến mà người mới học lập trình hay mắc phải. Python kiểm tra chặt chẽ số lượng tham số, và sẽ không cho phép thực thi nếu bạn cố gắng truyền không đúng số lượng tham số.

Ví dụ 4

Một điểm quan trọng khác cần lưu ý về tham số vị trí (positional arguments) là kiểu dữ liệu của các tham số thực tế và các tham số hình thức tương ứng phải tương thích. Nếu không, chương trình sẽ báo lỗi. Hãy xem xét ví dụ sau, trong đó chúng ta cố gắng cộng một chuỗi (string) và một số nguyên (integer):

def add(x, y):
    z = x + y
    print(z)

a = "Xin chào " # Thay đổi a thành một chuỗi
b = 20
add(a, b)

Khi thực thi đoạn code trên, Python sẽ báo lỗi như sau:

z = x + y

        ~^~

TypeError: can only concatenate str (not “int”) to str

Giải thích code:

  • def add(x, y):: Hàm add được định nghĩa với hai tham số hình thức là xy. Cả hai tham số này đều là tham số vị trí.
  • a = "Xin chào ", b = 20: Biến a được gán một chuỗi "Xin chào "b được gán giá trị số nguyên là 20.
  • add(a, b): Chúng ta gọi hàm add và truyền vào các giá trị ab cho tham số xy tương ứng.
  • TypeError: can only concatenate str (not "int") to str: Lỗi TypeError xuất hiện vì Python không thể thực hiện phép cộng giữa một chuỗi và một số nguyên trực tiếp. Nó thông báo rằng bạn chỉ có thể ghép chuỗi với chuỗi, không thể ghép chuỗi với số nguyên.

Sự khác biệt giữa positional arguments và keyword arguments trong Python

Khi định nghĩa và sử dụng hàm trong Python, bạn có thể truyền dữ liệu vào hàm thông qua hai loại tham số chính: tham số vị trí và tham số từ khóa. Sự khác biệt cơ bản giữa hai loại tham số này được trình bày trong bảng dưới đây:

Tham Số Vị Trí (Positional Arguments)Tham Số Từ Khóa (Keyword Arguments)
Chỉ sử dụng tên của các tham số để truyền dữ liệu vào hàm.Truyền tham số cho hàm bằng cách sử dụng cú pháp tên_tham_số = giá_trị.
Thứ tự truyền tham số phải trùng khớp với thứ tự khai báo các tham số trong định nghĩa hàm.Khi truyền tham số, thứ tự không quan trọng, bạn có thể thay đổi thứ tự của chúng
Cú pháp: function(param1, param2, ...)Cú pháp: function(param1=value1, param2=value2, ...)

Lời kết

Vậy là chúng ta vừa cùng nhau tìm hiểu chi tiết về Positional Arguments trong Python, một khái niệm quan trọng giúp chúng ta truyền đối số vào hàm một cách có trật tự. Hy vọng qua bài viết này, bạn đã nắm vững cách sử dụng và vận dụng Positional Arguments để viết code Python hiệu quả hơn.

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn