функция python, передающая несколько аргументов и не использующая их все? - PullRequest
0 голосов
/ 11 июня 2018

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

Кодвыглядит следующим образом:

def player_busts(player,dealer,chips):
    print("Player busts!")
    chips.lose_bet()

Он должен принимать три аргумента: объект игрока, объект дилера и объект фишек.Но почему они использовали только переданный объект фишек?Две другие играют здесь какую-либо роль?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

Это не полный пример кода, особенно если ваш инструктор предоставил его вам.По мере прохождения курса к нему будет добавляться больше функциональности, чтобы показать вам, как шаг за шагом создается полная программа.Скорее всего, вы перепрыгнули через пистолет и разместили здесь этот частичный код.

Во-первых, функция ничего не возвращает, что означает, что она что-то оценивает и на этом останавливается, результат оценки нигде не может быть использован.Это означает, что в эту функцию будет добавлено больше операторов, пока вы не достигнете оператора return.

Во-вторых, chips.lose_bet() - это оператор, вызывающий функцию .lose_bet(), которая также не определена в этом примере.

В-третьих, аргументы в этой функции также могут быть самими функциями, которые будут определены позже;и когда они будут определены инструктором, они могут быть вызваны из этой функции.Есть много возможностей, подобных этим.

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

0 голосов
/ 11 июня 2018

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

Где-то в более крупной программе есть еще одна игровая функция, которая вызывает их.

def play():
    player = ???()
    dealer = ???()
    chips = ???()

    while something:
        if another_thing:
            action = player_wins
        elif something_else:
            action = player_busts
        elif another_thing:
            action = dealer_busts
        else:
            action = push

        action(player, dealer, chips)

Поскольку для некоторых из этих действий необходимо использовать player или dealer или chipsили любой их комбинации, любое вызванное действие должно было бы принять эти параметры, даже если оно их не использует.

Если вы определили player_busts следующим образом,

def player_busts(chips):
    print("Player busts!")
    chips.lose_bet()

Вы получите следующую ошибку, если она будет вызвана в play.TypeError: player_busts takes exactly one argument (3 given)

0 голосов
/ 11 июня 2018

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

...