Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

Giả sử tôi có một số mã như:

def myfunc(anotherfunc, extraArgs):
    # somehow call `anotherfunc` here, passing it the `extraArgs`
    pass

Tôi muốn chuyển một chức năng hiện có khác như đối số

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
2 và danh sách hoặc tuple của các đối số là
def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
3 và có
def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
4 gọi chức năng truyền vào với các đối số đó.

Điều này có thể? Làm thế nào để làm điều đó - tôi sẽ cần ____ 15/________ 16 hay tương tự?

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

Karl Knechtel

59.5K10 Huy hiệu vàng86 Huy hiệu bạc132 Huy hiệu Đồng10 gold badges86 silver badges132 bronze badges

hỏi ngày 9 tháng 6 năm 2011 lúc 7:47Jun 9, 2011 at 7:47

1

Chức năng Python có thể là một đối số của một hàm khác không?

Yes.

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)

Để cụ thể hơn ... với các lập luận khác nhau ...

>>> def x(a,b):
...     print "param 1 %s param 2 %s" % (a,b)
... 
>>> def y(z,t):
...     z(*t)
... 
>>> y(x, ("hello","manuel"))
param 1 hello param 2 manuel

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

wjandrea

25.2k8 Huy hiệu vàng54 Huy hiệu bạc75 Huy hiệu Đồng8 gold badges54 silver badges75 bronze badges

Đã trả lời ngày 9 tháng 6 năm 2011 lúc 7:48Jun 9, 2011 at 7:48

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

4

Đây là một cách khác bằng cách sử dụng

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
7 (và cũng là tùy chọn),
def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
8:

def a(x, y):
  print x, y

def b(other, function, *args, **kwargs):
  function(*args, **kwargs)
  print other

b('world', a, 'hello', 'dude')

Đầu ra

hello dude
world

Lưu ý rằng

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
9,
def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
7,
def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
8 phải theo thứ tự đó và phải là đối số cuối cùng cho chức năng gọi hàm.

Đã trả lời ngày 16 tháng 9 năm 2015 lúc 21:01Sep 16, 2015 at 21:01

Sabujpsabujpsabujp

9911 Huy hiệu vàng11 Huy hiệu bạc11 Huy hiệu đồng1 gold badge11 silver badges11 bronze badges

1

Các chức năng trong Python là các đối tượng hạng nhất. Nhưng định nghĩa chức năng của bạn là một chút tắt.

def myfunc(anotherfunc, extraArgs, extraKwArgs):
  return anotherfunc(*extraArgs, **extraKwArgs)

Đã trả lời ngày 9 tháng 6 năm 2011 lúc 7:50Jun 9, 2011 at 7:50

Chắc chắn, đó là lý do tại sao Python thực hiện các phương thức sau trong đó tham số đầu tiên là một hàm:

  • Bản đồ (chức năng, có thể điều chỉnh được, ...) - Áp dụng chức năng cho mọi mục có thể lặp lại và trả về danh sách các kết quả.
  • bộ lọc (chức năng, có thể lặp lại) - Xây dựng một danh sách từ các yếu tố có thể lặp lại cho chức năng trả về true.
  • Giảm (chức năng, có thể điều chỉnh được [, bộ khởi tạo]) - Áp dụng chức năng của hai đối số tích lũy cho các mục có thể điều chỉnh được, từ trái sang phải, để giảm khả năng lặp lại thành một giá trị duy nhất.
  • Lambdas

Đã trả lời ngày 9 tháng 6 năm 2011 lúc 8:09Jun 9, 2011 at 8:09

Artsiom Rudzenkaartsiom RudzenkaArtsiom Rudzenka

Phù hiệu vàng 27.2k4 Huy hiệu bạc51 Huy hiệu đồng4 gold badges33 silver badges51 bronze badges

1

Hàm bên trong hàm: chúng ta cũng có thể sử dụng chức năng làm tham số ..

Nói cách khác, chúng ta có thể nói đầu ra của hàm cũng là một tham chiếu cho một đối tượng, xem bên dưới cách đầu ra của hàm bên trong được tham chiếu đến hàm bên ngoài như bên dưới ..

def out_func(a):

  def in_func(b):
       print(a + b + b + 3)
  return in_func

obj = out_func(1)
print(obj(5))

Kết quả sẽ là .. 14

Hi vọng điêu nay co ich.

Đã trả lời ngày 8 tháng 2 năm 2019 lúc 0:17Feb 8, 2019 at 0:17

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

TemizzitemizziTemizzi

4042 Huy hiệu bạc10 Huy hiệu đồng2 silver badges10 bronze badges

0

Các nhà trang trí rất mạnh mẽ trong Python vì nó cho phép các lập trình viên vượt qua chức năng như đối số và cũng có thể xác định chức năng bên trong một chức năng khác.

def decorator(func):
      def insideFunction():
        print("This is inside function before execution")
        func()
      return insideFunction

def func():
    print("I am argument function")

func_obj = decorator(func) 
func_obj()

Đầu ra

  • Lưu ý rằng
    def myfunc(anotherfunc, extraArgs):
        anotherfunc(*extraArgs)
    
    9,
    def myfunc(anotherfunc, extraArgs):
        anotherfunc(*extraArgs)
    
    7,
    def myfunc(anotherfunc, extraArgs):
        anotherfunc(*extraArgs)
    
    8 phải theo thứ tự đó và phải là đối số cuối cùng cho chức năng gọi hàm.
  • Đã trả lời ngày 16 tháng 9 năm 2015 lúc 21:01

SabujpsabujpJan 2, 2020 at 12:19

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

9911 Huy hiệu vàng11 Huy hiệu bạc11 Huy hiệu đồngUsman Gani

Các chức năng trong Python là các đối tượng hạng nhất. Nhưng định nghĩa chức năng của bạn là một chút tắt.3 silver badges9 bronze badges

1

  1. Đã trả lời ngày 9 tháng 6 năm 2011 lúc 7:50
  2. Chắc chắn, đó là lý do tại sao Python thực hiện các phương thức sau trong đó tham số đầu tiên là một hàm:

Bản đồ (chức năng, có thể điều chỉnh được, ...) - Áp dụng chức năng cho mọi mục có thể lặp lại và trả về danh sách các kết quả.Jun 9, 2011 at 7:49

sepp2ksepp2ksepp2k

bộ lọc (chức năng, có thể lặp lại) - Xây dựng một danh sách từ các yếu tố có thể lặp lại cho chức năng trả về true.52 gold badges669 silver badges670 bronze badges

  1. Giảm (chức năng, có thể điều chỉnh được [, bộ khởi tạo]) - Áp dụng chức năng của hai đối số tích lũy cho các mục có thể điều chỉnh được, từ trái sang phải, để giảm khả năng lặp lại thành một giá trị duy nhất.

Lambdas

def anotherfunc(inputarg1, inputarg2):
    pass
def myfunc(func = anotherfunc):
    print func

Đã trả lời ngày 9 tháng 6 năm 2011 lúc 8:09

Artsiom Rudzenkaartsiom Rudzenka

Phù hiệu vàng 27.2k4 Huy hiệu bạc51 Huy hiệu đồng

Hàm bên trong hàm: chúng ta cũng có thể sử dụng chức năng làm tham số ..

Nói cách khác, chúng ta có thể nói đầu ra của hàm cũng là một tham chiếu cho một đối tượng, xem bên dưới cách đầu ra của hàm bên trong được tham chiếu đến hàm bên ngoài như bên dưới ..May 17, 2014 at 7:02

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

Kết quả sẽ là .. 14Arial

Hi vọng điêu nay co ich.2 gold badges17 silver badges17 bronze badges

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
0

Đã trả lời ngày 8 tháng 2 năm 2019 lúc 0:17

TemizzitemizziJul 26, 2018 at 14:33

Hướng dẫn can python take function as argument? - python có thể lấy chức năng làm đối số không?

def myfunc(anotherfunc, extraArgs):
    anotherfunc(*extraArgs)
1

4042 Huy hiệu bạc10 Huy hiệu đồngApr 29, 2018 at 11:34

2

Có thể được thông qua như đối số?

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.

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 ... ...

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

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