函数内的全局变量的局部变量

时间:2016-01-09 18:36:11

标签: python

简单的问题。 如何将函数中的局部变量转换为全局变量?这是我的代码,例如,在我的函数中我有三个主要的if语句,最后一个是不能查看因为我基本上缩短了网站上的代码,如果我选择1作为我的选择,我会完成该部分,然后我会按2.它会立即说“分配前引用的局部变量'键'”。提前谢谢。

def start():
    print("Welcome to the Encryption / Decryption program!\n-------------------------------------------")
    print("Please select a number (1-3) corresponding to the instruction you would like")
    menuInput = input("[1] Encrypt a message\n[2] Decrypt a message\n[3] Exit the program\n\n-------------------------------------------\n")

    if menuInput == '1':
        print("You have chosen to Encrypt a message!")
        invalid_input = False
        encrypt = input("Please type in the name of the file containing the non-encrypted message\n")
        encrypt = encrypt.upper()
        message = open("sample.txt","r")
        msg = ''

        for words in message:
            msg += str(words)

        if encrypt == "SAMPLE":
            key = ''
            for i in range(0,8):
                random_number = (random.randint(33,126))
                key+=str(chr(random_number))
            print(key)
            print("You will need this key to decrypt your file!")
            time.sleep(1.5)
            print("Encrypting your file now...")
            time.sleep(5)

    elif menuInput == '2':
        print("You have chosen to decrypt a message!")
        invalid_input = False

        print(key)

显然我会调用不同的变量,我只是使用变量'key'来使它更容易理解。另外,如果有任何人有关于写入文件和在python本身内重命名文件的任何提示,那么由于我对python相当新,所以也是一个巨大的帮助所以是的!非常感谢你的帮助,我非常感谢你!

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

key = None

def start():
    global key
    # and so on...

但不建议使用全局变量。您应该考虑其他选项,如评论中所建议的那样。无论如何,如果你刚开始使用Python已经足够了,那么就有时间编写更好的代码了!

希望它有所帮助。