Python 函数无法访问全局变量?
Python functions don't have access to global variable?
我熟悉 Java 和 JS 等其他语言,并且刚刚学习 Python 令我困惑的是:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
但是我总是报错UnboundLocalError: local variable 'upper_case' referenced before assignment
"references before assignment" 是什么意思?但是我已经在全局之前声明了这个变量??
在函数内部,需要使用global
关键字。
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
您必须添加全局
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)
结果
1 4
该错误是因为您正在尝试执行以下操作:lower_case += 1
,与 lower_case = lower_case +1
相同。由于 lower_case
没有初始值,因此无法进行此操作。解决它的方法是添加这两行:
upper_case = 0
lower_case = 0
你应该这样做:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)
你可以做到这一点
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
或如global
关键字所述
我熟悉 Java 和 JS 等其他语言,并且刚刚学习 Python 令我困惑的是:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
但是我总是报错UnboundLocalError: local variable 'upper_case' referenced before assignment
"references before assignment" 是什么意思?但是我已经在全局之前声明了这个变量??
在函数内部,需要使用global
关键字。
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
您必须添加全局
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
global upper_case
global lower_case
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)
结果
1 4
该错误是因为您正在尝试执行以下操作:lower_case += 1
,与 lower_case = lower_case +1
相同。由于 lower_case
没有初始值,因此无法进行此操作。解决它的方法是添加这两行:
upper_case = 0
lower_case = 0
你应该这样做:
upper_case = 0
lower_case = 0
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
upper_lower(s)
你可以做到这一点
s = "Hello"
def upper_lower(s):
upper_case = 0
lower_case = 0
for c in s:
if c.islower():
lower_case += 1
elif c.isupper():
upper_case += 1
print(upper_case, lower_case)
或如global
关键字所述