如何使用另一个函数的 return 值作为另一个函数的参数?发现名称错误

How to use another function's return value as an argument for another function? Name Error found

我是 python 的初学者,一直被这个问题困扰。我正在尝试使用一个函数的 return 值作为另一个函数的参数,但我会得到一个名称错误:

NameError: name 'azi' is not defined

这是我的代码

 def convert(bear1):
     azi = []
     dms = []
     dd1 = []
     for x in bear1:
         a = x.split(" ")
         b = a[1].split("-")
         dms = [float(m) for m in b]
         d, m, s = dms
         dd = d + float(m)/60 + float(s)/3600

         if "N" in a and "W" in a:
             az = 180 - dd
             azi.append(az)
        
         elif "S" in a and "W" in a:
             az = dd
             azi.append(az)
        
         elif "N" in a and "E" in a:
             az = 180 + dd
             azi.append(az)
       
         elif "S" in a and "E" in a:
             az = 360 - dd
             azi.append(az)
     return azi

def latdep(dist1, azi):
     azi = convert(bear1)
     lat = []
     dep = []
     for dst, ang in zip(dist1, azi):
         lat.append(-dst * math.cos(math.radians(ang)))
         dep.append(-dst * math.sin(math.radians(ang)))
     return lat, dep

谢谢!

定义函数时,必须定义函数将使用哪些变量,def(var1, var2, ...)。在您的 latdep 函数中,您似乎希望 azi 成为转换函数 returns 的内容,但是您正试图在函数内而不是在 var2 位置定义它。 (如评论所述)你在 latdep 中的第一行会覆盖你的 azi 输入。

IIUC,你想从 latdep 中删除行 azi = convert(bear1),并调用如下函数(假设 dist1 和 bear1 已经定义):

latdep(dist1, convert(bear1))
def convert(bear1):
    # ...

def latdep(dist1, azi):
    # remove the 'azi' line
    lat = []
    dep = []
    for dst, ang in zip(dist1, azi):
        lat.append(-dst * math.cos(math.radians(ang)))
        dep.append(-dst * math.sin(math.radians(ang)))
    return lat, dep




dist1 = # define dist1
bear1 = # define bear1
latdep(dist1, convert(bear1))

只需调用 latdep() 即可,无需使用 azi。 但是你忘了将 bear1 传递给函数 互相改变。

示例:

a, b = latdep(dist1, bear1)

并更改第二个参数:

def latdep(dist1, bear1):