Пошел на перерыв и решил настроить мой 2-х секундный декоратор, в ожидании ранней ранней весны (скрестите пальцы). Спустя двадцать минут после добавления зонтов (вам, возможно, придется заменить их на другой символ UTF-8), первая строка сводила меня с ума, независимо от того, что «я буду sh это сработало таким образом», что я бросил в строку.
Наконец, использование оператора +
(вторая строка) устранило мою проблему, хотя его нельзя было использовать в первом разделении. Итак, я спрашиваю вас: почему интервал вообще отсутствует (когда оба оператора конкатенации одинаковы), и, ну, почему этот нестандартный подход работает?
from functools import wraps
def dasher(f):
@wraps(f)
def wrapped(*args, **kwargs):
brella = '\U00002602'
print(f"{brella} #", f"{brella} # "*8, f"{brella}")
print(f"{brella} #", f"{brella} # "*8 + f"{brella}") # concat and crazy
# print("\U00002602 #","\U00002602 # "*8,"\U00002602")
# print(f"\U00002602 #",f"\U00002602 # "*8,f"\U00002602")
print()
return wrapped
@dasher
def dashed():
pass
dashed()
☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂
☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂ # ☂
Pythoni c Рефакторинг
Благодаря ответу Криса Дойла в комментариях, после объяснения различий между ,
и +
, следующие вещи немного усложняются, но расширяют удобство использования, иллюстрируя интервал, избегая при этом необходимости sep=''
.
print(' # '.join(brella*3), '#' ,' xx '.join(brella*5) , '#' ,' # '.join(brella*3))
print(' # '.join(brella*3) + ' o ' +' xx '.join(brella*5) + ' o ' +' # '.join(brella*3))
С выводом:
☂ # ☂ # ☂ # ☂ xx ☂ xx ☂ xx ☂ xx ☂ # ☂ # ☂ # ☂
☂ # ☂ # ☂ o ☂ xx ☂ xx ☂ xx ☂ xx ☂ o ☂ # ☂ # ☂