Nav*_*nis 2 python apply python-2.7 python-3.x
认为Atom是其中的一类
以下两行有什么区别?
apply(Atom, [form.name] + list([convert(arg, subst) for arg in
list(form.args)]))
Atom(form.name, [convert(arg, subst) for arg in form.args])
根据文档,
apply(...)apply(object [,args [,kwargs]])-> value
调用可调用对象,其位置参数取自元组args,关键字参数取自可选字典kwargs。请注意,类可以调用,带call()方法的实例也可以调用。
我无法理解两条线之间的区别。我正在尝试apply(Atom, [form.name] + list([convert(arg, subst) for arg in list(form.args)]))在Python 3.5中找到等效的代码
apply是一个老派1种的方式拆包参数。换句话说,以下所有结果均相同:
results = apply(foo, [1, 2, 3])
results = foo(*[1, 2, 3])
results = foo(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
由于您正在使用apply不再存在的python3.5 ,因此该选项无效。此外,您将参数作为列表使用,因此您也无法真正使用第三个选项。剩下的唯一选择是第二个。我们可以轻松地将您的表达方式转换为该格式。python3.5中的等效项为:
Atom(*([form.name] + [convert(arg, subst) for arg in list(form.args)]))
Run Code Online (Sandbox Code Playgroud)
1在python2.3中已弃用!