метод против свойства Что быстрее? - PullRequest
1 голос
/ 25 сентября 2019

В bs4.BeautifulSoup есть bs4.element.Tag объект.У него есть свойство text и метод get_text.Оба возвращают один и тот же результат около text(str).

И мне стало любопытно узнать о

"method vs property"

Какой доступ быстрее?

Я проверяю свое местное на time.time(), но в каждом прогоне результаты меняются.

Это бесполезное любопытство?

1 Ответ

1 голос
/ 25 сентября 2019

Атрибут text может давать только текст, как он есть.

Принимая во внимание, что get_text() может выполнять некоторую «настройку».Как вставка разделителя между текстом различных тегов или удаление пробелов с концов строк.


get_text() принимает следующие параметры:

  • separator: вставить строку в качестве разделителя между текстами отдельных тегов.
  • strip: зачистить концы текстов тегов от пробелов.

Рассмотреть

html_str = """
<div>
\nHello
  <span>World!</span>
  <a href="">Click here</a>
</div>
"""
soup = BeautifulSoup(html_str, 'html.parser')

Если мы рассмотрим текст тега <div> как

soup.text

, это будет

'\n\n\nHello\n  World!\nClick here\n\n'

Если используется аргумент strip

>>> soup.get_text(strip=True)
'HelloWorld!Click here'

Если используется separator аргумент

>>> soup.get_text(separator='**')
'\n**\n\nHello\n  **World!**\n**Click here**\n**\n'

Если используются оба separator и strip

>>> soup.get_text(separator='**', strip=True)
'Hello**World!**Click here'

Время выполнения примерно равното же самое.

%timeit soup.text
4.16 µs ± 56.8 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit soup.get_text(strip=True)
5.38 µs ± 154 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit soup.get_text(separator='**')
4.16 µs ± 53.7 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)

%timeit soup.get_text(separator='**', strip=True)
5.45 µs ± 213 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...