Python - передать значения по умолчанию для аргументов, которые являются функцией других аргументов функции

Я хотел бы написать функцию, в которой значение по умолчанию одного аргумента является функцией некоторых аргументов, которые передаются той же функции. Что-то вроде этого:

def function(x, y = function2(x)):
    ##definition of the function

Можно ли написать такую ​​функцию на Python? Я нашел ответ это для C++. Но в Python нет перегрузки методов

Заранее спасибо.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
4
0
103
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Это не имеет никакого смысла. чего вы пытаетесь достичь? Что такое Y? Это работает? тогда вы должны написать:

def function(x, y = function2):
    ##definition of the function

Если Y - простое значение, вы должны написать:

def function(x, y = None):
    if y is None:
         y = function2(x)
Ответ принят как подходящий

Довольно обычный способ решить эту проблему - использовать None в качестве заполнителя:

def function(x, y=None):
    if y is None:
        y = f2(x)

    pass  # whatever function() needs to do

Кроме того, это был бы лучший способ установить значения по умолчанию для некоторой переменной типа mutabe.

Dmitry Arkhipenko 24.06.2018 10:55

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

Глупый пример здесь https://repl.it/@SiddharthShishu/IntrepidPunctualProspect

def function(x, y=None):
    if y is None:
        y = f2(x)

Имейте в виду, что это будет работать, если такие значения, как нули, пустые коллекции и другие вещи, которые оцениваются как False, НЕ являются допустимым значением для y.

Dmitry Arkhipenko 24.06.2018 10:59

Другие вопросы по теме