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ự?
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
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
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
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
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.def myfunc[anotherfunc, extraArgs]: anotherfunc[*extraArgs]
- Đã trả lời ngày 16 tháng 9 năm 2015 lúc 21:01
SabujpsabujpJan 2, 2020 at 12:19
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
- Đã trả lời ngày 9 tháng 6 năm 2011 lúc 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ả.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
- 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 RudzenkaPhù 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
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
def myfunc[anotherfunc, extraArgs]:
anotherfunc[*extraArgs]
14042 Huy hiệu bạc10 Huy hiệu đồngApr 29, 2018 at 11:34
2