假设有一个函数funx
,它接受多个参数(如funx(item, quantity, price)
)并输出相应的值。
现在我通常可以做的就是调用函数并像这样传递args:funx(Lays, 2, 40)
但是我想要做的就是这样(虽然这会引发错误)
funx(item, quantity, price = input("use format 'Lays, 2, 40', use commas : ").split(','))
一次用户输入... 我本可以做到这一点(我知道它更干净):
def funx(item, quantity, price):
print(item, quantity, price)
def input_funx():
item, quantity, price = input("use format 'Lays, 2, 40', use commas : ").split(',')
return(item, quantity, price)
funx("Monaco", 3, 30)
funx(input_funx())
#but I want some different approach coz i won't be using this input_funx later
并且可以调用funx(input_funx())
并完成工作,但只是探索是否有类似的东西。
这是错误:funx(input("enter in this format '' Lays, 20, 200 ''...use commas for separation : ").split(','))
TypeError: funx() missing 2 required positional arguments: 'quantity' and 'price'
注意:我探讨了lambda函数,如果它可以使用但发现它返回单个参数。(如果错误,请纠正我):3
有没有这样的方式...... funx(item, quantity, price= input("%s,%d,%f"))
...或任何直观的方式(使用字典或列表或任何东西)在单行完成工作。
欢迎任何帮助。先感谢您。
答案 0 :(得分:0)
您可以使用参数扩展并避免所有这些:
def funx(param1, param2, param3):
print("Called with params: {}, {}, {}".format(param1, param2, param3))
funx( * input("use format 'Lays, 2, 40', use commas : ").split(","))
# or if you insist on whitespaces:
# funx( * (a.strip() for a in input("use format 'Lays, 2, 40', use commas : ").split(",")))
话虽如此,没有理由让你的代码难以理解并且难以调试。
答案 1 :(得分:0)
您需要使用.split()
解包从*input(...)
返回的'元组':
>>> def funx(a1,a2,a3):
... print(a1,a2,a3)
...
>>> funx(*input("enter in this format '' Lays, 20, 200 ''...use commas for separation : ").split(','))
输出:
Lays 2 2