繁体   English   中英

Python在另一个函数中使用一个函数的变量

[英]Python Using variable from one function in another

在一个函数中,我获得了三条信息并将它们写入一个文本文件。 在另一个函数中,我写了一条信息(代码)。

变量FirstName, SecondName, Codefunction1没有已知function2 -我该如何解决这个问题? / 将它们从一个函数传递到另一个函数?

def function1():
    FirstName = input("Enter First Name")
    SecondName = input("Enter Surname")
    Code = input("Enter Code")

AllDetails = (GuestFirstName, GuestSecondName, Code)
f = open("AllDetails.txt","w") 
f.write(str(AllDetails))    
f.close()

menu()

def function2():           
    Newcode = input ("Enter if new code needed")
    if Newcode == "Y":
        Code = "****"
        AllDetails = (FirstName, SecondName, Code)
        f = open("AllDetails.txt","w") 
        f.write(str(AllDetails))
        f.close()

menu() 

如何return函数的值并将它们分配给这样的变量

def function1():
    FirstName = input("Enter First Name")
    SecondName = input("Enter Surname")
    Code = input("Enter Code")
    return FirstName, SecondName, Code

然后您可以分配它们并在其余代码中使用它们

FirstName, SecondName, Code = fucntion1()

您现在甚至可以像这样将它们传递给fucntion2()

def function2(FirstName, SecondName, Code);
    ....

然后像这样调用function2

function2(FirstName, SecondName, Code)

我建议在您的函数定义中使用通用名称,并在camel_case 上使用snake_case

这是我将如何修改整个事情:

def get_info():
    first = input("Enter First Name")
    second = input("Enter Surname")
    user_code = input("Enter Code")
    return  first, second, user_code

def write_info(f_name, s_name, code_in):
    new_code  = input ("Enter if new code needed")
    if new_code == "Y":
        code_in = "****"
        all_details = (f_name, s_name, code_in)
        f = open("AllDetails.txt","w")
        f.write(str(all_details))
        f.close()
    else:
        pass

first_name, second_name, code = get_info()
write_info(first_name, second_name, code)

all_details = (guest_first, guest_second, code)
f = open("AllDetails.txt","w") 
f.write(str(all_details))
f.close()

menu()

再次不确定总体目标是什么,但这将帮助您解决一些阻碍您实现目标的问题。 这里缺少信息, menu没有定义。

在函数内定义的变量被 python 认为是Local variable 与其他编程语言不同,Python 不需要显式声明局部变量,而是使用周围的上下文来确定变量是全局变量还是局部变量。

如果要为这两个函数使用三个变量first_namesecond_namecode ,则有两个选择:

选项 1

将三个变量移到函数定义之外,使它们成为全局变量。

选项2

将变量从一个函数传递到另一个函数。

至于您正在编写的特定程序,我会选择第一个。 我已经相应地编辑了您的代码,请阅读评论以获取有关如何改进写作的进一步说明。

first_name = input("Enter First Name: ") # Note the lowercase names for the 
second_name = input("Enter Surname: ")   # variables. This is not obligatory,
code = input("Enter Code: ")             # but it is good practice.

def function1():

    all_details = first_name+'_'+second_name # the + replaces the tuple,
                                   # because filename that you want to create must be
                                   # necessarily a string, not a tuple
    f = open(all_details+'.txt',"w") 
    f.write(first_name+','+second_name+','+code)    
    f.close()

# menu() # I presume menu() is the function that does something magical,
         # and either calls function1() or function2(). You don't want to call it twice probably

def function2():

    new_code_needed = input ("Enter \'Y\' if new code needed: ")
    if new_code_needed == "Y":
        code = "****"
        all_details = first_name+'_'+second_name # Same as above
        f = open(all_details+".txt","w") 
        f.write(first_name+','+second_name+','+code)
        f.close()

menu() 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM