【问题标题】:Passing same arguments to multiple functions - Python将相同的参数传递给多个函数 - Python
【发布时间】:2013-06-28 01:16:48
【问题描述】:

在下面的 GPA 计算程序中,我的两个函数采用相同的参数。将相同参数传递给两个或多个函数的最佳方法是什么?谢谢!

def main():
    cumulative(ee311=3, cpre281=3, math207=3.67, ee332=3, jlmc101=4)
    print "Your semester 5 gpa is:", sem_5(ee311=3, cpre281=3, math207=3.67, ee332=3, jlmc101=4)[0]

def cumulative(ee311, cpre281, math207, ee332, jlmc101):
    qpts_so_far = 52 + 40.97 + 47.71 + 49
    total_qpts = qpts_so_far + sem_5(ee311=3, cpre281=3, math207=3.67, ee332=3, jlmc101=4)[1]
    total_gpa = total_qpts/(13 + 13 + 13 + 15 + 17)
    print "Your cumulative GPA is:", total_gpa

def sem_5(ee311=3, cpre281=3, math207=3.67, ee332=3, jlmc101=4):
    sem_5_qpts = 4*ee311 + 4*cpre281 + 3*math207 + 3*ee332 + 3*jlmc101
    sem_5_gpa = (sem_5_qpts)/17.0
    return sem_5_gpa, sem_5_qpts

if __name__ == '__main__':
    main()

【问题讨论】:

  • 仅供参考:您的 cumulative 函数从不使用传递给它的参数。您的意思是将它们传递给sem_5 吗?如果是这样,您可以更轻松地将其更改为def cumulative(**kwargs),然后调用+ sem_5(**kwargs)

标签: python function arguments parameter-passing


【解决方案1】:

您可以使用** 将相同的字典传递给每个人(请参阅here):

args = dict(ee311=3, cpre281=3, math207=3.67, ee332=3, jlmc101=4)
cumulative(**args)
print "Your semester 5 gpa is:", sem_5(**args)[0]

【讨论】:

  • 以 args 的元组/列表开头也可以正常工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-08
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 2018-03-26
  • 2021-11-11
  • 2020-05-01
相关资源
最近更新 更多