Hàm do người dùng định nghĩa theo cú pháp Python

Hàm do người dùng định nghĩa là một khối mã có thể tái sử dụng mà bạn [lập trình viên] tạo từ đầu để thực hiện một nhiệm vụ cụ thểk bạn chọn một hoặc nhiều lần

Không giống như các chức năng tích hợp sẵn được bao gồm trong ngôn ngữ lập trình Python mới nhất, một chức năng do người dùng xác định cho phép bạn có chức năng tạo công cụ tùy chỉnh hoàn toàn của riêng mình;

Ưu điểm cốt lõi của việc sử dụng hàm do người dùng xác định trong mã nguồn của bạn là tính linh hoạt. Nó cung cấp cho bạn sức mạnh để thực hiện lặp đi lặp lại một nhiệm vụ nhất định mà không cần phải viết lại toàn bộ chương trình của bạn theo từng dòng

Trong hướng dẫn này, tôi sẽ dạy bạn về các hàm do người dùng định nghĩa và cú pháp của chúng

  • từ khóa chắc chắn
  • xác định thân hàm
  • tham số và đối số
  • tham số mặc định
  • khẳng định điều kiện tiên quyết
  • chức năng đoản mạch với từ khóa return
  • xác định docstrings
  • *args [đối số]
  • **kwargs [từ khóa-đối số],
  • phạm vi [Toàn cầu và địa phương]
  • gọi chức năng của bạn

Mục lục

  • Cấu trúc hàm do người dùng định nghĩa trong Python
  • Cách gọi một hàm trong Python
  • Thông số so với. Tranh luận
    • Đối số mặc định
    • Các đối số có tiền tố * và ** có thuộc tính đặc biệt nào? . g. *args, **kwargs]
      • * lập luận
      • **kwargs
  • Tài liệu [Docstrings]
  • Tuyên bố trở lại
  • Khẳng định điều kiện tiên quyết
  • Phạm vi địa phương và Phạm vi toàn cầu
  • Ví dụ thực tế về lý do tại sao các chức năng do người dùng xác định lại quan trọng
    • Thí dụ
  • Sự kết luận

Cấu trúc hàm do người dùng định nghĩa trong Python

Các hàm trong Python tuân theo một cú pháp cụ thể với ít biến thể. Cú pháp này phải được tuân theo, nếu không, bạn sẽ nhận được thông báo lỗi từ bảng điều khiển Python

Trong khối mã bên dưới, bạn sẽ tìm thấy cú pháp tiêu chuẩn của hàm do người dùng Python xác định.
def function_name[parameters]:
    """docstring"""
    statement[s]
    return

Việc xác định một hàm yêu cầu sử dụng từ khóa Python tích hợp sẵn def, cho Trình thông dịch Python biết rằng bạn sẽ xác định thân hàm

Từ khóa def cần phải được theo sau bởi tên của chức năng

Thông thường, khi tôi đặt tên cho một hàm, tôi tuân theo thông lệ chung là đặt tên cho hàm của mình dựa trên hành động sẽ được thực hiện bởi hàm đó. Theo quy ước, tôi viết tên các chức năng của mình theo một mẫu chuẩn gọi là “trường hợp rắn” [ví dụ. Tên chức năng]

Tên hàm [ở định dạng Snake Case]Hành động [Nhiệm vụ mà hàm hoàn thành. ]upper_caseChuyển đổi tất cả các ký tự chữ cái trong chuỗi thành chữ hoa. Lower_caseChuyển đổi tất cả các ký tự chữ cái trong chuỗi thành chữ thường. times_twoNhân hai số nguyên bất kỳ. Các ví dụ về trường hợp rắn để đặt tên cho các hàm do người dùng xác định trong Python

Các tham số bên trong dấu ngoặc đơn sẽ truyền một số giá trị vào hàm này. Các tham số là tùy chọn;

Sau dấu ngoặc đơn, bạn phải nhập dấu hai chấm ở cuối tiêu đề hàm để thông báo cho Trình thông dịch Python rằng đây là phần cuối của dòng đầu tiên trong hàm của chúng ta

Tiếp theo, chúng ta phải xem xét Docstring của mình;

Chẳng hạn, chức năng của bạn cũng nên bao gồm ít nhất một câu lệnh hợp lệ làm cho chức năng trở nên hữu ích;

Cuối cùng, câu lệnh return sẽ trả về giá trị cuối của hàm;

Sau khi thực hiện một hành động cụ thể mà bạn chọn, giá trị được trả về này có thể được lưu trữ trong một biến bằng cách gán hàm của bạn cho một biến trong khi nó đang được gọi, chúng ta cũng sẽ khám phá chủ đề này sau, nhưng trước tiên, hãy xem qua

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]

Cách gọi một hàm trong Python

Đoạn mã trên là một ví dụ đơn giản về việc tạo chức năng của riêng bạn để chào người dùng, sau đó in lời chào đó ra Bảng điều khiển Python nơi người dùng có thể đọc được

Khối mã bên dưới cho biết cách gọi hàm “chào hỏi” do người dùng định nghĩa của chúng tôi. Lưu ý cách chức năng của chúng tôi không cần dấu gạch dưới trong tên của nó vì nó chỉ được đặt tên bằng một từ [lời chào], mặc dù nó vẫn ở định dạng chữ hoa chữ thường

greeting["Biden"]

đầu ra

Hello Biden

Lưu ý rằng chúng tôi đã viết “Biden” trong dấu ngoặc đơn của hàm khi gọi hàm

Chuỗi “Biden” được gọi là một đối số được gán cho tham số “tên” được xác định trong tiêu đề hàm của chúng tôi. Bây giờ chúng ta sẽ khám phá các tham số và đối số

Thông số so với. Tranh luận

Hầu hết các lập trình viên Python mới làm quen không biết sự khác biệt giữa các tham số và đối số, vì vậy hãy phân biệt chúng là gì…

Thông số. [các] từ khóa tùy ý nằm trong dấu ngoặc đơn của định nghĩa hàm, hoạt động như một trình giữ chỗ, tương tự như một biến, nó lưu trữ các giá trị có thể được truy cập để thao tác và tính toán dữ liệu sau khi hàm được gọi

Tranh luận. [các] giá trị được truyền cho một hàm, sau đó được lưu trữ trong các tham số để sử dụng tính toán, thao tác dữ liệu hoặc các tác vụ quan trọng khác hỗ trợ mục đích của một hàm trong chương trình

  • đối số vị trí– một đối số trong đó giá trị được lưu trữ trong tham số được gán cho tham số đó dựa trên vị trí của đối số trong dấu ngoặc đơn và không được gán trực tiếp cho tham số bằng toán tử gán “=”, giống như phép gán biến, ví dụ:. chức năng[“Biden”]
  • đối số từ khóa– một đối số được gán trực tiếp cho một tham số với toán tử gán “=”, tương tự như gán biến, ví dụ:. hàm[tên=”Biden”]
def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
   
greeting["Biden"]
greeting[name="Biden"]

đầu ra

Hello Biden

Hello Biden

Đối số mặc định

Đối số mặc định là đối số từ khóa được gán trong định nghĩa hàm thay vì khi hàm được gọi

Mặc dù vậy, khi hàm được gọi, người dùng có cơ hội sử dụng đối số mặc định được gán cho tham số từ khóa bằng cách gọi hàm mà không chuyển bất kỳ giá trị mới nào cho đối số từ khóa

Mặt khác, người dùng có thể ghi đè giá trị được lưu trữ trong tham số từ khóa bằng cách chuyển một giá trị mới cho tham số từ khóa trong khi gọi hàm, tốt nhất là cùng loại dữ liệu với đối số từ khóa mặc định để tránh gặp phải bất kỳ lỗi nào trong chương trình của bạn

def hello[greeting="Hello"]:
    print[f"{greeting}, what is your name?"]

hello[greeting='Hi there'] # overwriting the default argument

đầu ra

Hi there, what is your name?

Nói về lập luận, hãy thảo luận thêm hai loại lập luận nữa…

Các đối số có tiền tố * và ** có thuộc tính đặc biệt nào? . g. *args, **kwargs]

Khi tạo một hàm, chúng ta phải làm cho nó có thể nhận các giá trị để nó có thể được sử dụng nhiều lần bên trong [các] tập lệnh của bạn, nhưng nếu bạn không chắc chắn về số lượng đối số mà bạn sẽ cần truyền cho hàm của mình thì sao?

Hãy xem một ví dụ nhỏ

________số 8

đầu ra

Traceback [most recent call last]:
  File "main.py", line 5, in 
    update[[1, 2, 3], ["a", "b", "c"]]
TypeError: update[] takes 1 positional argument but 2 were given

Khi chạy mã ở trên, bạn sẽ gặp lỗi nói rằng “cập nhật [] nhận 1 đối số vị trí nhưng 2 đối số đã được đưa ra”

Điều này xảy ra vì trình thông dịch Python dự kiến ​​chỉ có một đối số [danh sách] chứ không phải nhiều đối số [danh sách]

* lập luận

Đây là sức mạnh của tham số *args. Hãy sửa đoạn mã trên và xem kết quả mới

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
0

đầu ra

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
1

Bây giờ hàm có thể nhận nhiều danh sách và biến và sử dụng chúng mà không gặp bất kỳ lỗi nào

Một điều khác *args có thể thực hiện là truy cập một mục cụ thể bên trong một chuỗi

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
2

đầu ra

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
3

Mã có thể truy cập bất kỳ mục cụ thể nào bên trong bộ đối tượng đã cho. Có, *args lưu trữ các chuỗi giá trị trong một đối tượng tuple

Một điều khác tôi muốn đề cập trước khi bắt đầu sử dụng và lợi ích của **kwargs là các hàm cũng có thể chấp nhận các đối số với cú pháp key=value

Hãy xem một ví dụ

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
4

đầu ra

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
5

**kwargs

Vì chúng ta đã tạo một hàm có thể chấp nhận ba tham số nên mọi thứ sẽ hoạt động tốt khi gọi hàm có ba đối số

Nhưng, nếu bạn không biết chúng ta cần bao nhiêu đối số cho hàm thì sao?

Đây là sức mạnh của **kwargs

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
6

đầu ra

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
7

**kwargs làm cho chức năng của bạn có thể chấp nhận nhiều từ khóa mà không chỉ định số lượng đối số

Trước khi tiếp tục, hãy tóm tắt nhanh về các tham số và đối số

Từ khóa bên trong dấu ngoặc đơn của định nghĩa hàm được gọi là tham số. Bạn có thể đặt tên bất cứ thứ gì bạn muốn, mặc dù cách tốt nhất là đặt tên mô tả loại dữ liệu sẽ được chuyển đến hàm dưới dạng đối số sau khi hàm được gọi

Tài liệu [Docstrings]

Để nhắc lại từ trước đó, một chuỗi tài liệu hoàn toàn là tùy chọn, nhưng được khuyên dùng cho các chức năng do người dùng xác định, đặc biệt nếu bạn đang làm việc theo nhóm với các lập trình viên khác

Ngay bên dưới tiêu đề chức năng là nơi bạn đặt tài liệu của mình;

Rất hữu ích khi truy cập tài liệu về hàm do người dùng xác định bên trong Bảng điều khiển Python bằng cách in tên hàm của bạn bằng. __doc__ lệnh/thuộc tính hoặc chuyển tên hàm của bạn sang hàm help[] tích hợp bên dưới

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
8

đầu ra

def greeting[name]:
    """
    This is a simple function
    to pass your name and greeting you
    """
    print["Hello " + name]
9

Tuyên bố trở lại

Cho đến nay, chúng tôi chỉ sử dụng các câu lệnh in trong các chức năng của mình. Đôi khi, chúng tôi có thể không muốn in một giá trị vào Bảng điều khiển Python Thay vào đó, chúng tôi có thể muốn sử dụng một giá trị được tính bởi một hàm cho mục đích hoặc phép tính khác trong tập lệnh của chúng tôi. chúng ta làm gì sau đó?

Hãy xem một ví dụ để hiểu thêm

greeting["Biden"]
0

đầu ra

greeting["Biden"]
1

Khi bạn chạy mã, bạn sẽ không nhận được gì trên màn hình của mình

Điều này xảy ra bởi vì chúng tôi đã thực hiện phép tính nhưng chúng tôi đã không yêu cầu hàm trả lại bất kỳ [các] giá trị nào cho chúng tôi. vì vậy lần này hãy sử dụng câu lệnh return

greeting["Biden"]
2

đầu ra

greeting["Biden"]
3

Bây giờ bạn có thể thấy hàm trả về số 8 hiển nhiên khi nhân 4 hai lần

Lưu ý rằng chúng ta vẫn phải chuyển hàm tính toán của mình cho hàm in khi chúng ta gọi nó trong trường hợp chúng ta muốn thấy giá trị trả về là 8 được in ra Bảng điều khiển Python

Hàm tính toán của chúng tôi cũng có thể được lưu vào một biến trong khi nó đang được gọi, sau đó được sử dụng như bất kỳ giá trị, đối tượng hoặc biểu thức nào khác có thể được lưu vào một biến, xem bên dưới

greeting["Biden"]
4

đầu ra

greeting["Biden"]
3

Lưu ý rằng không có gì trong định nghĩa hàm có thể được thực thi ngoài câu lệnh return bên trong hàm. Vì vậy, trong hầu hết các trường hợp, câu lệnh return sẽ là dòng cuối cùng trong thân hàm của bạn

Quá trình kết thúc chức năng của bạn bằng từ khóa trả về được gọi là rút ngắn chức năng

Khẳng định điều kiện tiên quyết

Khẳng định là một từ khóa trong Python được sử dụng trong một hàm hoặc bất kỳ đâu trong mã python của bạn để gắn cờ lỗi nếu có điều gì đó không hợp lý xảy ra mà bạn đã đặt trước đó. Khẳng định luôn giả định một điều kiện được chỉ định đánh giá là Đúng

Hãy xem một ví dụ cho điều này để hiểu thêm

greeting["Biden"]
6

đầu ra

greeting["Biden"]
7

Đoạn mã trên rõ ràng sẽ hiển thị cho bạn một lỗi, giải thích “AssertionError. Độ tuổi không thể âm”. Từ khóa khẳng định sẽ hữu ích trong chức năng của bạn vì nó cho phép chương trình biết rằng có điều gì đó không ổn với một phần dữ liệu cụ thể

Phạm vi địa phương và Phạm vi toàn cầu

Phạm vi đề cập đến vị trí của một biến trong mã Python của bạn

Phạm vi toàn cầu. Biến toàn cục là một biến được đặt/xác định trong tập lệnh/tệp Python chính của bạn. Một biến toàn cầu có thể được truy cập ở bất cứ đâu trong tập lệnh Python của bạn, gợi ý. toàn cầu hoặc có thể truy cập trên toàn cầu/không dành riêng cho chương trình của bạn

Phạm vi địa phương. Biến cục bộ là một biến được đặt/xác định trong thân hàm, chỉ có thể được truy cập trong hàm đã nói. Vị trí của biến cục bộ đó nằm trong phạm vi cục bộ của hàm vì biến đó là cục bộ/chỉ dành riêng cho hàm

greeting["Biden"]
8

đầu ra

greeting["Biden"]
9

Trong khối mã ở trên, chúng ta có thể thấy rằng biến x cục bộ được in thay vì biến x toàn cục vì câu lệnh in được thực thi trên biến cục bộ, không phải biến toàn cục

Ví dụ thực tế về lý do tại sao các chức năng do người dùng xác định lại quan trọng

Các chương trình của chúng ta thường mô hình hóa các tình huống, sự kiện hoặc vấn đề trong thế giới thực, vì vậy, hãy áp dụng Hàm do người dùng xác định trong Python cho một vấn đề trong thế giới thực trong toán học

Thí dụ

Xác định hàm do người dùng xác định theo ký hiệu tổng

Hello Biden
0

đầu ra

Hello Biden
1

Sự kết luận

Khi các vấn đề kinh doanh công nghệ ngày nay buộc bạn phải tạo ra các giải pháp phần mềm rất lớn và phức tạp;

Cú pháp của người dùng là gì

Các hàm do người dùng xác định giúp bạn đóng gói và sử dụng lại chức năng trong chính sách của mình. Cú pháp khai báo hàm là từ khóa Hàm theo sau là tên của hàm và danh sách các tham số thời gian chạy được phân tách bằng dấu phẩy .

người dùng là gì

Ví dụ về hàm do người dùng xác định . Trong hàm print[], chúng ta đang gọi hàm nhân hai số bằng cách chuyển n1 và n2 làm đối số. Ở đây, print[] là một hàm Python có sẵn. The function can accept two numbers in the form of arguments as it has been defined with two parameters. Within the print[] function, we are calling the function to multiply the two numbers by passing n1 and n2 as arguments. Here, print[] is an in-built Python function.

người dùng là gì

Hàm là một khối mã thực hiện một tác vụ cụ thể . C cho phép bạn xác định các chức năng theo nhu cầu của bạn. Các hàm này được gọi là hàm do người dùng định nghĩa. Ví dụ. Giả sử, bạn cần tạo một hình tròn và tô màu nó tùy thuộc vào bán kính và màu sắc.

Def Myfunc[] trong Python là gì?

Như vậy chúng ta có thể chọn bất kỳ tên nào khi xác định biến mà không cần quan tâm đến các biến bên ngoài hàm . Ví dụ >>> x = 10. >>> def myfunc[]. x = 5. Trong hàm trên, biến x được gán cho 10 bên ngoài hàm và được gán cho 5 bên trong hàm.

Chủ Đề