访问函数内所有参数名称和所有参数值的列表

我正在尝试为我希望函数采用的参数创建一个名称列表。长度应该是32,我想要类似的东西,bs=[b0,b1,b2,...,b31]但我不想b0,b1,...手写,所以有没有办法用 Python 编写一个可以生成这样一个列表的小程序?


编辑:无论如何要使参数值不是字符串?我试图将它们作为参数放在一个函数中,如下所示:


def chiwork(a0,a1,a2,a3,bs):

    ana=np.array([a0,a1,a2,a3])

    betalat=[0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,3,3,3,3]

    chia=sum((ana-a)**2)+sum((bs*a[betalat]-amssr)**2)

    return chia

该函数需要“知道”有 32 个 bs,但是当 bs 中的元素在列表中时,无法将其解包。


青春有我
浏览 248回答 2
2回答

海绵宝宝撒

使用列表理解:bs=['b'+str(i) for i in range(32)]

慕尼黑5688855

我认为这可以满足您的所有要求,充分利用Python 的函数对象数据模型:def my_func (b1, b2, b3, a1, a2, a3):    par_names = my_func.__code__.co_varnames[:6]    # A tuple of strings of all param names                                                    # It's ok to hard-code 6.    local_ns = locals()    par_vals  = [local_ns[x] for x in par_names]    # A list of all param values    another_func(par_vals[0], par_vals[3])    another_func(*par_vals[0:2])                    # Unpacking first 2 paramsdef another_func(param1, param2):    print ("Inside another_func, (param1, param2) are:", param1, ",", param2)my_func(10, 20, 30, 40, 50, 60)输出:Inside another_func, (param1, param2) are: 10 , 40Inside another_func, (param1, param2) are: 10 , 20笔记:对于参数名称b1,无需遵循, b2,等命名约定。适用于任意数量的参数(不仅仅是示例中的 32 个)。即使某些参数是 kwargs 也能工作。如文档所述,__code__.co_varnames将包含参数名称,后跟局部变量名称。因此,我们对前 6 个元素进行索引,以仅获取参数名称。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python