string.split (текст) или text.split ():какая разница?

На платформах с функцией select (POSIX, Linux и Windows) вы можете сделать:

void sleep(unsigned long msec) {
    timeval delay = {msec / 1000, msec % 1000 * 1000};
    int rc = ::select(0, NULL, NULL, NULL, &delay);
    if(-1 == rc) {
        // Handle signals by continuing to sleep or return immediately.
    }
}

Однако в настоящее время существуют лучшие альтернативы.

13
задан smci 23 August 2018 в 20:55
поделиться

5 ответов

Интересно, docstrings для этих двух не являются полностью тем же в Python 2.5.1:

>>> import string
>>> help(string.split)
Help on function split in module string:

split(s, sep=None, maxsplit=-1)
    split(s [,sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string s, using sep as the
    delimiter string.  If maxsplit is given, splits at no more than
    maxsplit places (resulting in at most maxsplit+1 words).  If sep
    is not specified or is None, any whitespace string is a separator.

    (split and splitfields are synonymous)

>>> help("".split)
Help on built-in function split:

split(...)
    S.split([sep [,maxsplit]]) -> list of strings

    Return a list of the words in the string S, using sep as the
    delimiter string.  If maxsplit is given, at most maxsplit
    splits are done. If sep is not specified or is None, any
    whitespace string is a separator.

Рытье глубже, Вы будете видеть, что две формы абсолютно эквивалентны, как string.split (s) на самом деле вызовы s.split () (ищите , разделяет - функции).

21
ответ дан 1 December 2019 в 17:55
поделиться

Эти string.split(stringobj) функция string модуль, который должен быть импортирован отдельно. Когда-то давно это было единственным способом разделить строку. Это - некоторый старый код, на который Вы смотрите.

Эти stringobj.split() функция строкового объекта, stringobj, который более свеж, чем string модуль. Но довольно старый, тем не менее. Это - существующая практика.

13
ответ дан 1 December 2019 в 17:55
поделиться

Дополнительное примечание: str строковый тип, как S.Lott указывает выше. Это означает что эти две формы:

'a b c'.split()
str.split('a b c')

# both return ['a', 'b', 'c']

... эквивалентны, потому что str.split несвязанный метод, в то время как s.split связанный метод str объект. Во втором случае строка, которая передается в str.split, используется в качестве self в методе.

Это не имеет большого значения здесь, но это - важная функция того, как объектная система Python работает.

[еще 117] информация о связанных и несвязанных методах.

5
ответ дан 1 December 2019 в 17:55
поделиться

Короткий ответ: строковый модуль был единственным способом выполнить эти операции перед python 1.6 - они были с тех пор добавлены к строкам как методы.

5
ответ дан 1 December 2019 в 17:55
поделиться

Используйте, какой бы ни Вы любите, но понимаете, что str.split является рекомендуемым способом сделать его. :-)

string.split является немного более старым методом выполнения того же самого.

str.split немного более эффективен (так как Вы не должны импортировать строковый модуль или искать любые имена от него), но недостаточно иметь огромное значение, если Вы предпочитаете string.split.

1
ответ дан 1 December 2019 в 17:55
поделиться
Другие вопросы по тегам:

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