Điều gì được coi là một đối số trong Python?

Các đối số thường tương phản với các tham số, là các tên được sử dụng để chỉ định những đối số nào mà một hàm sẽ cần khi nó được gọi. Khi một hàm được gọi, mỗi tham số được gán một trong các giá trị đối số

# foo has two named parameters, x and y def foo ( x, y ): return x + y z = foo( 3, 6 )

def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
5 được đưa ra hai đối số, 3 và 6. Đối số đầu tiên được gán cho tham số đầu tiên, def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
6. Đối số thứ hai được gán cho tham số thứ hai, def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
7

Các ngôn ngữ lập trình khác nhau có cú pháp khác nhau, nhưng hàm là một trong những khái niệm mà chúng không bao giờ tránh khỏi. Khi chúng ta đề cập đến các hàm hoặc phương thức, trong hầu hết các trường hợp, chúng ta sẽ truyền đối số cho các hàm này

Là một trong những ngôn ngữ lập trình linh hoạt và năng động nhất, Python có một số quy tắc đặc biệt về việc truyền đối số hàm. Điều này là để cho phép các nhà phát triển thực hiện công việc của họ với sự linh hoạt tối đa. Tuy nhiên, người mới có thể không dễ dàng nắm vững tất cả các tiêu chuẩn này

Trong bài viết này, tôi sẽ sử dụng các ví dụ để trình bày tất cả các quy tắc này bao gồm các tham số độ dài biến bắt buộc, tùy chọn, từ khóa và không phải từ khóa, đối số vị trí và từ khóa

0. Định nghĩa các tham số và đối số

Hình ảnh được cung cấp bởi Gerd Altmann từ Pixabay

Tôi không phải là người thích ghi nhớ các khái niệm hay định nghĩa. Tuy nhiên, cần làm rõ một số từ khóa mà chúng ta sẽ sử dụng nhiều trong bài viết này để tiện theo dõi.

Có thể gây nhầm lẫn khi chúng ta nói tham số và đối số. Một số có thể nghĩ rằng họ giống nhau. Tuy nhiên, người ta thường chấp nhận rằng chúng khác nhau như sau

  • Tham số là các biến trong định nghĩa của hàm. Nói cách khác, chúng tồn tại trong chữ ký hàm và sẽ được sử dụng làm biến trong thân hàm
  • Đối số là các giá trị thực được truyền cho hàm khi chúng ta gọi nó. Nói cách khác, một đối số có thể là một số nguyên, một chuỗi hoặc bất kỳ đối tượng nào
1. Thông số bắt buộc và tùy chọn

Hình ảnh được cung cấp bởi Pexels từ Pixabay

Trong Python, chúng ta có thể dễ dàng định nghĩa một hàm với các tham số bắt buộc và tùy chọn. Tức là khi chúng ta khởi tạo một tham số với giá trị mặc định, nó sẽ trở thành tùy chọn. Nếu không, tham số sẽ là bắt buộc

def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)

Trong ví dụ trên, def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
1 và def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
2 là bắt buộc vì chúng không được khởi tạo trong định nghĩa hàm. Vì vậy, nếu chúng ta gọi hàm mà không truyền đối số cho chúng, nó sẽ báo lỗi

Đối với các tham số tùy chọn, chúng tôi không phải truyền bất kỳ đối số nào. Nếu không, giá trị mặc định sẽ được sử dụng

my_func(man1='a', man2='b')

1. 1 Tất cả các tham số bắt buộc phải ở phía trước

Khi chúng ta muốn xác định một hàm có cả tham số bắt buộc và tùy chọn, tất cả tham số bắt buộc phải ở trước tất cả tham số tùy chọn

def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)

Điều này là do Python cho phép các đối số vị trí sẽ được giới thiệu trong phần tiếp theo. Nếu được phép định nghĩa một hàm như trên, khi chúng ta truyền đối số vị trí def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
3, sẽ khá bối rối không biết đó là tham số tùy chọn def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
4 hay tham số bắt buộc def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
1. Quá không đáng tin cậy để quyết định điều này dựa trên số lượng đối số

2. Đối số vị trí và Đối số từ khóa

Hình ảnh được cung cấp bởi Gino Crescoli từ Pixabay

2. 1 Đối số vị trí là gì?

Khi chúng ta truyền đối số cho một hàm. Chúng tôi không phải đặt tên tham số, miễn là chúng tôi sẽ chuyển các đối số về vị trí ban đầu của chúng. Đó là lập luận lập trường

# my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')

2. 1 Đối số từ khóa không phân biệt vị trí

Khi một đối số không phải là vị trí, nó phải là một đối số từ khóa. Khi chúng ta đề cập rõ ràng tên tham số của một đối số, nó sẽ trở thành một đối số từ khóa

Mặc dù chúng ta cần gõ nhiều từ hơn nhưng sẽ thuận tiện hơn khi chúng ta sử dụng đối số từ khóa, vì vị trí sẽ không nhạy nên chúng ta không cần quan tâm đến vị trí

def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
0

Trong ví dụ trên, chúng tôi vượt qua def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
2 trước def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
1

2. 2 Đối số Vị trí cho cả Tham số Bắt buộc và Tùy chọn

Đối số vị trí không chỉ dành cho các tham số bắt buộc. Miễn là chúng ta theo dõi vị trí, nó cũng có thể được chuyển đến các tham số tùy chọn

def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
3

2. 3 Kết hợp Đối số Vị trí và Từ khoá

Chúng ta cũng có thể kết hợp hai loại lập luận này. Điều này thường hiệu quả khi chúng ta muốn sử dụng một hàm có một vài tham số bắt buộc nhưng lại có nhiều tham số tùy chọn

Ví dụ: chúng ta có thể chuyển hai đối số vị trí cho hai tham số bắt buộc tương ứng, sau đó bỏ qua tham số tùy chọn đầu tiên bằng cách sử dụng đối số từ khóa cho tham số tùy chọn thứ hai

def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
4

2. 4 Đối số vị trí phải ở phía trước

Cho đến nay nó rất linh hoạt, phải không? . Nghĩa là, tất cả các đối số vị trí phải ở trước tất cả các đối số từ khóa

def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
5

Hai lệnh gọi hàm trên không hợp lệ

Có lý do tại sao Python không chấp nhận điều này. Giả sử chúng ta có bốn tham số def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
8, def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
9, # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')0 và # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')1

  • Nếu chúng ta có các đối số def my_func(opt1=0, man1, man2, opt2=''):
    print('man1:', man1)
    print('man2:', man2)
    print('opt1:', opt1)
    print('opt2:', opt2)
    3, # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')3 và # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')4, thì rõ ràng là # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')5, # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')6 và # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')4
  • Nếu chúng ta có đối số # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')6 và # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')9, sẽ rất khó hiểu đối số # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')9 nên được chuyển cho def my_func(opt1=0, man1, man2, opt2=''):
    print('man1:', man1)
    print('man2:', man2)
    print('opt1:', opt1)
    print('opt2:', opt2)
    8 hoặc # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')0. Nó cần nhiều quy tắc nhân tạo hơn để khắc phục điều này và các nhà phát triển cần ghi nhớ nó

2. 5 Thực thi các đối số từ khóa

Có một mẹo trong Python để thực thi lệnh gọi hàm sử dụng đối số từ khóa thay vì vị trí. Chúng ta có thể thêm dấu hoa thị vào danh sách tham số chức năng và bất kỳ tham số nào ở bên phải chỉ có thể được chuyển bằng đối số từ khóa

def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
1

Nếu chúng ta cố gắng sử dụng các đối số vị trí cho cả hai, sẽ xảy ra lỗi

def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
2

Tuy nhiên, nếu chúng tôi sử dụng đối số từ khóa cho def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
2, sẽ không có vấn đề gì

my_func(man1='a', man2='b')0

3. Thông số độ dài thay đổi

Hình ảnh được cung cấp bởi Rudy và Peter Skitterians từ Pixabay

Trong Python, chúng ta có thể định nghĩa hai loại tham số có độ dài thay đổi. Chúng có thể được coi là các loại tham số tùy chọn đặc biệt. Nói cách khác, không có giới hạn về số lượng đối số được truyền cho tham số khi chúng ta gọi hàm này

3. 1 Tham số có độ dài thay đổi — *args

Tham số def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
04 là một cú pháp như vậy khi chúng ta muốn định nghĩa một tham số có độ dài thay đổi

my_func(man1='a', man2='b')1

Khi chúng ta gọi hàm này, chúng ta có thể truyền bao nhiêu đối số tùy thích. Chúng sẽ có thể truy cập được trong hàm dưới dạng Tuple

3. 2 Tham số độ dài biến đổi của từ khóa — **kwargs

Loại tham số có độ dài thay đổi khác là với từ khóa. Tên def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
05 là viết tắt của KeyWord ARGumentS

my_func(man1='a', man2='b')2

Khi chúng ta gọi hàm và muốn truyền các đối số cho tham số def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
05, chúng ta cần chỉ định khóa và giá trị cho từng đối số

Như trong ví dụ, các đối số sẽ được nhận dưới dạng từ điển

Ngoài ra còn có một hạn chế là chúng ta không thể sử dụng bất kỳ phím nào có tham số đặc biệt. Về cơ bản, các khóa phải tuân theo cú pháp của tên biến Python

3. 3 Kết hợp các tham số độ dài biến của từ khóa và không phải từ khóa

Chúng ta có thể sử dụng cả tham số độ dài biến từ khóa và không phải từ khóa trong một hàm. Tuy nhiên, không được phép đặt từ khóa một trước từ khóa không phải từ khóa

my_func(man1='a', man2='b')3

Cách khác xung quanh sẽ làm việc

my_func(man1='a', man2='b')4

Điều này khá giống với quy tắc mà chúng ta không thể có đối số từ khóa trước bất kỳ đối số vị trí nào

3. 4 Có thể đổi tên “*args” và “**kwargs”

Mình thấy một số bạn học không biết ta có thể đổi tên 2 tham số có độ dài thay đổi này. Họ nghĩ rằng đây là những từ khóa dành riêng trong Python và được thực thi theo cú pháp

Trên thực tế, điều đó không chắc chắn. Chúng ta có thể sử dụng bất kỳ tên nào trong số chúng. Điều quan trọng duy nhất là sử dụng dấu sao đơn cho các tham số có độ dài thay đổi và dấu hoa thị kép cho các từ khóa

my_func(man1='a', man2='b')5

4. Kết hợp tất cả các loại tham số

Hình ảnh được cung cấp bởi Gundula Vogel từ Pixabay

4. 1 Tham số độ dài biến của từ khóa phải là tham số cuối cùng

Chúng ta có thể sử dụng cả 4 loại tham số trong một hàm. Tất nhiên, có một số quy tắc bắt buộc

Vì tham số độ dài biến của từ khóa yêu cầu chúng ta chuyển các đối số bằng từ khóa nên nó phải ở cuối hàng đợi tham số

my_func(man1='a', man2='b')6

4. 2 A Trap khi dùng cả 4 loại

Khi chúng tôi đang sử dụng tất cả bốn loại tham số trong một chức năng, có một cái bẫy cần được quan tâm nhiều hơn

Giả sử chúng ta định nghĩa hàm như sau

my_func(man1='a', man2='b')7

Khi chúng ta gọi hàm này, tham số tùy chọn và tham số độ dài thay đổi có thể dễ bị nhầm lẫn. Xét lời gọi hàm sau

my_func(man1='a', man2='b')8

Giá trị def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
3 được coi là giá trị cho tham số tùy chọn. Trong trường hợp này, tham số tùy chọn không còn là tùy chọn nữa. Lệnh gọi hàm sau hợp lệ nếu chúng ta muốn cả def my_func(opt1=0, man1, man2, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
3, # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')3 và # my_func(man1, man2, opt1=0, opt2='')my_func('a', 'b')9 đều được chuyển đến def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
31

Vấn đề này có thể được giải quyết bằng cách điều chỉnh vị trí của các tham số khi chúng ta xác định chức năng

my_func(man1='a', man2='b')9

Nếu đổi vị trí của def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
31 và def my_func(man1, man2, opt1=0, opt2=''):
print('man1:', man1)
print('man2:', man2)
print('opt1:', opt1)
print('opt2:', opt2)
33 thì có thể gọi hàm như sau để tham số tùy chọn vẫn là tùy chọn

my_func(man1='a', man2='b')8

Tóm lược

Hình ảnh được cung cấp bởi Tibor Lezsófi từ Pixabay

Trong bài viết này mình đã giới thiệu cả 4 loại tham số và 2 loại đối số trong Python. Các tham số là các biến trong một hàm, trong khi các đối số là các giá trị được truyền cho các tham số khi gọi hàm

Các tham số có thể là bắt buộc hoặc tùy chọn. Đối với các tham số tùy chọn, chúng có thể có độ dài thay đổi có hoặc không có từ khóa. Các đối số có thể là vị trí dựa vào vị trí để quyết định với giá trị là tham số nào. Hoặc, chúng ta có thể chuyển giá trị một cách rõ ràng bằng từ khóa, đó là đối số từ khóa

Tham gia Medium với liên kết giới thiệu của tôi - Christopher Tao

Là thành viên Phương tiện, một phần phí thành viên của bạn sẽ được chuyển đến các tác giả mà bạn đã đọc và bạn có toàn quyền truy cập vào mọi câu chuyện…

trung bình. com

Nếu bạn cảm thấy bài viết của tôi hữu ích, hãy cân nhắc tham gia Medium Membership để ủng hộ tôi và hàng ngàn người viết khác. (Nhấp vào liên kết ở trên)

4 loại đối số trong Python là gì?

Trong Python, chúng ta có 4 loại đối số hàm sau. .
Đối số mặc định
Đối số từ khóa (đối số được đặt tên)
đối số vị trí
Đối số tùy ý (đối số có độ dài thay đổi *args và **kwargs )

3 loại đối số trong Python là gì?

Do đó, chúng tôi kết luận rằng Đối số hàm Python và ba loại đối số hàm của nó. Đây là- các đối số mặc định, từ khóa và tùy ý .

Đối số trong mã chức năng là gì?

Đối số là một cách để bạn cung cấp thêm thông tin cho một hàm . Sau đó, hàm có thể sử dụng thông tin đó khi nó chạy, giống như một biến. Nói cách khác, khi bạn tạo một hàm, bạn có thể truyền dữ liệu dưới dạng đối số, hay còn gọi là tham số.

Danh sách có thể là đối số trong Python không?

Bạn có thể gửi bất kỳ loại dữ liệu nào của đối số tới một hàm (chuỗi, số, danh sách, từ điển, v.v. ) và nó sẽ được coi là cùng một loại dữ liệu bên trong hàm .

Chủ đề