Tom Kadwill
Tom Kadwill

Reputation: 1478

Python function parameter as a global variable

I have written the following function:

  1. it takes in a variable input_name;
  2. The user then inputs some value;
  3. the value is assigned to input_name.

I want to know: the best way to make input_name accessible outside of the function.

I know that defining a variable as global, inside a function, means that it can be used outside of the function. However, in this case the variable acts actually as a parameter of the function so I am not sure how to define it as a global variable.

I appreciate any help with this, please find the code in question below:

def input(input_name, prompt):
    while True:
        data = raw_input(prompt)
        if data:
            try:
                input_name = int(data)
            except ValueError:
                print 'Invalid input...'
            else:
                if input_name >= 0 and input_name < 100:
                    print 'Congratulations'
                    break
                input_name = 'Please try again: '
        else:
            print 'Goodbye!'
            break

month = 0
day = 0
year = 0
century = 0

input(month, "Please enter the month (from 1-12, where March is 1 and February is 12): ")
input(day, "Please enter the day (from 1-31): ")
input(year, "Please enter the year (from 0 - 99, eg. 88 in 1988): ")
input(century, "Please enter the century (from 0 - 99, eg. 19 in 1988): ")

A = month
B = day
C = year
D = century

Upvotes: 6

Views: 24344

Answers (3)

elijaheac
elijaheac

Reputation: 922

Other people are saying something like this:

def input(prompt):
    return value

value = input(param1,param2, ...)

And that's what you really want to be doing, but just so you know, you can use globals() for changing global variables:

def input(input_name, prompt):
    globals()[input_name] = value

Upvotes: 11

Manuel Salvadores
Manuel Salvadores

Reputation: 16525

What you want to do is probably a bad practice. Just return input_name from the input function.

def input(param1,param2):
   return value

value = input(param1,param2, ...)

Upvotes: 1

Ned Batchelder
Ned Batchelder

Reputation: 375574

The simplest thing would be to return the value, and assign it outside the function:

def my_input(prompt):
    #.. blah blah..
    return the_value

month = my_input("Please enter the month")
# etc.

Upvotes: 15

Related Questions