Hướng dẫn can i pass a function as an argument in python? - tôi có thể chuyển một hàm làm đối số trong python không?

Xin chào các bạn! Trong hướng dẫn này, chúng tôi sẽ thảo luận về các cách khác nhau để vượt qua một chức năng như một lập luận trong Python.


Các chức năng trong Python là gì?

Trong lập trình Python, một chức năng đóng một vai trò rất quan trọng. Chúng tôi có một bộ sưu tập rất rộng và phong phú của các loại chức năng khác nhau trong Python. Các chức năng trong Python cung cấp tính năng mô đun. Nó có nghĩa là sử dụng các chức năng, chúng ta có thể chia một khối lớn mã python thành các khối nhỏ hơn trong đó mỗi khối phải thực hiện một tác vụ cụ thể. Chúng tôi có thể sử dụng các chức năng được xác định trước hoặc xác định các chức năng của riêng chúng tôi. Các chức năng được xác định bên trong một lớp cụ thể, chúng tôi gọi chúng là các phương thức trong Python.Functions in Python provides modularity feature. It means using functions we can divide a single large block of Python code into smaller blocks where each block has to perform a specific task. We can either use predefined functions or define our own functions. The functions which are defined inside a specific class we call them methods in Python.

Chức năng như các đối tượng hạng nhất

Các đối tượng hạng nhất là những đối tượng được xử lý đồng đều trong suốt chương trình. Nó có nghĩa là các đối tượng hạng nhất có thể được lưu trữ trong một biến, được truyền như một đối số cho một hàm hoặc được sử dụng trong các câu lệnh điều khiển. Python hỗ trợ khái niệm về các đối tượng hạng nhất và coi các chức năng là đối tượng hạng nhất. Đó là vì lý do này, chúng ta có thể chuyển các chức năng như là đối số cho các chức năng khác trong Python.objects are those objects which are treated uniformly throughout the program. It means the first-class objects can be stored in a variable, passed as an argument to a function, or used in control statements. Python supports the concept of first-class objects and treats functions as first-class objects. It is because of this reason, we can pass functions as arguments to other functions in Python.

Trong Python, chúng ta có thể chuyển các loại chức năng khác nhau như một đối số cho một hàm khác theo các cách sau. Hãy để chúng tôi thảo luận từng người một.

1. Hàm do người dùng xác định

Trong Python, giống như một biến bình thường, chúng ta có thể chuyển chức năng do người dùng xác định làm đối số cho một hàm khác. Một hàm chấp nhận một hàm khác vì tham số của nó được gọi là hàm bậc cao hơn. Hãy để xem cách chúng ta có thể thực hiện điều này thông qua mã Python. function. Let’s see how we can implement this through Python code.

# Define higher order function
def fun(foo):
    result = foo('Welcome To AskPython!!')
    return result

# Define function-1
def fun1(str):
    return str.lower()

# Define function-2
def fun2(str):
    return str.upper()

# Pass funtion-1 as an argument
# to fun() function
str1 = fun(fun1)
print(str1)

# Pass funtion-2 as an argument
# to fun() function
str2 = fun(fun2)
print(str2)

Output:

welcome to askpython!! 
WELCOME TO ASKPYTHON!!

2. Phương pháp lớp

Giống như các chức năng do người dùng xác định, chúng ta cũng có thể chuyển các phương thức lớp như một đối số. Hãy để xác định một lớp trong Python với hai phương thức và tạo một đối tượng của lớp này để gọi các phương thức đó. Hãy cùng xem mã Python để thực hiện điều này.

# Define a Python class
class demo_class:
    # Define method-1
    def method1(self):
        print("Method-1 Running")
        return "AskPython!!"
    # Define method-2
    def method2(self, foo):
        print("Method-2 Running")
        result = foo()
        return result

# Create a demo_class object
# using the class constructor
obj = demo_class()

# Pass method-1 as an argument to method-2
str = obj.method2(obj.method1)
print(str)

Output:

Method-2 Running 
Method-1 Running 
AskPython!!

3. Hàm Lambda

Trong Python, các hàm Lambda là các đối tượng hàm được trả về khi đánh giá các biểu thức Lambda. Giống như các chức năng do người dùng xác định và các phương thức lớp, chúng ta cũng có thể chuyển chức năng Lambda như một đối số cho một hàm khác. Hãy cùng xem mã Python để thực hiện điều này.lambda functions are the function objects returned on evaluation of the lambda expressions. Like user-defined functions and class methods, we can also pass a lambda function as an argument to another function. Let’s see the Python code to implement this.

# Create a Python list
ls = [1, 2, 3, 4, 5]
print('This is the given list:')
print(ls)

# Pass lambda function 
# to map() function to claculate
# the square of each list element
iter_obj = map((lambda n: n**2), ls)

# Construct the list again with
# square of the elements of the given list
ls = list(iter_obj)
print('This is the final list:')
print(ls)

Output:

This is the given list: 
[1, 2, 3, 4, 5] 
This is the final list: 
[1, 4, 9, 16, 25]

4. Hàm vận hành

Trong Python, chúng tôi có mô -đun toán tử có chứa các chức năng được xác định trước. Các chức năng này cho phép chúng tôi thực hiện các hoạt động toán học, quan hệ, logic hoặc bitwise trong một danh sách các đối số nhất định. Giống như các chức năng do người dùng định nghĩa và Lambda, chúng ta cũng có thể chuyển chức năng toán tử như một đối số cho một hàm khác. Ở đây chúng tôi sẽ sử dụng hàm

welcome to askpython!! 
WELCOME TO ASKPYTHON!!
0 từ mô -đun toán tử và chuyển nó đến hàm
welcome to askpython!! 
WELCOME TO ASKPYTHON!!
1 được xác định trong mô -đun functools cùng với danh sách Python. Điều này sẽ tính toán và trả lại sản phẩm của các yếu tố danh sách truyền qua. Hãy để thực hiện điều này thông qua mã Python.operator module which contains predefined functions. These functions allow us to perform mathematical, relational, logical, or bitwise operations on a given list of arguments. Like user-defined and lambda functions we can also pass an operator function as an argument to another function. Here we will be using
welcome to askpython!! 
WELCOME TO ASKPYTHON!!
0 function from the operator module and pass it to the
welcome to askpython!! 
WELCOME TO ASKPYTHON!!
1 function which is defined in the functools module along with a Python list. This will calculate and return the product of the passed list elements. Let’s implement this through Python code.

# Importing Python functools module which contains the reduce() function
import functools
 
# Importing Python operator module which contains the mul() function
import operator
 
# Defining a Python list
ls = [1, 3, 5, 7, 9, 11]
print("Given Python list:")
print(ls)

# Pass the mul() function as an argument 
# to the reduce() function along with the list
ls_product = functools.reduce(operator.mul, ls)
  
# Printing the results
print("Product of the given Python list: ", ls_product)

Output:

Given Python list: 
[1, 3, 5, 7, 9, 11] 
Product of the given Python list:  10395

5. Chức năng tích hợp

Trong Python, chúng ta có rất nhiều hàm tích hợp tiêu chuẩn như list (), tuple (), dict (), str (), v.v. như các hàm do người dùng xác định đến một chức năng khác trong Python. Ở đây chúng tôi sẽ chuyển hàm

welcome to askpython!! 
WELCOME TO ASKPYTHON!!
2 cho hàm
welcome to askpython!! 
WELCOME TO ASKPYTHON!!
3 cùng với một bộ python của chuỗi và số. Điều này sẽ trả về một đối tượng iterator mà chúng ta sẽ cho hàm str.join () để chuyển đổi tuple đã cho thành chuỗi python. Hãy để viết mã Python để thực hiện điều này.

# Create a Python tuple
tup = ('Linux', 'Ubuntu', 20.04)
print("Given Python tuple:")
print(tup)

# Pass the str() function
# to the map() function
iter_obj = map(str, tup)

# Construct the string from 
# the returned iterator object
# of the given tuple
str1 = "-".join(iter_obj)

# Print the result
print("Generated Python string from tuple:")
print(str1)

Output:

Given Python tuple: 
('Linux', 'Ubuntu', 20.04) 
Generated Python string from tuple: 
Linux-Ubuntu-20.0

Sự kết luận

Trong hướng dẫn này, chúng tôi đã học được những điều sau:

  • Đối tượng hạng nhất là gì?
  • Làm thế nào để vượt qua chức năng do người dùng xác định như một đối số?
  • Làm thế nào để vượt qua các phương thức lớp như một đối số?
  • Làm thế nào để vượt qua chức năng Lambda như một đối số?
  • Làm thế nào để chuyển chức năng toán tử như một đối số?
  • Làm thế nào để vượt qua chức năng tích hợp như một đối số?

Hy vọng bạn đã hiểu tất cả các khái niệm được thảo luận ở trên và sẵn sàng tìm hiểu và khám phá thêm về các chức năng trong Python. Hãy theo dõi chúng tôi!

Tôi có thể chuyển chức năng như đối số không?

Chúng ta không thể chuyển chức năng như một đối số cho một hàm khác. Nhưng chúng ta có thể vượt qua tham chiếu của một hàm dưới dạng tham số bằng cách sử dụng một con trỏ hàm. Quá trình này được gọi là cuộc gọi bằng tham chiếu là tham số hàm được truyền dưới dạng một con trỏ giữ địa chỉ của các đối số.. But we can pass the reference of a function as a parameter by using a function pointer. This process is known as call by reference as the function parameter is passed as a pointer that holds the address of arguments.

Bạn có thể chuyển một chức năng vào một chức năng python?

Bản tóm tắt.Trong Python, bạn có thể chuyển các đối tượng chức năng vào các chức năng khác.Các chức năng có thể được thông qua trong Python.Trong thực tế, có những chức năng được xây dựng thành Python mong đợi các chức năng được đưa ra như một hoặc nhiều đối số của chúng để sau đó họ có thể gọi chúng sau.you can pass function objects in to other functions. Functions can be passed around in Python. In fact there are functions built into Python that expect functions to be given as one or more of their arguments so that they can then call them later.

Một hàm Python có thể lấy một lớp làm đối số không?

Có của thô, bạn có thể vượt qua các lớp hoặc chức năng hoặc thậm chí các mô -đun ... ...

Làm thế nào chúng ta có thể vượt qua các lập luận trong Python?

Python chuyển các đối số bằng cách chuyển nhượng.Đó là, khi bạn gọi hàm Python, mỗi đối số hàm trở thành một biến mà giá trị truyền được gán ...
Nếu một đối tượng đại diện cho giá trị 2 đã tồn tại, thì nó được truy xuất.....
Bộ đếm tham chiếu của đối tượng này được tăng lên ..