python - Python在外部函数调用上定义嵌套函数的参数
问题描述
我有以下功能:
def splot (self,what):
df = pd.DataFrame((self.spec[what]).compute()).plot()
plt.show()
return df
我希望能够在调用函数时将参数传递给方法,如下所示: .plot()
splot
def splot (self,what,arg=None):
df = pd.DataFrame((self.spec[what]).compute()).plot(arg)
plt.show()
return df
因此,当我调用 时splot
,我给它两个参数:('what'
一个字符串),以及我希望 plot 命令采用的参数。
但是,这不起作用:如果我将参数作为字符串传递,我会得到 a KeyError
,如果不是,则会引发变量错误。我有一种感觉*args
应该在某个地方涉及,但不确定在这种情况下如何使用它。
解决方案
事实上,正如您所猜测的,您必须使用解包运算符 *. 这是一个接近你的代码示例,以便解释:
class myClass:
def myPlot(self, x=None, y=None):
print("myPlot:", x)
print("myPlot:", y)
def myFunc(self, what, *args, **kwargs):
print(what) # 'toto'
print(args) # tuple with unnamed (positional) parameters
print(kwargs) # dictionary with named (keyword) parameters
self.myPlot(*args, **kwargs) # use of * to unpack tuple and ** to unpack dictionary
myObject = myClass()
myObject.myFunc("toto", 4, 12) # with positional arguments only
myObject.myFunc("toto", x = 4, y = 12) # with keyword arguments only
myObject.myFunc("toto", 4, y = 12) # with both
所以你应该这样写你的代码:
def splot (self, what, *args, **kwargs):
df = pd.DataFrame((self.spec[what]).compute()).plot(*args, **kwargs)
plt.show()
return df
推荐阅读
- sql - 将值从一列拆分到另一列 SQL DEVELOPER
- javascript - 传递查询参数时 Express 端点不匹配
- c++ - 如何更改资源管理器类型自定义对话框的当前目录?
- facebook - 有没有办法下载 Facebook 帖子(连同它的评论)?
- c - 在 C 中访问结构内的枚举
- android - 在启动某些活动之前,小部件无法在 Android 11 上的设备启动时启动服务
- css - 图片高度更改或调整大小
- android - 如果有任何APP安装或卸载发生android,如何获得通知?如何实施?
- javascript - 找不到模块:无法解析 'node:fs
- prolog - 在 prolog 文件中运行 Prolog 查询并将结果存储在 txt 文件中