Какая разница, когда мы используем и когда не используем () после метода, функции или оператора в Python? - PullRequest
0 голосов
/ 23 сентября 2019

Например,

import pandas as pd
weather = pd.read_csv(r'D:\weather.csv')
weather.count
weather.count()

погода - это один фрейм данных с несколькими столбцами и строками

Ответы [ 2 ]

2 голосов
/ 23 сентября 2019

Это зависит.В общем, этот вопрос не имеет ничего общего с пандами.Ответ имеет отношение к тому, как спроектирован Python.

В этом случае .count - это метод.В частности, метод pandas.DataFrame, и он подтвердит это:

df = pd.DataFrame({'a': []})
print(df.count)

Выходы

<bound method DataFrame.count of Empty DataFrame
Columns: [a]
Index: []>

Добавление () вызовет этот метод:

print(df.count())

Выходы

a    0
dtype: int64


Однако это не всегда так..count мог быть неотзываемым атрибутом (то есть строкой, целым числом и т. Д.) Или свойством.

В этом случае это неотзываемый атрибут:

class Foo:
    def __init__(self, c):
        self.count = c

obj = Foo(42)
print(obj.count)

Будет выводить

42

Добавление () в этом случае вызовет исключение, потому что нет смысла вызывать целое число:

print(obj.count())
TypeError: 'int' object is not callable
0 голосов
/ 23 сентября 2019

Двойные скобки связаны с вызовом метода.

Если вы объявляете такую ​​функцию, которая суммирует два числа:

def sum(a:int, b:int)->int:
    return a+b

Затем вы можете вызвать функцию, используя: sum(1,2).

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

ДляНапример, передача ссылки на функцию может быть полезна для многопоточного управления:

from multiprocessing import Process
t = Process(target=my_long_running_function)

Пожалуйста, просмотрите ответ @roippi для получения дополнительной информации: https://stackoverflow.com/a/21786508/9361998

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...