【问题标题】:Python Using star (*) [duplicate]Python使用星号(*)[重复]
【发布时间】: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 参数与 agi 或任何其他变量的变量查找无关。
  • 您的 first_example() 有效,因为您正在创建一个名为“j”的新变量,并且只读取“g”和“i”。但是由于您尝试读取 修改“a”——未在函数 second_example() 的范围内定义,因此您必须添加“全局”关键字。

标签: python syntax definition


【解决方案1】:

不确定您要做什么(因为未使用 alphabet 参数),或者您为什么认为 * 是问题所在,但这会解决问题。

def second_example(*alphabet):
    global a  # add this
    a = a + 1
    print (a)

【讨论】:

  • 谢谢!简单,就像一个魅力!
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
  • 2022-08-03
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 2020-05-03
相关资源
最近更新 更多