从用户定义的函数调用变量

时间:2014-04-03 02:22:32

标签: python-3.x

代码可能是错误的我只是用它来说明我的观点(但随意指出任何错误)我需要知道如何调用我定义为用户定义函数中的输入的变量。目前我的错误是"全球名称'名称'未定义"

import time

def createIdentity():
    print ("Please Enter your details below")
    time.sleep(1)
    name = input("What is your name?")
    time.sleep(1)
    age = input("How old are you?")
    time.sleep(1)
    gender = input("Are you male or female?")

def recallIdentity():
    print("Your name is " + str(name) + "you are " + str(age) + "And you are a " +     str(gender) + "!")


createIdentity()
recallIdentity()

2 个答案:

答案 0 :(得分:0)

您需要返回createIdentity中输入的值,然后将返回的值传递给recallIdentity。在一个函数中定义的变量名称​​不与在不同函数中具有相同名称的变量相同的变量。

我会用字典来做,因此:

import time

def createIdentity():
    user = dict()
    print ("Please Enter your details below")
    time.sleep(1)
    user['name'] = input("What is your name?")
    time.sleep(1)
    user['age'] = input("How old are you?")
    time.sleep(1)
    user['gender'] = input("Are you male or female?")
    return user

def recallIdentity(user_out):
    print("Your name is " + user_out['name'] + "you are " + user_out['age'] + "And you are a " + user_out['gender'] + "!")

user_dict = createIdentity()
recallIdentity(user_dict)

答案 1 :(得分:0)

默认情况下,函数完全是自包含的。您必须计算变量,或者将它们作为参数传递,或者从其他函数返回它们(另一种形式的计算)。

但是,有全局变量之类的东西。使用全局变量,您可以在一个函数中设置它们,在另一个函数中访问它们,并且值将会延续。

在python中,你必须告诉python变量在每个函数中是全局的,你将它用作全局函数。

例如:

def f():
  x = 1    # NOT global

def g():
  global x
  x = 1    # Global x.

def h():
  print("X is %d" % x)   # NOT a global x

def i():
  global x
  print("X is %d" % x)    # Global x.

在您的示例中,我相信您需要全局行为 - g()和i()函数。