Hàm python chỉ cho phép một số đối số nhất định

So với nhiều ngôn ngữ lập trình khác, mỗi khi viết một hàm trong Python bạn thực sự không cần quan tâm đến các kiểu dữ liệu. Tất nhiên, các loại vẫn được xem xét cho bất kỳ lời gọi hàm hoặc lời gọi thuộc tính nào được thực hiện trong thân hàm, nhưng bất kể là khá dễ dàng để nghĩ những điều này trong khi không thực sự cần đưa chúng vào mã. Ví dụ: hàm sau chỉ in một giá trị

def printer[x]:
print[x]

Chúng ta có thể gọi print trên bất kỳ kiểu dữ liệu nào, vì vậy hàm này sẽ hoạt động với mọi kiểu dữ liệu. Chúng tôi thực sự không cần phải suy nghĩ về loại nào được cung cấp cả. Nếu chúng tôi muốn chỉ định rằng x phải thuộc một loại nhất định, chúng tôi sẽ làm như vậy với dấu hai chấm theo sau là một loại, chẳng hạn

def printer[x : int]:
print[x]

Về mặt cú pháp, điều này sẽ không ảnh hưởng gì đến mã của chúng ta. Theo mọi cách về mặt thực thi, cả hai chức năng này sẽ thực hiện chính xác. Nếu chúng ta truyền một float hoặc một chuỗi thông qua hàm này, chúng ta sẽ không gặp lỗi. Thành thật mà nói, tôi nghĩ rằng Python chắc chắn có thể được hưởng lợi từ Lỗi Phương pháp Julian, bởi vì mặc dù có thể không có kỳ vọng về nhiều lần gửi, nhưng chắc chắn sẽ rất có ý nghĩa khi vẫn giới hạn các loại. MethodErrors chỉ có thể cung cấp nhiều thông tin về các đối số được cung cấp và làm cho mọi thứ dễ dàng hơn để kiểm tra hoặc “đoán” mà không cần tài liệu

Một điều mà tôi thích ở Julia, không phải so sánh quá nhiều, đó là các lỗi phương pháp của Julia cung cấp ngữ cảnh về những gì bạn đang làm sai. Python chỉ có ArgumentErrors, mà tôi cho rằng có thể được coi là một cái gì đó tương tự, nhưng hãy tưởng tượng nếu bạn có một cái gì đó giống như

ArgumentError No method matching printer[x : int]
closest candidates are
printer[x : float]

Hoặc có lẽ tôi chỉ muốn Python là Julia, tôi không biết

Và trong cả hai trường hợp, một ArgumentError khác về mặt ngữ nghĩa với MethodError, mặc dù trong những trường hợp này, tôi nghĩ rằng tên này có thể được thay thế cho nhau, vì nó sẽ là cả đối số và phương thức bao thanh toán để tạo ra lỗi

Tại sao gõ đối số?

Bây giờ chúng ta đã đề cập đến cách nhập một đối số và xác định rằng nó thực sự không làm được gì nhiều về cách ngôn ngữ tương tác với dữ liệu, có lẽ chúng ta nên đặt câu hỏi tại sao. Ý tôi là nếu việc đặt một loại cho các đối số của chúng ta không làm được gì ngoài việc chiếm khoảng trắng, thì tại sao chúng ta lại phải dành thời gian để nhập nội dung này vào?

Một điều quan trọng cần xem xét là hầu hết các dự án sẽ được đọc bởi nhiều người. Trong ví dụ về hàm printer[] ở trên, có những lớp không thể in được bằng hàm này. Điều đó đang được nói, những loại giá trị được cung cấp có khả năng gây ra một số đầu ra lỗi khó hiểu trong đó một lệnh gọi khác bên trong hàm đang được gọi sai loại. Hơn nữa, nếu chúng ta không nhập các đối số của mình và một người khác đang đọc hàm này, thì thực sự sẽ không rõ ràng chúng ta đang dự đoán loại nào ngoài việc đặt tên cho đối số đó và các lệnh gọi hàm được sử dụng trên nó. Điều đó đang được nói, với một số loại có thể gây ra nhiều vấn đề, vì không phải tất cả các đối tượng Python đều được bao gồm trong Python nhờ các hàm tạo

Một lý do khác để nhập đối số của bạn là nó sẽ cung cấp tài liệu với thông tin này. Python có rất nhiều công cụ tài liệu tự động và hầu hết đều sử dụng công cụ này. Một trong những điều quan trọng nhất mà ai đó sẽ cần biết để sử dụng một hàm là các đối số và loại đối số sẽ là gì. Xem xét điều này, có lẽ điều khá quan trọng là tài liệu biểu thị loại nào sẽ được cung cấp cho đối số nào

Lý do cuối cùng mà tôi nhập các đối số của mình là vì nó làm cho hàm có thể lập trình meta nhiều hơn thông qua các bộ trang trí hàm. Một ví dụ tuyệt vời về nơi điều này phát huy tác dụng là với mô-đun nhiều công văn, đây thực sự là một mô-đun khá tuyệt vời. Nếu bạn muốn tìm hiểu thêm về mô-đun đó, tôi thực sự đã viết cả một bài báo về nó nên đây là liên kết

Đa hình tham số hoàn hảo trong Python với multidispatch

Sử dụng mô-đun Multiple Dispatch của Python để đa hình hóa cuộc sống của tôi

hướng tới khoa học dữ liệu. com

Không có gì làm tôi hạnh phúc hơn đa hình

Bớt tư tưởng

Trong về mặt cú pháp, tôi cảm thấy thật kỳ lạ khi đến từ các ngôn ngữ khác mà loại đối số bị bỏ qua một cách trắng trợn. Tôi cảm thấy sẽ khá tuyệt nếu trình thông dịch Python tương tác với các loại đối số nhiều hơn một chút, giống như với mô-đun nhiều công văn, tuy nhiên tôi nghĩ điều đó hơi chủ quan vì điều đó được lập trình viên Julia lồng tiếng. Điều đó đang được nói, bất kể nó thực sự làm gì với mã Python của bạn, tôi nghĩ bạn nên nhập các đối số cho các hàm của mình.

Nhập các đối số của bạn cung cấp nhiều ngữ cảnh cho một hàm. Tôi đã nói cụm từ này trước đây, nhưng bây giờ tôi sẽ nói lại lần nữa, phần quan trọng nhất của hàm là đầu vào và đầu ra. Bất cứ khi nào tôi muốn chia nhỏ một chức năng, đó luôn là nơi tôi đến - nó lấy cái gì, nó cho cái gì, và sau đó làm thế nào để chúng ta có được từ cái nó cần đến cái nó cho - nhìn bề ngoài thì khái niệm này khá đơn giản. Thật tuyệt khi có thêm ngữ cảnh về những thứ này, đặc biệt là trong trường hợp chúng tôi đang chia sẻ mã này với những người khác. Điều này cũng đưa vào tài liệu, đây thậm chí còn là lý do để nhập các đối số của bạn. Cảm ơn bạn đã đọc và tôi hy vọng rằng bây giờ với công cụ này, các chức năng của bạn cuối cùng sẽ được cải thiện ở một mức độ nào đó

Hàm có thể nhận 3 đối số không?

Chúng ta truyền đối số trong một hàm, chúng ta không thể truyền đối số nào cả, một đối số hoặc nhiều đối số cho một hàm và có thể gọi hàm .

Làm cách nào để tạo một hàm chấp nhận bất kỳ số lượng đối số nào trong Python?

Để tạo một hàm chấp nhận bất kỳ số lượng đối số nào, bạn có thể sử dụng toán tử * và sau đó là một số tên biến khi xác định các đối số của hàm . Điều này cho Python biết rằng khi hàm đó được gọi với bất kỳ đối số vị trí nào, tất cả chúng sẽ được ghi vào một bộ [mà biến đó sẽ trỏ đến].

Bạn có thể chỉ định loại đối số trong Python không?

Thông tin có thể được truyền vào 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.

Làm cách nào chúng ta có thể tạo tham số của hàm tùy chọn trong Python?

Một loại đối số có giá trị mặc định là tham số tùy chọn Python. Toán tử gán của định nghĩa hàm hoặc câu lệnh **kwargs của Python có thể được sử dụng để gán một đối số tùy chọn . Đối số vị trí và đối số tùy chọn là hai loại đối số mà hàm Python có thể nhận.

Chủ Đề