Почему эта функция def не выполняется в Python? - PullRequest
0 голосов
/ 23 марта 2011

Python просто вызывает другое приглашение, когда я ввожу следующий фрагмент кода из упражнения Зед Шоу 18.

# this one is like our scripts with argv
def print_two(*args):
    arg1, arg2 = args
    print "arg1: %r, arg2: %r" % (arg1, arg2)

# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2) :
    print "arg1: %r, arg2: %r" % (arg1, arg2)

# this just takes one argument
def print_one(arg1) :
    print "arg1: %r" % arg1

# this one takes no argument
def print_none() :
    print "I got nothin'."


    print_two("Zed","Shaw")
    print_two_again("Zed","Shaw")
    print_one("First!")
    print_none()

Ответы [ 4 ]

4 голосов
/ 23 марта 2011

Отступы последних четырех строк неверны. Поскольку они имеют отступы, интерпретатор python считает, что они являются частью print_none(). Отмените отступ, и переводчик назовет их, как и ожидалось. Это должно выглядеть так:

>>> print_two("Zed","Shaw")
[... etc ...]
1 голос
/ 23 марта 2011

вам нужно сохранить код выровненным. Вызовы вышеупомянутого метода были обработаны как часть функции print_none ().

Попробуйте это:

    # this one is like our scripts with argv
def print_two(*args):
    arg1, arg2 = args
    print "arg1: %r, arg2: %r" % (arg1, arg2)

# ok, that *args is actually pointless, we can just do this
def print_two_again(arg1, arg2) :
    print "arg1: %r, arg2: %r" % (arg1, arg2)

# this just takes one argument
def print_one(arg1) :
    print "arg1: %r" % arg1

# this one takes no argument
def print_none() :
    print "I got nothin'."


print_two("Zed","Shaw")
print_two_again("Zed","Shaw")
print_one("First!")
print_none()
1 голос
/ 23 марта 2011

Уберите отступ в последних строках. Поскольку они имеют отступ, они являются частью print_none() вместо выполнения в глобальной области видимости. Как только они вернутся в глобальную область видимости, вы увидите, что они работают.

1 голос
/ 23 марта 2011

def определяет функцию.Функции являются потенциальными ... они представляют собой набор шагов, ожидающих выполнения.Чтобы выполнить функцию в Python, она должна быть определена и называется .

# this one takes no argument
def print_none() :
    print "I got nothin'."

#brings up prompt..then execute it
print_none()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...