Hướng dẫn what are the reasons for using functions in python? - lý do sử dụng các hàm trong python là gì?

Tại sao chức năng?

Các chức năng là một phần thiết yếu của hầu hết các ngôn ngữ lập trình. Các chức năng là các đoạn mã có thể tái sử dụng có thể được gọi bằng tên của hàm. Các chức năng có thể được gọi là bất cứ nơi nào trong chương trình Python, bao gồm cả việc gọi các chức năng trong các chức năng khác.

Các chức năng cung cấp một vài lợi ích:

  • Các chức năng cho phép cùng một đoạn mã chạy nhiều lần

  • Các chức năng chia các chương trình dài thành các thành phần nhỏ hơn

  • Các chức năng có thể được chia sẻ và sử dụng bởi các lập trình viên khác

Mỗi chức năng đều có một tên chức năng. Tên chức năng được sử dụng khi hàm được gọi trong một chương trình. Gọi một chức năng có nghĩa là chạy một hàm.

Các chức năng có thể nhận được đầu vào từ chương trình. Đầu vào được cung cấp cho một hàm được gọi là đối số đầu vào hoặc chỉ là đối số. Đối số là mã được truyền đến một hàm làm đầu vào.

Chức năng có thể tạo ra đầu ra. Chúng tôi nói một hàm trả về đầu ra cho chương trình. Đầu ra của một hàm có thể được gán cho một biến để sử dụng trong một chương trình.

Dưới đây là một ví dụ gọi Python's

# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
2 là một hàm:

Trong cuộc gọi chức năng ở trên, tên hàm là
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
3.
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
3 là chức năng năng lượng. Hàm
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
3 tăng một số cho một nguồn điện. Các đối số đầu vào là các số
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
6 và
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
7. Đầu ra chức năng được gán cho biến
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
8. Trong ví dụ này, hàm trả về giá trị
# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
9 (3 được nâng lên công suất 2, 3^2 = 9).3^2 = 9).

  • Chức năng trong Python
  • Xác định và gọi các hàm Python (Tổng quan) 01:2701:27

  • Chức năng trong Python 02:0102:01

  • Các cuộc gọi và định nghĩa chức năng 06:4706:47

  • Đối số thông qua
  • Đối số vị trí 08:3208:32

  • Giá trị tham số mặc định có thể thay đổi 06:2606:26

  • BY-BY-VALUE VS PASS-BY-EPENEPED trong C ++ 10:2910:29

  • BY-BY-VALUE VS PASS-BY-EPENEPED IN PYTHON 07:2207:22

  • Vượt qua các đối tượng có thể thay đổi và tác dụng phụ 03:5103:51

  • Tuyên bố trả lại
  • Trả dữ liệu cho người gọi 05:5705:57

  • Tránh tác dụng phụ 07:1707:17

  • Danh sách đối số có độ dài thay đổi
  • Đối số Tuple Đóng gói 05:4405:44

  • Đối số tuple giải nén 04:4604:46

  • Đóng gói từ điển đối số và giải nén 04:2304:23

  • Đặt tất cả lại với nhau 02:4502:45

  • Nhiều gói trong một chức năng Gọi 05:2005:20

  • Các đối số chỉ dành cho từ khóa và chỉ có vị trí
  • Đối số chỉ từ khóa 08:0808:08

  • Tham số đối số biến trần 06:1806:18

  • Đối số chỉ có vị trí 04:2704:27

  • Docstrings và chú thích chức năng
  • Chức năng Docstrings 04:2804:28

  • Chú thích chức năng 07:4707:47

  • Tạo và sửa đổi các chú thích 04:4804:48

  • Kiểm tra loại thực thi 05:1705:17

  • Xác định và gọi các hàm Python (Tóm tắt) 01:4101:41

Sửa đổi lần cuối ngày 25 tháng 10 năm 2022

Trong bài viết này, chúng tôi bao gồm các chức năng trong Python.

Định nghĩa chức năng Python

Hàm là ánh xạ bằng 0 hoặc nhiều tham số đầu vào về 0 hoặc nhiều tham số đầu ra.

Ưu điểm của việc sử dụng các chức năng là:

  • Giảm sự trùng lặp của mã
  • Phân hủy các vấn đề phức tạp thành các mảnh đơn giản hơn
  • Cải thiện sự rõ ràng của mã
  • Tái sử dụng mã
  • Ẩn thông tin

Các chức năng trong Python là những công dân hạng nhất. Nó có nghĩa là các chức năng có trạng thái bình đẳng với các đối tượng khác trong Python. Các chức năng có thể được gán cho các biến, được lưu trữ trong các bộ sưu tập hoặc được truyền dưới dạng đối số. Điều này mang lại sự linh hoạt bổ sung cho ngôn ngữ.

Các loại chức năng Python

Có hai loại chức năng cơ bản: các chức năng tích hợp và các chức năng do người dùng xác định. Các chức năng tích hợp là một phần của ngôn ngữ Python; Ví dụ

def f():
    print("f() function")
0,
def f():
    print("f() function")
1 hoặc
def f():
    print("f() function")
2. Các hàm do người dùng xác định là các hàm được tạo bằng từ khóa
def f():
    print("f() function")
3.

Python tạo ra các chức năng

Một hàm được tạo với từ khóa

def f():
    print("f() function")
3. Các câu lệnh trong khối của hàm phải được thụt vào.

def function():
    pass

Từ khóa

def f():
    print("f() function")
3 được theo sau bởi tên hàm với dấu ngoặc tròn và dấu hai chấm. Các câu lệnh thụt lên tạo thành một cơ thể của chức năng.

Chức năng sau đó được thực hiện khi cần thiết. Chúng tôi nói rằng chúng tôi gọi chức năng. Nếu chúng ta gọi một hàm, các câu lệnh bên trong cơ thể chức năng sẽ được thực thi. Chúng không được thực thi cho đến khi hàm được gọi.

myfunc()

Để gọi một hàm, chúng tôi chỉ định tên chức năng với dấu ngoặc tròn.

ret.py

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)

Chuỗi ở đầu tập lệnh được gọi là chuỗi tài liệu. Nó ghi lại kịch bản hiện tại. Tệp mà chúng tôi đặt mã Python được gọi là mô -đun.

Chúng tôi xác định hai chức năng. Hàm đầu tiên in chuỗi tài liệu mô -đun. Thứ hai trả về đường dẫn của mô -đun. Hàm có thể hoặc không thể trả về một giá trị. Nếu một funciton không trả về một giá trị, nó sẽ hoàn toàn trả về

def f():
    print("f() function")
6.
def f():
    print("f() function")
7 và
def f():
    print("f() function")
8 là các thuộc tính trạng thái đặc biệt. Lưu ý rằng có hai dấu gạch dưới ở cả hai phía của thuộc tính.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py

Định nghĩa về các chức năng phải đi trước việc sử dụng của chúng. Nếu không, thông dịch viên sẽ phàn nàn với

def f():
    print("f() function")
9.

func_prec.py

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")

Trong ví dụ trên, chúng tôi có hai định nghĩa về các hàm. Một dòng được bình luận. Một cuộc gọi chức năng không thể đi trước định nghĩa của nó.

#f2()


def f2():
    print("f2()")

Chúng ta chỉ có thể gọi

def g():
    def f():
        print("f() inner function")
    f()
0 chỉ sau định nghĩa của nó. Không đưa ra dòng chúng ta nhận được
def f():
    print("f() function")
9.

Xác định các chức năng ở đâu

Các chức năng có thể được xác định bên trong một mô -đun, một lớp hoặc chức năng khác. Hàm được xác định bên trong một lớp được gọi là một phương thức.

defining.py

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()

Trong ví dụ này, chúng tôi xác định hàm

def g():
    def f():
        print("f() inner function")
    f()
2 ở ba nơi khác nhau.

# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")

Một phương pháp tĩnh được định nghĩa với một bộ trang trí trong một lớp

def g():
    def f():
        print("f() inner function")
    f()
3.

def f():
    print("f() function")

Hàm được xác định trong một mô -đun.

def g():
    def f():
        print("f() inner function")
    f()

Ở đây hàm

def g():
    def f():
        print("f() inner function")
    f()
2 được xác định bên trong một hàm
def g():
    def f():
        print("f() inner function")
    f()
5 khác. Nó là một hàm bên trong.

myfunc()
0

Phương thức tĩnh được gọi bằng cách chỉ định tên lớp, toán tử chấm và tên hàm với dấu ngoặc vuông. Các chức năng khác được gọi là bằng cách sử dụng tên và dấu ngoặc vuông của chúng.

myfunc()
1

Chức năng Python là đối tượng

Các chức năng trong Python là đối tượng. Chúng có thể được thao túng như các đối tượng khác trong Python. Do đó, các chức năng được gọi là công dân hạng nhất. Điều này không đúng trong các ngôn ngữ OOP khác như Java hoặc C#.

fun_obj.py

myfunc()
2

Trong tập lệnh này, chúng tôi cho thấy rằng chức năng của chúng tôi cũng là một đối tượng.

myfunc()
3

Chúng tôi xác định hàm

def g():
    def f():
        print("f() inner function")
    f()
2. Nó in một tin nhắn vào bảng điều khiển. Nó cũng có một chuỗi tài liệu.

myfunc()
4

Hàm

def g():
    def f():
        print("f() inner function")
    f()
7 kiểm tra xem hàm
def g():
    def f():
        print("f() inner function")
    f()
2 có phải là một thể hiện của
def g():
    def f():
        print("f() inner function")
    f()
9 hay không. Tất cả các đối tượng trong Python kế thừa từ thực thể cơ sở này.

myfunc()
5

Mỗi đối tượng trong Python có một ID duy nhất. Hàm

myfunc()
00 trả về ID của đối tượng.

myfunc()
6

Đối tượng có thể có thuộc tính; Chúng tôi in hai thuộc tính của hàm:

def f():
    print("f() function")
7 và
myfunc()
02.

myfunc()
7

Các chức năng có thể được lưu trữ trong các bộ sưu tập và được chuyển cho các chức năng khác.

fun_coll.py

myfunc()
8

Chúng tôi xác định ba chức năng. Chúng tôi đặt chúng trong một tuple và chuyển chúng vào một chức năng.

myfunc()
9

Chúng tôi đặt ba đối tượng chức năng trong một tuple và đi qua nó với một vòng lặp.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
0

Chúng tôi vượt qua các hàm

def g():
    def f():
        print("f() inner function")
    f()
2 và
def g():
    def f():
        print("f() inner function")
    f()
5 cho hàm
myfunc()
05.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
1

Ba loại chức năng trong Python

Nhìn từ một quan điểm cụ thể, chúng ta có thể nhận ra ba loại chức năng. Các chức năng luôn có sẵn để sử dụng, các chức năng được chứa trong các mô -đun bên ngoài, phải được nhập và các chức năng được xác định bởi một lập trình viên với từ khóa

def f():
    print("f() function")
3.

three_kinds.py

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
2

Ba loại chức năng có mặt trong mã trên.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
3

Hàm

myfunc()
07 được nhập từ mô -đun toán học.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
4

Hàm Cube () là một hàm được xác định tùy chỉnh.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
5

Hàm

def f():
    print("f() function")
2 là một chức năng tích hợp dễ dàng truy cập. Nó là một phần của cốt lõi của ngôn ngữ.

Python trả về từ khóa

Một chức năng được tạo để thực hiện một nhiệm vụ cụ thể. Thường thì có một kết quả từ một nhiệm vụ như vậy. Từ khóa

myfunc()
09 được sử dụng để trả về các giá trị từ một hàm. Một hàm có thể hoặc không thể trả về một giá trị. Nếu một hàm không có từ khóa trả về, nó sẽ gửi
def f():
    print("f() function")
6.

returning.py

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
6

Chúng tôi có hai chức năng được xác định. Người ta sử dụng từ khóa

myfunc()
09, một từ khóa thì không.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
7

Hàm

myfunc()
12 không trả về một cách rõ ràng là một giá trị. Nó hiển thị một tin nhắn trên bảng điều khiển.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
4

Các hàm

myfunc()
13 tính toán một biểu thức và trả về kết quả của nó với từ khóa
myfunc()
09.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
9

Trong dòng này, chúng tôi gọi hàm

myfunc()
13. Kết quả tính toán của hàm
myfunc()
13 được trả về và gán cho biến
myfunc()
17. Nó giữ giá trị kết quả bây giờ.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
0

Chúng tôi gọi hàm

myfunc()
12 với thông báo là tham số. Thông điệp được in vào bảng điều khiển. Chúng tôi không mong đợi một giá trị từ chức năng này.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
1

Mã này tạo ra hai dòng. Một là một thông báo được in bởi hàm

myfunc()
12. Cái còn lại là giá trị
def f():
    print("f() function")
6, được gửi hoàn toàn bởi các hàm mà không có câu lệnh
myfunc()
09.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
2

Chúng ta có thể gửi thêm một giá trị từ một hàm. Các đối tượng sau từ khóa

myfunc()
09 được phân tách bằng dấu phẩy.

returning2.py

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
3

Có một định nghĩa về hàm

myfunc()
23. Hàm này trả về bốn giá trị.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
4

Từ khóa

myfunc()
09 gửi lại bốn số. Các số được phân tách bằng một ký tự dấu phẩy. Trên thực tế, chúng tôi đã gửi một tuple chứa bốn giá trị này. Chúng tôi cũng có thể trả lại một danh sách thay vì một tuple.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
5

Các giá trị được trả về được gán cho các biến cục bộ.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
6

Hàm xác định lại chức năng Python

Python là năng động trong tự nhiên. Có thể xác định lại một hàm đã xác định.

redefinition.py

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
7

Chúng tôi xác định hàm

myfunc()
12. Sau đó, chúng tôi cung cấp một định nghĩa mới về cùng một chức năng.

$ ./ret.py

The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022

None C:/Users/Jano/PycharmProjects/Simple/simple.py
8

Từ mô -đun thời gian, chúng tôi nhập hai chức năng được sử dụng để tính thời gian hiện tại.

#!/usr/bin/python

"""
The ret.py script shows how to work with
functions in Python.
Author: Jan Bodnar
ZetCode, 2022
"""


def show_module_name():

    print(__doc__)


def get_module_file():

    return __file__


a = show_module_name()
b = get_module_file()

print(a, b)
7

Đây là định nghĩa đầu tiên của một hàm. Nó chỉ in một tin nhắn vào bảng điều khiển.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
0

Sau đó trong mã nguồn, chúng tôi thiết lập một định nghĩa mới về hàm

myfunc()
26. Thông điệp được đi trước với dấu thời gian.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
1

Đối số chức năng Python

Hầu hết các chức năng chấp nhận đối số. Đối số là các giá trị được gửi đến hàm. Các chức năng xử lý các giá trị và tùy chọn trả về một số giá trị trở lại.

fahrenheit.py

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
2

Trong ví dụ của chúng tôi, chúng tôi chuyển đổi nhiệt độ Celsius thành Fahrenheit. Hàm

myfunc()
27 chấp nhận một đối số C, đó là nhiệt độ Celsius.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
3

Các đối số trong các hàm Python có thể có các giá trị ngầm. Một giá trị ngầm được sử dụng nếu không có giá trị được cung cấp.

fun_implicit.py

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
4

Ở đây chúng tôi đã tạo ra một chức năng quyền lực. Hàm có một đối số với một giá trị ngầm. Chúng ta có thể gọi chức năng với một hoặc hai đối số.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
5

Các hàm Python có thể chỉ định các đối số của họ với một từ khóa. Điều này có nghĩa là khi gọi một hàm, chúng tôi chỉ định cả từ khóa và giá trị. Khi chúng ta có nhiều đối số và chúng được sử dụng mà không có từ khóa, thứ tự chúng ta vượt qua các đối số đó là rất quan trọng. Nếu chúng ta mong đợi một cái tên, tuổi tác hoặc tình dục trong một chức năng không có từ khóa, chúng ta không thể thay đổi thứ tự của họ. Nếu chúng ta sử dụng từ khóa, chúng ta có thể.

fun_keywords.py

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
6

Trong ví dụ này, thứ tự chúng tôi chỉ định các đối số là quan trọng. Nếu không, chúng tôi nhận được kết quả không chính xác.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
7

fun_keywords2.py

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
8

Bây giờ chúng tôi gọi các chức năng với từ khóa của họ. Thứ tự có thể được thay đổi, mặc dù không nên làm như vậy. Lưu ý rằng chúng tôi không thể sử dụng đối số không phải là KeyeDword sau đối số từ khóa. Điều này sẽ kết thúc trong một lỗi cú pháp.

#!/usr/bin/python

# func_prec.py


def f1():
    print("f1()")


f1()
#f2()


def f2():
    print("f2()")
9

Đây là một cấu trúc pháp lý. Một đối số không thay đổi có thể được theo sau bởi các đối số từ khóa.

#f2()


def f2():
    print("f2()")
0

Điều này sẽ kết thúc trong một lỗi cú pháp. Một đối số không thay đổi có thể không tuân theo các đối số từ khóa.

Các chức năng trong Python có thể chấp nhận số lượng đối số tùy ý.

arbitrary_args.py

#f2()


def f2():
    print("f2()")
1

Chúng tôi sử dụng toán tử

myfunc()
28 để chỉ ra rằng hàm chấp nhận số lượng đối số tùy ý. Hàm
myfunc()
29 trả về tổng của tất cả các đối số. Chuỗi đầu tiên trong phần thân hàm được gọi là Chuỗi tài liệu chức năng. Nó được sử dụng để ghi lại chức năng. Chuỗi phải được trích dẫn ba.

#f2()


def f2():
    print("f2()")
2

Chúng tôi cũng có thể sử dụng cấu trúc

myfunc()
30 trong các chức năng của chúng tôi. Trong trường hợp như vậy, chức năng sẽ chấp nhận một từ điển. Từ điển có độ dài tùy ý. Sau đó chúng ta có thể thông thường phân tích từ điển, như thường lệ.

details.py

#f2()


def f2():
    print("f2()")
3

Ví dụ này cho thấy một trường hợp như vậy. Chúng tôi có thể cung cấp số lượng đối số giá trị khóa tùy ý. Chức năng sẽ xử lý tất cả.

#f2()


def f2():
    print("f2()")
4

Python đi qua các tham số bằng cách tham khảo

Các tham số cho các chức năng được truyền qua tham chiếu. Một số ngôn ngữ chuyển các bản sao của các đối tượng cho các chức năng. Vượt qua các đối tượng bằng cách tham chiếu có hai kết luận quan trọng: a) Quá trình này nhanh hơn so với các bản sao của các đối tượng được thông qua; b) Các đối tượng có thể thay đổi được sửa đổi trong các chức năng được thay đổi vĩnh viễn.

passing_by_reference.py

#f2()


def f2():
    print("f2()")
5

Trong ví dụ của chúng tôi, chúng tôi chuyển một danh sách các số nguyên cho một hàm. Đối tượng được sửa đổi bên trong phần thân của chức năng. Sau khi gọi hàm, đối tượng ban đầu, danh sách các số nguyên được sửa đổi.

#f2()


def f2():
    print("f2()")
6

Trong phần thân của chức năng, chúng ta làm việc với đối tượng ban đầu. Không phải với một bản sao của đối tượng. Trong nhiều ngôn ngữ lập trình, chúng tôi sẽ nhận được một bản sao của một đối tượng theo mặc định.

#f2()


def f2():
    print("f2()")
7

Khi danh sách đã được sửa đổi, nó đã được sửa đổi cho tốt.

Python Global và Local Biến

Tiếp theo chúng ta nói về cách các biến được sử dụng trong các hàm Python.

local_variable.py

#f2()


def f2():
    print("f2()")
8

Một biến được xác định trong một cơ thể chức năng có phạm vi cục bộ. Nó chỉ có giá trị trong cơ thể của chức năng.

#f2()


def f2():
    print("f2()")
9

global_variable.py

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
0

Theo mặc định, chúng ta có thể có được nội dung của một biến toàn cầu bên trong phần thân của một hàm.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
1

Nhưng nếu chúng ta muốn thay đổi một biến toàn cầu trong một hàm, chúng ta phải sử dụng từ khóa

myfunc()
31.

global_variable2.py

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
2

Bây giờ, chúng tôi thay đổi nội dung của một biến tên toàn cầu bên trong một hàm.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
3

Sử dụng từ khóa

myfunc()
31, chúng tôi tham chiếu biến được xác định bên ngoài phần thân của hàm. Biến được cung cấp một giá trị mới.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
4

Chức năng ẩn danh Python

Có thể tạo các chức năng ẩn danh trong Python. Các chức năng ẩn danh không có tên. Với từ khóa

myfunc()
33, các hàm ẩn danh nhỏ có thể được tạo. Các chức năng ẩn danh cũng được gọi là các chức năng Lambda của các lập trình viên Python. Chúng là một phần của mô hình chức năng được kết hợp trong Python.

Các hàm Lambda bị giới hạn trong một biểu thức duy nhất. Chúng có thể được sử dụng bất cứ nơi nào các chức năng bình thường có thể được sử dụng. Có một hướng dẫn chức năng Python Lambda trên ZetCode.

lambda_fun.py

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
5

Đây là một ví dụ nhỏ về chức năng Lambda.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
6

Từ khóa

myfunc()
33 tạo ra một hàm ẩn danh.
myfunc()
17 là một tham số được truyền đến hàm Lambda. Các tham số được theo sau bởi một ký tự đại tràng. Mã bên cạnh đại tràng là biểu thức được thực thi, khi hàm Lambda được gọi. Hàm LambDA được gán cho biến
myfunc()
36.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
7

Hàm Lambda được thực thi. Số 8 được chuyển đến hàm ẩn danh và nó trả về 48 do kết quả. Lưu ý rằng

myfunc()
36 không phải là tên cho chức năng này. Nó chỉ là một biến mà hàm ẩn danh được gán.

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
8

Hàm Lambda có thể được sử dụng thanh lịch với các phần chức năng khác của ngôn ngữ Python, như các hàm

myfunc()
38 hoặc
myfunc()
39.

lambda_fun2.py

#!/usr/bin/python

# defining.py


class Some():

    @staticmethod
    def f():
        print("f() method")


def f():
    print("f() function")


def g():
    def f():
        print("f() inner function")
    f()


Some.f()
f()
g()
9

Trong ví dụ, chúng tôi có một danh sách nhiệt độ Celsius. Chúng tôi tạo ra một danh sách mới chứa nhiệt độ ở Fahrenheit.

# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
0

Hàm

myfunc()
38 áp dụng hàm ẩn danh cho từng phần tử của danh sách
myfunc()
41. Nó trả lại một điều đáng tin cậy của nhiệt độ Fahrenheit được tính toán.

# defining.py

class Some():

    @staticmethod
    def f():
        print("f() method")
1

Trong bài viết này, chúng tôi đã đề cập đến các chức năng Python.

Liệt kê tất cả các hướng dẫn Python.

Tại sao các chức năng được sử dụng trong Python?

Chức năng trong Python.Bạn sử dụng các chức năng trong lập trình để gói một tập hợp các hướng dẫn mà bạn muốn sử dụng nhiều lần hoặc vì sự phức tạp của chúng, được khép kín hơn trong một chương trình con và được gọi khi cần thiết.Điều đó có nghĩa là một hàm là một đoạn mã được viết để thực hiện một nhiệm vụ được chỉ định.to bundle a set of instructions that you want to use repeatedly or that, because of their complexity, are better self-contained in a sub-program and called when needed. That means that a function is a piece of code written to carry out a specified task.

Những lý do để sử dụng các chức năng là gì?

Các chức năng cho phép các lập trình viên phá vỡ hoặc phân tách vấn đề thành các khối nhỏ hơn, mỗi phần thực hiện một nhiệm vụ cụ thể.Khi một hàm được tạo, các chi tiết về cách nó hoạt động gần như có thể bị lãng quên.enable programmers to break down or decompose a problem into smaller chunks, each of which performs a particular task. Once a function is created, the details of how it works can almost be forgotten about.

Những lợi thế của việc sử dụng các chức năng là gì?

Bằng cách sử dụng các chức năng, chúng ta có thể tránh viết lại cùng một logic/mã nhiều lần trong một chương trình.Chúng tôi có thể gọi các chức năng C bất kỳ số lần trong một chương trình và từ bất kỳ nơi nào trong một chương trình.Chúng ta có thể theo dõi một chương trình C lớn dễ dàng khi nó được chia thành nhiều chức năng.Khả năng tái sử dụng là thành tựu chính của các chức năng C.avoid rewriting same logic/code again and again in a program. We can call C functions any number of times in a program and from any place in a program. We can track a large C program easily when it is divided into multiple functions. Reusability is the main achievement of C functions.