Мне нужно отредактировать некоторые «аргументы по умолчанию», но не все, как я могу это сделать? - PullRequest
0 голосов
/ 17 января 2019

Итак, давайте начнем с самого начала. В python вы можете писать функции с множеством аргументов, некоторые из них являются «редактируемыми», а некоторые запускаются по умолчанию. Обычно аргументы по умолчанию находятся в самом конце аргумента функции.

Предположим, у меня много параметров по умолчанию, и я хочу отредактировать для упражнения только один из них, который не является первым.

позволяет использовать следующий пример:

foo(val_1,val_2,val_3=0,val_4=1,val_5='true')
    sth here
return sth else

Так что здесь мне нужно определить перед функцией

val_1,val_2

другие аргументы по умолчанию .... как я могу изменить:

val_5,

или

val_4,

без необходимости писать всю функцию

foo(val_1,val_2,val_3=0,val_4=10,val_5='false')

Можно ли написать что-то вроде:

foo(val_1,val_2, ,val_4=10,val_5='false')

(значение val_3 отсутствует)

Ответы [ 3 ]

0 голосов
/ 17 января 2019

Вы можете использовать что-то вроде этого:

def foo(val1, val2 = None, **kwargs):
   return val1, val2, kwargs

print (foo(1))
(1, None, {})
print (foo(1, val3="no declared argument"))
(1, None, {'val3': 'no declared argument'})

kwargs - это диктант с параметрами, которые вы передали своей функции 'foo'. Аргументы со значением по умолчанию должны быть после аргументов без него. И всегда в конце, ** kwargs o ** args. args - это массив с аргументами без явного объявления в функции, а kwargs - это слово.

0 голосов
/ 17 января 2019

В Python, когда вы указываете значение по умолчанию для аргумента, вы делаете его именованной переменной .

Если вы объявите метод со следующим прототипом:

foo(val_1, val_2, val_3=0, val_4=10, val_5='false')

Тогда val_3, val_4 и val_5 именуются переменными со значениями по умолчанию 0, 10 и 'false' соответственно.

Когда вы вызываете этот метод, вы можете опустить любой из них. Таким образом, любой из следующих вызовов является законным:

foo(x, y)

foo(x, y, val_3=3)

foo(x, y, val_3=1, val_5='haha')

Любой неуказанный аргумент будет иметь значение по умолчанию.

0 голосов
/ 17 января 2019

Вы должны написать функцию как

def foo(val_1,val_2,val_3=0,val_4=1,val_5='true'):
    #whatever code you want

тогда выполнение следующих команд не должно вызывать ошибки

print(foo(1,2,val_4=7,val_5='false'))
print(foo(1,2,val_3=6,val_4=9))

Надеюсь, это поможет:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...