我试图通过使用命令return
从一个函数调用另一个函数的变量,但没有成功。这是我的示例代码:
def G():
x = 2
y = 3
g = x*y
return g
def H():
r = 2*G(g)
print(r)
return r
H()
运行代码时,出现以下错误NameError: name 'g' is not defined
谢谢!
答案 0 :(得分:1)
您的函数def G():
返回一个变量。因此,在调用它时,需要为返回的变量分配一个新变量。
因此,您可以使用以下代码:
def H():
G = G()
r = 2*G
print (r)
您无需提供此声明:
return r
答案 1 :(得分:0)
尽管您已经接受了以上答案,但我想抽出时间来帮助您学习和清理代码。
NameError: name 'g' is not defined
由于g
是函数G()
的局部变量,因此出现此错误
干净版本:
def multiple_two_numbers():
"""
Multiplies two numbers
Args:
none
Returns:
product : the result of multiplying two numbers
"""
x = 2
y = 3
product = x*y
return product
def main():
result = multiple_two_numbers()
answer = 2 * result
print(answer)
if __name__ == "__main__":
# execute only if run as a script
main()
您的代码有问题
具有清晰的变量和方法名称。 g
和G
可能会使读者感到困惑。
您未使用if __name__ == "__main__":
您在H()
中返回的内容以及H()
函数都是不必要的。
使用文档字符串帮助提高代码的可读性。
评论中的问题:
我有一个问题,如果我在第一个变量中有两个或多个变量,该怎么办 功能,但我只想调用其中之一
您的函数可以具有任意数量的变量。如果要返回多个变量,则可以使用字典(键,值)列表或元组。这完全取决于您的要求。
是否有必要给新的
a
和b
赋予不同的名称 变量还是可以使用相同的x
和g
?
绝对!!声明另一个名为x
或y
的变量将导致先前的声明被覆盖。这可能会使调试变得困难,并且您和您的代码阅读者会感到沮丧。