Python 函数中的变量没有返回值

Python not returning value to variable in function

我在编写这段代码时遇到困难,它应该输出两点之间的斜率和距离。

在 python 可视化工具中查看它,它似乎能够计算值,但是,距离变量没有保存它的值。它被斜率的值覆盖。

我无法理解我应该如何在函数定义中使用 return,因为这似乎是问题所在。

def equation(x,y,x1,y1):
  distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
  if x!=x1 and y1!=y:
    slope=(y1-y)/(x1-x)
    return slope
  else:
    slope='null'
    return slope
  return distance
slope=equation(1,3,2,1)
print(slope)
distance=equation(1,3,2,1)
print(distance)

此处代码的输出对于两个变量都是相同的。

Return 语句在遇到它时从函数中退出。 Return 来自函数的元组。

def equation(x,y,x1,y1):
    # calculate slope and distance
    return slope, distance

slope,distance = equation(1,3,2,1)
print(slope)
print(distance)

如果您希望两者都是不同的函数调用,即 slope=equation(1,3,2,1)distance=equation(1,3,2,1),请尝试第一种方法,如果您希望两者都在一行中调用,即 slope, distance=equation(1,3,2,1) 那么尝试第二种方法:

第一种方法

import math
def equation(x,y,x1,y1,var):
  if var == "slope":
    if x!=x1 and y1!=y:
      slope=(y1-y)/(x1-x)
      return slope
    else:
      slope='null'
      return slope
  elif var == "distance":
    distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
    return distance
slope=equation(1,3,2,1,"slope")
print(slope)
distance=equation(1,3,2,1,"distance")
print(distance)

第二种方法

def equation(x,y,x1,y1):
  distance=math.sqrt(((x-x1)**2)+((y-y1)**2))
  if x!=x1 and y1!=y:
    slope=(y1-y)/(x1-x)
    return slope,distance
  else:
    slope='null'
    return slope,distance
slope, distance=equation(1,3,2,1)
print(distance)
print(slope)