【问题标题】:Subordinate function call from main function throwing error从主函数调用从属函数抛出错误
【发布时间】:2022-01-23 21:31:54
【问题描述】:
def main(x1, x2, x3):
  a = ops() + 10
  return print("Result are ", a)

def ops():
  global x1,x2, x3
  y = (x1 + x2 + x3)
  return y

main(10, 7, 3)

    NameError: name 'x1' is not defined

可以看出,我将 x1、x2 和 x3 声明为从属函数中的全局变量,并且已经将这些变量作为主函数的参数。感谢任何帮助。

【问题讨论】:

  • 欢迎来到 Stack Overflow!请拨打tour。你有什么问题?对我来说,这显然行不通,但我有经验的好处。为什么你认为这会奏效?就此而言,您实际上想要完成什么?这似乎是一个XY problem,尤其是因为globals are usually bad。比如,为什么ops() 首先依赖非本地人?为什么不能带参数?\请edit澄清。有关更多提示,请参阅How to Ask
  • 在编写代码时,x1(也包括 x2x3)仅在 main() 内部可用。这是因为它们被列为参数。 ops() 中的 global 行什么也不做,因为没有要引用的全局 x1
  • 你为什么不把你的变量(或列表或其他东西)传递给ops()

标签: python function


【解决方案1】:

最好/最佳实践将 x1、x2、x3 值作为参数传递给 ops 函数: 全局变量不是好的做法,您应该取消它们。 此外,函数最好返回一个值。

def ops(x1, x2, x3):
  y = (x1 + x2 + x3)
  return y

def main(x1, x2, x3):
  a = ops(x1, x2, x3) + 10
  print("Result are ", a)
  return a

main(10, 7, 3)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-30
    • 2021-12-20
    • 2013-01-01
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2015-06-29
    • 1970-01-01
    相关资源
    最近更新 更多