Python - 将一个参数的多个值发送给函数

标签 python

我刚刚接触 Python 几天,所以如果这很愚蠢,请原谅我..

是否有一种方法可以将多个变量发送到单个函数?举个例子:

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

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

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

pe.plot_chart 是我创建的,因此必须对其进行任何修改才能使其正常工作

这种类型的操作可以执行吗?

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

plot_chart 函数..它绘制图表,并将其保存到上面的位置。该函数的每次调用都会生成一个图表,我希望通过发送参数的多个值,我可以让该函数动态地将更多系列添加到图中。

因此,如果我向该函数发送 4 个数据源,我最终会在绘图上得到 4 条线。出于这个原因,我不确定循环遍历数据源集合会不会很好(只会用一行生成 4 个图?)

最佳答案

是的,您可以向 python 中的函数发送多个参数,但这不足为奇。你不能做的是在关键字参数后面添加位置参数,即像 f(1, foo=2, 3) 这样的调用不允许(因此您的示例无效)。

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

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

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

另一个更高级的替代方案是对所有内容使用关键字参数,除了使用变量参数列表的多个参数,但这在 python2 中有点笨拙,因为你需要将所有参数作为位置提供,除非你手动解包关键字参数,在 python3 中,有一些缓解,因为您可以强制使用关键字参数:

def f(*args, bar=fubar):
    for x in args:
        do_something(bar, x)

f(arg1, arg2, arg3, bar=fubar) 
# f(fubar, arg1, arg2, arg3) is not allowed

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

在 python2 中,上面的内容需要是:

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

    for x in args:
        do_something(bar, x)

关于Python - 将一个参数的多个值发送给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31589747/

相关文章:

python - 什么时候可以 self == None

python - 父级中的相对 QWidget 位置 - 不正确的 Y

java - 为什么使用两个线程作为计数器会降低 Java 的性能?

python - 如果数据框以列表中的字符串开头,则按列名称拆分数据框

python - 从 DataFrame 到嵌套字典

python - 如何使用 PyTest 正确测试 Django API ListView?

python - 按百分位数对 python 字典进行排名

python - 分析 SQL 查询

python sqlalchemy 不同的列值

Python Mastermind 游戏问题