【发布时间】:2017-04-20 22:24:04
【问题描述】:
我对使用* 感到困惑。 first_example 有效,但为什么 second_example 无效?
错误状态:
UnboundLocalError: 在赋值之前引用了局部变量 'a'
我可以做些什么来修复这个错误?
a, b, c, d, e, f, g, h, i = range(1,10)
alphabet = [a, b, c, d, e, f, g, h, i]
def first_example(*alphabet):
j = g + i
print (j)
second_example(*alphabet)
def second_example(*alphabet):
a = a + 1
print (a)
first_example(*alphabet)
【问题讨论】:
-
*不是问题所在。a = a + 1是 -
我能做些什么来修复它?
-
在 second_example() 中添加 'global a'。
-
请注意,您的两个函数实际上都没有对其
alphabet参数执行任何操作。alphabet参数与a、g、i或任何其他变量的变量查找无关。 -
您的 first_example() 有效,因为您正在创建一个名为“j”的新变量,并且只读取“g”和“i”。但是由于您尝试读取 并 修改“a”——未在函数 second_example() 的范围内定义,因此您必须添加“全局”关键字。
标签: python syntax definition