Reputation: 25
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)
# 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()
Upvotes: 1
Views: 7043
Reputation: 3742
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()
Upvotes: 1
Reputation: 1204
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.
Upvotes: 1
Reputation: 3208
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()
Upvotes: 2
Reputation: 150977
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 ...]
Upvotes: 4