@1Tima1
Меня здесь не любят

Насчет функции передачи(получения) аргументов?

допустим,самая простая функция
def print_kwargs(**args):
    print('keyboard arguments:' ,args)
она нужна,чтобы показать,что можно получать аргументы-ключевые слова
допустим аргумент может быть
такой print_kwargs(wine='merlot')
вылетит это keyboard arguments: {'wine': 'merlot'}
вопрос-почему я не могу записать просто wine=merlot или 'wine'='merlot',питон же все-равно добавит кавычки,однако,когда пишу это вылетает ошибка!
  • Вопрос задан
  • 87 просмотров
Решения вопроса 1
longclaps
@longclaps
Слово в кавычках - строковый литерал.
Слово без кавычек - переменная или ключевое слово.
print_kwargs(wine='merlot') # переменная = "строковый литерал"
{'wine': 'merlot'}  # {'строковый литерал': "строковый литерал"}
wine = merlot # переменная = переменная, вот только 
# переменная merlot должна быть тобою прежде введена, например
merlot = "merlot"
'wine' = 'merlot' # Ну а это уж вовсе ересь
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@mrxor
Simple is better than complex
Именованные аргументы передаются в виде словаря, и соответственно подчиняются синтаксису создания словаря.
Представьте, что когда вы взываете функцию с именованными аргументами python делает dict() от переданных именованных аргументов и кладет его в словарь kwargs, который вы потом и распаковываете выражением ** kwargs.
Выражение dict('wine'='merlot') синтаксически неверно, но если очень хочется кавычки - вы можете сделать print_kwargs(**{'wine':'merlot'}).
Результат будет аналогичен print_kwargs(wine='merlot')
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы