Python3字符串格式赋值导致在赋值之前引用

Bra*_*Lee 3 python format-string

据我所知,在赋值之前有一些关于引用的帖子有增量.

但是,我看到格式字符串的类似问题.

greeting = "hello, {}"

def printHello(name):
   greet = greeting.format(name)
   print(greet)

printHello("Erica")
Run Code Online (Sandbox Code Playgroud)

我有local variable 'greet' referenced before assignment.

任何人都可以解释为什么会这样吗?

此外,此错误偶尔会发生,因此它不具有确定性......

我认为global greeting会解决这个问题吗?

==编辑==

我发现错误来自一个库而不是我的代码抱歉混淆

mar*_*hah 5

这里的问题是你已经重新定义print,因此它会进行递归.将函数名称更改为其他名称应该可以解决问题

greeting = "hello, {}"

def printHello(name):
    greet = greeting.format(name)
    print(greet)
Run Code Online (Sandbox Code Playgroud)