【问题标题】:Confused by Argument passing in Python对 Python 中的参数传递感到困惑
【发布时间】:2019-10-10 15:24:37
【问题描述】:

我有一个需要传递三个参数的函数。第一个参数是一个固定值,第二个参数是一个范围,稍后在代码中的 for 循环中使用。第三个参数是值的范围/列表。我想要的是,对于第二个参数范围内的每个值,都应从第三个参数中获取一个对应的值。 例如,我希望当第二个参数值为 10 时,第三个参数应为 1。 当第二个参数值为 19 时,第三个参数应为 2。 同样,当第二个参数值为 28 时,第三个参数应为 3。 等等.... 换句话说,我可以这样说: 每次为每个“n”值运行“for”循环时,都会有一个唯一且不断增加的“f”值。 提前谢谢你。

def runFunct(funct):
    itrange = funct[0]
    nrange = funct[1]
    frange = funct[2]


    for f in frange:
        for n in nrange:
            print(f*n)
            ....
funct1 = [1, range(10,101,9), ?????]     
runFunct(funct3)

【问题讨论】:

  • 听起来你只想要一个带有两个参数的函数。第三个值可以在函数本身中计算出来。

标签: python python-3.x numpy


【解决方案1】:

看起来你的函数只有在你的第二个和第三个参数以某种方式相关时才会运行。

所以有两种可能:

  1. 保留您的 3 个参数函数并在函数开头添加一个检查阶段,例如:
def myFunction(i, nrange, frange):
    # Check property
    for n in nrange:
        if not <your relation between n and f>:
            raise ValueError("The relation between nrange and frange is not good")

    # Do what your function must do
  1. 就像 Alex 在 cmets 中所说的那样:如果您的第三个参数可以用第二个参数计算,只需给您的函数提供 2 个参数并计算第三个参数,例如:
def myFunction(i, nrange):
    # Compute frange
    frange = <Way to compute frange from nrange>

    # Do what your function must do

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-19
    • 2015-09-05
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-24
    相关资源
    最近更新 更多