Форум сайта python.su
def myfunc(**kwargs):
for k, v in kwargs.items():
print(k, v, sep='->', end=' ')
if kwargs:
print()
def myfunc(**kwargs):
for k, v in kwargs.items():
print(k, v, sep='->', end=' ')
if kwargs:
print()
myfunc(a=5, b=67, c=89)
Отредактировано Vitek64 (Фев. 15, 2023 15:36:14)
Офлайн
Ты, похоже, что-то напутал просто с самим кодом и всё.
>>> def myfunc(*args, **kwargs): ... for a in args: ... print(a) ... if args: ... print('args') ... for k, v in kwargs.items(): ... print(k, v, sep='->', end=' ') ... if kwargs: ... print('kwargs') ... >>> myfunc() >>> >>> myfunc(1) 1 args >>> >>> myfunc(b=2) b->2 kwargs >>> >>> myfunc(1, b=2) 1 args b->2 kwargs >>>
Vitek64Зачем ты в этом пытаешься разобраться? Это явно писал какой-то дурак просто.
Не могу понять для чего оно служит
Vitek64Либо ты напутал, либо дурость написана просто, а ты её хаваешь с открытым ртом. Больше профессиональных книг читай, чтобы научиться отделять говноматериалы в исполнении всяких дураков зачастую малолетних от действительно качественных материалов в исполнении профессиональных программистов и качественных преподавателей к тому же.
Если убрать условие if, получается тот же результат. И так в разных случаях.
Та же история при args/if args:.
Отредактировано py.user.next (Фев. 15, 2023 20:52:06)
Офлайн
py.user.nextЭто код из учебника по питону..
Ты, похоже, что-то напутал просто с самим кодом и всё.
Отредактировано Vitek64 (Фев. 16, 2023 01:03:29)
Офлайн
Vitek64
Это код из учебника по питону
Vitek64Вот это вот, да? Вот прямо так в учебнике и записано?def myfunc(**kwargs):
for k, v in kwargs.items():
print(k, v, sep='->', end=' ')
if kwargs:
print()
Отредактировано py.user.next (Фев. 16, 2023 02:54:48)
Офлайн
py.user.nextНу я собственно не предлагаю никому разбераться в дебилизме. Я, как новичок, просто хочу понять как это, увиденное мной, работает, поэтому и спрашиваю.
Офлайн
Vitek64
А книга, скорее книга а не учебник, которую дебилы написали, мировой компьютерный бестселлер “Изучаем программирование на Python” от Head First.
Vitek64def myfunc(**kwargs):
for k, v in kwargs.items():
print(k, v, sep='->', end=' ')
if kwargs:
print()
Vitek64Там print() в цикле не выводит конец строки, так как аргумент end у функции print() заменён на пробел. Поэтому если аргументы у функции myfunc() есть и они выводились, то после их вывода в одну строку надо вывести перевод строки. Если же аргументов у функции myfunc() нет и они не выводились вообще, то тогда перевод строки выводить после их вывода не надо, так как этого вывода не было.
Подскажите, для чего нужно условие “if kwargs” в подобных функциях.
>>> def myfunc(**kwargs): ... for k, v in kwargs.items(): ... print(k, v, sep='->', end=' ') ... if kwargs: ... print() ... >>> myfunc(a=1) a->1 >>> myfunc(a=1, b=2) a->1 b->2 >>> >>> myfunc() >>>
>>> def myfunc(**kwargs): ... for k, v in kwargs.items(): ... print(k, v, sep='->', end=' ') ... print() ... >>> myfunc(a=1, b=2) a->1 b->2 >>> myfunc() >>>
Отредактировано py.user.next (Фев. 17, 2023 12:42:53)
Офлайн
Vitek64
Подскажите, для чего нужно условие “if kwargs” в подобных функциях. Не могу понять для чего оно служит, и что вообще делает.Без него получаю тот же результат в разных вариациях, при разном количестве переменных.
def myfunc(**kwargs): for k, v in kwargs.items(): print(k, v, sep='->', end=' ') # if kwargs: # print() myfunc(a=1, b=2) myfunc(b=3, c=4) myfunc(d=5,e=6)
a->1 b->2 b->3 c->4 d->5 e->6
def myfunc(**kwargs): for k, v in kwargs.items(): print(k, v, sep='->', end=' ') if kwargs: print() myfunc(a=1, b=2) myfunc(b=3, c=4) myfunc(d=5,e=6)
a->1 b->2
b->3 c->4
d->5 e->6
Офлайн