Python向函数发送一个参数的多个值

2024-09-28 05:26:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚接触Python几天,所以如果这是愚蠢的,请原谅。。在

有没有一种方法可以将多个变量发送给一个函数?例如:

pe.plot_chart(conn,7760,'DataSource1',123,save=True)

上面的函数连接到SQL,从datasource1(uniqueid 123)中提取惟一ID 7760的数据。我可以使用某种方法为DataSource1字段发送多个条件吗?e、 g

^{pr2}$

在pe.plot图是我创造的,所以任何修改都可以

这种手术是否可行?在

编辑:添加一些额外的信息。在

绘图图表函数。。它绘制一个图表,然后保存到上面的位置。每次调用函数都会生成一个图形,我希望通过为一个参数发送多个值,可以让函数动态地向绘图中添加更多序列。在

因此,如果我向函数发送4个数据源,我将在绘图上得到4条线。由于这个原因,我不确定循环通过一个数据源集合会是好的(只会产生一行4个图?)在


Tags: 方法函数true绘图sqlplotsavechart
3条回答
data_sources = [data_source1, data_source2, data_source3]

for source in data_sources:
   pe.plotchart(connection, uniqueid = 7760, source...)

有多种方法可以实现这一点——如果你想把一个iterable(比如一个列表)发送给你的函数,然后让函数遍历它们,你可以这样做。也可以从循环调用函数。如果其他参数在每次迭代中都会发生变化,请查看“zip”,这对于循环数据配对非常有用。在

是的,您可以向python中的函数发送多个参数,但这并不奇怪。你不能做的是在关键字参数之后有位置参数,也就是说不允许像f(1, foo=2, 3)这样的调用(因为这个原因,你的例子是无效的)。在

此外,严格意义上,您不能为单个参数提供多个值,但可以为单个参数提供列表或元组,例如,f(1, foo=(2, 3))是可接受的,并且您的函数可能会解释为您向foo参数提供两个值(但实际上它只是一个元组)。在

缺点是函数必须能够区分作为参数的元组和作为单个参数的元组。最简单的方法是坚持参数应该是元组或者至少是iterable。函数必须看起来有点像:

def f(foo, bar):
    for x in foo:
        do_something(bar, x)

f(bar=fubar, foo=(arg1, arg2, arg3))
f((arg1, arg2, arg3), bar=fubar) # same as previous line
f((arg1, arg2, arg3), fubar) # same as previous line

另一个更高级的替代方法是通过使用variable argument list将关键字argument用于除多个参数之外的所有内容,但这在python2中有点笨拙,因为除非您手动解包keywords参数,否则您需要将所有参数提供为位置参数,在python3中,您可以减轻一些负担强制使用关键字参数:

^{pr2}$

然后每个不是关键字参数的参数(仍然那些位置参数必须是第一个参数)将以args结束,并且bar参数需要作为关键字参数传递。在

在python2中,上述内容需要:

def f(*args, **kwds):
    bar = kwds.get("bar", fubar)

    for x in args:
        do_something(bar, x)

在您的情况下,可以将数据源规范与唯一的id配对。下面是一个简单的元组列表方法:

def myFunc(values):
    for v in values:
        print v[0], v[1]

myFunc([("hello", 1), ("world", 2)])

如果需要为每一行绘制更多的描述,那么列表元素也可以扩展为类。这种翻转的好处是,您处理的是一组行描述符(由元组表示),而不是松散耦合的“参数”。在

输出结果如下:

^{pr2}$

你的具体情况会变成这样

pe.plot_chart(conn,7760,[('DataSource1',123),('DataSource2',345)],save=True)

相关问题 更多 >

    热门问题