`*` In `sorted (iterable, *, key = None, reverse = False)` [duplicate]

Храните файл json в каталоге Assets (parallel to app dir)

. Обратите внимание, что если бы вы сгенерировали с новым новым именем YourAppname - этот каталог ресурсов существует в той же строке с каталогом «app», а службы должны быть дочерним каталогом каталога приложений. Может выглядеть так:

:: app / services / myservice.ts

getOrderSummary(): Observable {
    // get users from api
    return this.http.get('assets/ordersummary.json')//, options)
        .map((response: Response) => {
            console.log("mock data" + response.json());
            return response.json();
        }
    )
    .catch(this.handleError);
} 
129
задан Brickgao 18 May 2016 в 18:33
поделиться

3 ответа

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

См. этот ответ или документации Python 3 для более подробной информации.

116
ответ дан Community 19 August 2018 в 08:11
поделиться
  • 1
    Обратите внимание, что все позиционные (неназванные) аргументы, включая *args, должны встречаться перед голым *. – BallpointBen 9 June 2017 в 19:48
  • 2
    Также обратите внимание, что существует своего рода копия /, которая отмечает конец аргументов только для позиции ( stackoverflow.com/questions/28243832/… ). – Stephen 25 April 2018 в 17:13

Хотя исходный ответ полностью отвечает на вопрос, просто добавляя немного связанной информации. Поведение для одиночной звездочки происходит от PEP-3102 . Цитирование связанного раздела:

The second syntactical change is to allow the argument name to
be omitted for a varargs argument. The meaning of this is to
allow for keyword-only arguments for functions that would not
otherwise take a varargs argument:

    def compare(a, b, *, key=None):
        ...

В простом английском языке это означает, что для передачи значения для ключа вам необходимо явно передать его как key="value".

29
ответ дан martineau 19 August 2018 в 08:11
поделиться
  • 1
    О, это делает вещи намного яснее. Таким образом, фактически наличие аргумента * аналогично аргументу args *, но поскольку вы его не назвали, его единственный эффект, вероятно, заключается в том, чтобы спокойно сожрать все остальные позиционные аргументы, чтобы заставить остальные аргументы быть ключевым словом -только. – Stephen 25 April 2018 в 17:19
  • 2
    @Stephen, я тоже думал, эффект bare * состоит в том, чтобы сожрать оставшиеся позиционные аргументы, но это не так. Передача дополнительных позиционных аргументов, чем ожидает функция, дает ошибку такого рода: foo() takes exactly 1 positional argument (2 given) – Ajay M 27 May 2018 в 01:49
0
ответ дан laycat 30 October 2018 в 20:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: