RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону

Как запретить давать атрибуты функции без ключей?

Где-то в какой-то статье видел способ с помощью которого аргументы функции можно передать только по ключу.
Для наглядности:
def foo(a, b): # обычная
   print(a+b)

def func( *что-то* a, b): # с доступом по ключу 
    print(a+b)

foo(1, 2) # 3
foo(a=1, b=2) # 3

func(1, 2) # error
func(a=1, b=2) # 3
  • Вопрос задан
  • 66 просмотров
Решения вопроса 4
@deliro
def f(*, a, b):
    ...
Ответ написан
Комментировать
@twistfire92
Python backend developer
def func(*, a, b):
    print(a+b)
Ответ написан
Комментировать
shurshur
@shurshur
Сисадмин, просто сисадмин...
def func(param1, param2, *, param3, param4, ...):

* означает, что дальше будут только keyword-аргументы. До звёздочки будут обычные позиционные аргументы.
Ответ написан
Комментировать
@dilmah949
FULLSTECK разработчик на Python
Читайте про позиционные (кортежи) и именованные (словари) аргументы.
Читайте про позиционные (кортежи) и именованные (словари) аргументы.  
def func(*args, **qwargs):
    if args:
       sum = 0
       for i in args:
           sum += i
        print(sum)
    if qwargs:
        sum2 = 0
        for v in qwargs.values():
            sum2 += v
        print(sum2)

func(1, 2) #3
func(a=1, b=2) #3
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы