Вы можете использовать kwargs
для этого следующим образом:
def some_func(**kwargs):
my_dict = dict(
a=1,
b=2,
c=3,
d=4
)
my_dict.update(**kwargs)
Это установит ваши значения по умолчанию, а затем переопределит их с помощью kwargs.
Возможно, лучше дать более ограниченный вклад в диктовку, просто используя аргументы по умолчанию, например:
def some_func(a=1, b=2, c=3, d=4):
my_dict = dict(
a=a,
b=b,
c=c,
d=d
)
Это более безопасно и делает ваши намерения более понятными для того, кто читает ваш код. Но менее гибок по сравнению с kwargs
.
Это не ошибка, и она прекрасно работает внутри слов. Проблема, с которой вы здесь столкнулись, заключается в том, что {1..9}
не является подстановочным выражением, как *
; как показывает ваш эхо-пример, это итеративное расширение. Таким образом, ваш пример zgrep точно такой же, как если бы вы вводили каждую альтернативную версию в командную строку, а затем, поскольку в man2 нет man-страниц, начинающихся с zsh, происходит ошибка. (Причиной ошибки является невозможность найти совпадение, а не что-либо, что неразрывно связано с расширением последовательности фигурных скобок.)
Если вы сделали это, с другой стороны:
zgrep -c compinit /usr/share/man/man[1-9]/zsh*
вы получите ожидаемые результаты, потому что [1-9]
- это нормальное групповое выражение.