Рассмотрим Atom быть классом, гдеВ чем разница между функцией apply() и вызовом функции с использованием объекта класса?
- form.name является строкой
- новообращенный возвращает список значений
В чем разница между следующими двумя линиями?
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])
Из документации,
применяются (...) применить (объект [, арг [, kwargs]]) -> значение
Позвонить вызываемый объект с позиционными аргументами, взятыми из кортежей args, и аргументы ключевых слов, взятые из необязательного словаря kwargs. Обратите внимание, что классы вызываются, как и экземпляры с вызовом ().
Я не могу понять разницу между двумя линиями. Я пытаюсь найти эквивалентный код для apply(Atom, [form.name] + list([convert(arg, subst) for arg in list(form.args)]))
в Python 3.5
Это работает .. но можете ли вы сказать мне, какая концепция используется здесь, чтобы я мог прочитать об этом. Что такое Atom (* ...)? Что представляет собой *? –
Получил! http://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-parameters –
@Dennis - Вот как мы теперь распаковываем аргументы в современном python. Я добавил ссылку выше, где вы можете прочитать больше об этом в учебнике python. – mgilson