gpt4 book ai didi

Python动态函数生成

转载 作者:太空狗 更新时间:2023-10-30 01:49:30 24 4
gpt4 key购买 nike

我正在使用 PyQt 并想创建一个基于字符串列表的菜单。

问题是当我想调用“addAction”时,它需要一个不接受任何参数的回调函数(针对每个字符串)。

对于简单的菜单,这会很好:例如

menu.addAction("Open", self.open)
menu.addAction("Exit", self.quit)

但是,我只想使用一个函数并将“操作字符串”作为参数传入。

我想知道 python 是否可以做这样的事情:

def f(x, y):
print x + 2*y



# These 2 variables are of type: <type 'function'>
callback1 = f
callback2 = f(x=7, *)
# NB: the line above is not valid python code.
# I'm just illustrating my desired functionality

print callback1(2,5) # prints 12
print callback2(5) # prints 17

这是我的代码片段:

def printParam(parameter):
print "You selected %s" % parameter


# parameters = list of strings

menu_bar = QMenuBar()
menu = menu_bar.addMenu('Select Parameter')
for parameter in parameters:
# This line will not work because the action does not pass in
# any arguments to the function
menu.addAction(parameter, printParam)

非常感谢任何建议

最佳答案

functools.partial()允许您提前提供一些参数。它将允许您根据需要进行自定义回调。

>>> from functools import partial
>>> basetwo = partial(int, base=2)
>>> basetwo.__doc__ = 'Convert base 2 string to an int.'
>>> basetwo('10010')
18

关于Python动态函数生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com