开发者

Why is this def function not being executed in Python?

Python is simply bringing up another prompt when I enter the following piece of code from Zed Shaw exercise 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)

# th开发者_如何学Gois 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()


The indentation of the last four lines is wrong. Because they're indented, the python interpreter thinks they're part of print_none(). Unindent them, and the interpreter will call them as expected. It should look like this:

>>> print_two("Zed","Shaw")
[... etc ...]


def defines a function. Functions are potential...they a set of steps waiting to be executed. To execute a function in python it must be defined and called.

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

#brings up prompt..then execute it
print_none()


Remove your indentation on the final lines. Because they are indented they are part of print_none() instead of executing in the global scope. Once they are back in the global scope you should see them running.


you need to keep the code aligned. You calls to the above method were treat as part of the function print_none().

Try this:

    # 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()
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜