Python 无法从其他函数调用变量

Python 无法从其他函数调用变量,python,Python,我根据反馈编辑了我的帖子。 基本上,我需要使用函数1中的两个变量,并在函数2中打印它 我该怎么做呢 希望收到你的来信 蛋糕 好的,您的变量被捕获在函数的范围内。要在该范围之外使用它们,您需要将它们返回,例如: def function_one(): number_one = 5 number_two = 6 number_three = 7 return number_one,number_two, number_three def function_two(number1,

我根据反馈编辑了我的帖子。 基本上,我需要使用函数1中的两个变量,并在函数2中打印它

我该怎么做呢

希望收到你的来信

蛋糕


好的,您的变量被捕获在函数的范围内。要在该范围之外使用它们,您需要将它们返回,例如:

def function_one():
  number_one = 5
  number_two = 6
  number_three = 7
  return number_one,number_two, number_three

def function_two(number1, number2, number3):
  print(number1)
  print(number2)
  print(number3)

one, two, three = function_one()
function_two(one, two, three)

在这里,我在不同的范围内对不同的变量进行了不同的命名,以使其更加明显。

好的,因此您的变量被捕获在函数的范围内。要在该范围之外使用它们,您需要将它们返回,例如:

def function_one():
  number_one = 5
  number_two = 6
  number_three = 7
  return number_one,number_two, number_three

def function_two(number1, number2, number3):
  print(number1)
  print(number2)
  print(number3)

one, two, three = function_one()
function_two(one, two, three)

在这里,我在不同的范围内对不同的变量进行了不同的命名,以使其更加明显。

肖恩的回答非常好,非常直截了当,几乎可以肯定你在寻找什么。他建议通过返回变量,将变量带出函数的一个作用域。解决这个问题的另一种方法是用闭包将你的函数2带入函数1的范围

def function_one():
  num_one = 5
  num_two = 6
  num_three = 7

  def function_two():
    print(num_one)
    print(num_two)
    print(num_three)

  return function_two

func_two = function_one()
func_two()
编辑以解决您的评论。您也可以像这样直接调用函数\u 2。但在我看来,这是不太可读和不和谐的


function_one()()

肖恩的答案很好,非常直截了当,几乎可以肯定你在寻找什么。他建议通过返回变量,将变量带出函数的一个作用域。解决这个问题的另一种方法是用闭包将你的函数2带入函数1的范围

def function_one():
  num_one = 5
  num_two = 6
  num_three = 7

  def function_two():
    print(num_one)
    print(num_two)
    print(num_three)

  return function_two

func_two = function_one()
func_two()
编辑以解决您的评论。您也可以像这样直接调用函数\u 2。但在我看来,这是不太可读和不和谐的


function\u one()()

只需使用return语句,它就可以正常工作了

def function_one():
    num=5
    return num

def function_two():
    print(function_one())

function_two()

只要使用return语句,它就会非常有效

def function_one():
    num=5
    return num

def function_two():
    print(function_one())

function_two()

选项1:使用全局变量。 -(例如)

选项2:返回值


选项1:使用全局变量。 -(例如)

选项2:返回值


编写一些新的更简单的代码来提问。尽量用最简单的几行代码来解决问题。谢谢你,彼得,我换了思路。@Cake,太好了,谢谢你。我认为你得到了更有用的答案。写一些新的更简单的代码来提问。尽量用最简单的几行代码来解决问题。谢谢你,彼得,我换了思路。@Cake,太好了,谢谢你。我想你得到了更多有用的答案。非常感谢你的回复。在数组中返回它是最优雅的解决方案吗?要使它优雅,有很多事情要做。我希望能用一种非常简单的方法把事情弄清楚:)走,然后跑:)@Cake这是一个元组,当你返回并分配时它会自动打包和解包。非常感谢你的回复。在数组中返回它是最优雅的解决方案吗?要使它优雅,有很多事情要做。我希望用一种非常简单的方法来把事情弄清楚:)走,然后跑:)@Cake,这是一个元组,当你返回并分配时,它会自动打包和解包。很好,我使用了你的方法。我把函数二放在函数一的范围内。但是,我不确定你对func_two=function_one()的意思。请仔细看看function_one的定义。最后,它返回函数_two,该函数必须分配给一个变量,以便以后调用。这使得func_two成为一个函数,所以你给它添加()来调用它。很好,我使用了你的方法。我把函数二放在函数一的范围内。但是,我不确定你对func_two=function_one()的意思。请仔细看看function_one的定义。最后,它返回函数_two,该函数必须分配给一个变量,以便以后调用。这使得func_二成为一个函数,所以您可以向它添加()来调用它。