Python循环中的引用问题

Python循环中的引用问题,python,loops,Python,Loops,今天我开始学习Python(我只熟悉R)。我试图写一个随机循环,但我真的不知道问题是什么: hello = ["hi!"] def idea(a): for i in range(a): if i == 1: hello = hello + ["!"] print(hello) elif i == 2: print(":-)"

今天我开始学习Python(我只熟悉R)。我试图写一个随机循环,但我真的不知道问题是什么:

hello = ["hi!"]

def idea(a):
    for i in range(a):
        if i == 1:
            hello = hello + ["!"]
            print(hello)
        elif i == 2:
            print(":-)")
        else:
            print(":-/")

idea(4)
结果是错误消息

赋值前引用的局部变量“hello”

我期待像这样的事情
:-/嗨!!:-):-/:-/

当您在本地上下文中分配变量之前尝试使用该变量时,会引发分配之前引用的错误
本地变量。Python没有变量声明,因此它必须找出变量本身的作用域。它是通过一个简单的规则来实现的:如果函数中有一个变量赋值,那么该变量被认为是局部变量。为了解决这个问题,可以通过在函数中加入全局声明来明确地说它是全局的。global语句不必位于函数定义的开头,但它通常位于该位置。无论放置在何处,全局声明都会在函数中的任何位置生成一个变量到全局变量

global hello


另一种方法是将其添加到函数中,使用
def idea(a,hello)
,然后使用
idea(4,hello)

在函数“idea”中定义的第1行的“hello”变量,因此它在函数中无效。您需要知道“范围”的概念。

连接字符串时不要使用括号[…]。