JBe*_*ker 2 python function python-3.x
我有一个带有4个参数的函数,并希望检查这4个参数.目前我这样做:
def function1(arg1, arg2, arg3, arg4):
arg1 = function2(arg1)
arg2 = function2(arg2)
arg3 = function2(arg3)
arg4 = function2(arg4)
def function2(arg):
arg = dosomething(arg)
return arg
Run Code Online (Sandbox Code Playgroud)
我认为这不是一个很好的方法,所以我的想法是做这样的事情:
def function1(arg1, arg2, arg3, arg4):
for arg in listOfArguments:
arg = function2(arg)
def function2(arg):
arg = checkSomething(arg)
return arg
Run Code Online (Sandbox Code Playgroud)
有没有办法在Python中获取传递给所有参数的列表function1?
感谢您的帮助和想法.
既然你有一组参数的数目只是创建一个迭代了出来,例如,在字面上的元组包的参数名:
for arg in (arg1, arg2, arg3, arg4):
# do stuff
Run Code Online (Sandbox Code Playgroud)
如果你不介意你的函数能够被更多args调用,那么只需使用*args语法:
def function1(*args):
for arg in args:
arg = function2(arg)
Run Code Online (Sandbox Code Playgroud)
然后公开调用函数的参数作为可以迭代的元组.
如果你需要存储的结果每次调用时,最好是改变for-loop在列表理解创建返回值的列表.例如,给定一个取值的函数并简单地添加2它:
def add2(arg):
return arg + 2
def function1(arg1, arg2, arg3, arg4):
a1, a2, a3, a4 = [add2(arg) for arg in (arg1, arg2, arg3, arg4)]
print(a1, a2, a3, a4)
Run Code Online (Sandbox Code Playgroud)
我们创建一个列表理解,它将每个arg并提供给它add2,然后将它作为条目存储在列表中,然后我们解压缩到a1,..,aN.这些值现在包含函数调用的结果:
function1(1, 2, 3, 4)
3, 4, 5, 6
Run Code Online (Sandbox Code Playgroud)
在以前的示例(arg1, arg2, arg3, arg4)中,args如果*args在定义函数时使用语法,则总是可以替换,结果将类似.
作为附录,如果你更喜欢函数式编程,你可以随时map使用函数的参数并保存一些字符:-).我将添加这个时间的*args定义function1:
def function1(*args):
a1, a2, a3, a4 = map(add2, args)
print(a1, a2, a3, a4)
Run Code Online (Sandbox Code Playgroud)
结果相同.