Здравствуйте, у меня есть странное сомнение ..

Мой код

    def prints():
        print " I WILL DIE HEHE"

    def add(a,b):
        next = a
        print " Added sum is %d " % (next + b)
        next = prints()


    w = int(raw_input("Give a"))
    g = int(raw_input("Give b"))
    add(w,g)

Теперь проблема в том, почему функция prints () выполняется, когда я назначаю ее следующему, т.е. next = prints (). Я немного смущен.

0
Aakash 22 Янв 2013 в 02:35

2 ответа

Лучший ответ

Потому что ты это называешь,

prints()

Выполнит где как

ne = prints
ne() 

Назначает имя, а затем вызывает новое имя.

Блокнот, я также называю его ne, поскольку next скрывает встроенный метод

6
Jakob Bowyer 21 Янв 2013 в 22:36

Последующий:

next = prints()

Вызывает prints() и присваивает результат next. Поскольку prints() явно ничего не возвращает, он неявно возвращает None, и поэтому next установлен в None.

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

next = prints

Для этого нужно назначить объект функции next. Он не вызывает функцию, но позволяет вызывать ее как next().

2
NPE 21 Янв 2013 в 22:36