квадратные скобки после вызова функции

1

Я полный новичок на Python и натолкнулся на часть кода, которая меня смущает.

ts, pkt2 = capPort2.wait(1, 45)[0]

Предыдущая строка меня смущает. Я понимаю вызов функции wait с двумя параметрами, но что означает [0] или делает?

Теги:

3 ответа

5
Лучший ответ

Это означает извлечение первого элемента в возвращаемом списком/кортежем функцией.

In [1]: "this is a long sentence".split()
Out[1]: ['this', 'is', 'a', 'long', 'sentence']

In [2]: "this is a long sentence".split()[0]
Out[2]: 'this'
1

Это означает, что возвращаемое значение функции wait является либо списком, либо кортежем, а 0 - индексом элемента из этого вывода. Например:

def func(numericValue):
    return list(str(numericValue))

res = func(1000)
res[0] - > 1

Или:

def convert(value, to_type):
    #do something
    return resuls, convertedValue

res = convert(1100, str)
res[0] - > True
0

Ах, я думаю, этот вопрос ответил мне недавно, но я хотел бы расширить ответ:

Этот вызов:

var value = getUrlVars()["logout_url"];

приведет к установке переменной в значение пары имя-значение 'logout_url', которая возвращается из вызова функции в 'getUrlVars()', правильно? Таким образом, вам не нужно использовать только числовой индекс, он может быть использован для хэш/ассоциативных массивов/словаря /etc результатов функции.

Итак, если это функция getUrlVars:

function getUrlVars() {
    var vars = {};
    var parts = window.location.href.replace (/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) {
            vars[key] = value;
        }
    );
    return vars;
}

Которые возвращают пары ключевых значений (из входного URL-адреса "" http://a.place.com/page.html?name=fred&place=b3&logout_url=some.thing.net/go/here/file.html "), например:

'name'='fred',
'place'='b3',
'logout_url'='some.thing.net/go/here/file.html'         <-- URL encoded, most likely

Поэтому мой вызов функции выше возвращает "some.thing.net/go/here/file.html", в то время как выглядит так:

getUrlVars()["name"]

вернется:

"fred"

Я думаю. :)

- C

Ещё вопросы

Сообщество Overcoder
Наверх
Меню