从其他函数导入变量

时间:2017-05-16 07:39:19

标签: python function variables

我已经尝试过搜索并尝试人们为他人制作的建议,但它不适合我,这是我的代码:

def CreateAccount():
    FirstName = input('What is your first name?: ')
    SecondName = input('What is your second name?: ')
    Age = input('How old are you?: ')
    AreaLive = input("What area do you live in?: ")
    return FirstName, SecondName, Age, AreaLive

def DisplayAccountInfo(FirstName,SecondName,Age,AreaLive):
    print("Your Firstname is",FirstName)
    print("Your Secondname is",SecondName)
    print("You are",Age," years old")
    print("You live in the",AreaLive," area")
    return




def ConfirmAccountF():
    ConfirmAccount = input("Do you have an account? y,n; ")
    if  ConfirmAccount == "n":
        CreateAccount()

    else: #ConfirmAccount -- 'y'
        DisplayAccountInfo()

while True:

    ConfirmAccountF()

所以它现在应该无限期地运行,但我想要它做的是传递来自' CreateAccount'进入' DisplayAccountInfo'。

当我按 n 以外的任何内容时,按“确认帐户”'我知道变量是未定义的。

如果我在' DisplayAccountInfo()'中手动设置它然后它不会抛出任何错误。

这只是我在搞乱和试图理解python,如果有人可以提供帮助那就太棒了。

2 个答案:

答案 0 :(得分:0)

使用unpacking operator, *

DisplayAccountInfo(*CreateAccount())

这样做会获取CreateAccount返回的四个字符串的元组,并将它们转换为四个参数,作为单独的参数传递给DisplayAccountInfo。如果您省略了*运算符并且只调用了DisplayAccountInfo(CreateAccount()),那么会将单个元组参数传递给DisplayAccountInfo,从而导致TypeError异常(因为DisplayAccountInfo期待四个论点,而不是一个。

当然,如果您还需要保存从CreateAccount返回的字符串以供日后使用,则需要在调用CreateAccountDisplayAccountInfo之间执行此操作。

答案 1 :(得分:0)

您在CreateAccount()上声明的变量无法从外部通过其名称加入。要将信息传递给另一个函数,您需要先存储其值:

first_name, second_name, age, area = "", "", "", ""

def ConfirmAccountF():
    ConfirmAccount = input("Do you have an account? y,n; ")
    if  ConfirmAccount == "n":
        first_name, second_name, age, area = CreateAccount()

    else: #ConfirmAccount -- 'y'
        DisplayAccountInfo(first_name, second_name, age, area)