Skip to main content
 首页 » 编程设计

python之关于python变量作用域的一个小问题

2025年05月04日8cmt

我是 python 的初学者,有一个问题,让我很困惑。 如果我先定义一个函数,但在函数中我必须使用在下面另一个函数中定义的变量,我可以这样做吗?或者如何将另一个函数的返回值导入到一个函数中? 例如:

def hello(x,y): 
    good=hi(iy,ix) 
    "then do somethings,and use the parameter'good'." 
    return something 
 
def hi(iy,ix): 
    "code" 
    return good 

请您参考如下方法:

功能范围hello和 hi是完全不同的。它们没有任何共同变量。

请注意调用 hi(x,y) 的结果是一些对象。您将该对象保存为名称 good在函数中 hello .

名为good的变量在 hello是一个不同的变量,与名为 good 的变量无关在函数中 hi .

它们的拼写相同,但存在于不同的命名空间中。为了证明这一点,将拼写更改为 good两个函数之一的变量,你会发现事情仍然有效。


编辑。后续:“那么如果我想在hi函数中使用hello函数的结果怎么办?”

没有异常。看hello

def hello(x,y): 
    fordf150 = hi(y,x) 
    "then do somethings,and use the variable 'fordf150'." 
    return something 
 
def hi( ix, iy ): 
    "compute some value, good." 
    return good 

一些脚本计算hello( 2, 3) .

  1. Python 为计算 hello 创建了一个新的命名空间.

  2. 在 hello , x绑定(bind)到对象 2 .绑定(bind)完成位置顺序。

  3. 在 hello , y绑定(bind)到对象 3 .

  4. 在 hello , Python 计算第一个语句,fordf150 = hi( y, x ) , y是 3,x是 2.

    一个。 Python 为计算 hi 创建了一个新的命名空间.

    在 hi , ix绑定(bind)到对象 3 .绑定(bind)完成位置顺序。

    在 hi , iy绑定(bind)到对象 2 .

    在 hi ,发生了一些事情并且good绑定(bind)到某个对象,比如 3.1415926 .

    在 hi , 一个 return被执行;将对象标识为 hi 的值.在本例中,对象的名称为 good并且是对象 3.1415926 .

    hi命名空间被丢弃。 good , ix和 iy消失。然而,对象 ( 3.1415926 ) 仍然是评估 hi 的值。 .

  5. 在 hello , Python 完成第一条语句,fordf150 = hi( y, x ) , y是 3,x是2。hi的值是3.1415926 .

    一个。 fordf150绑定(bind)到通过评估 hi 创建的对象, 3.1415926 .

  6. 在 hello , Python 转向其他语句。

  7. 在某个时候something绑定(bind)到一个对象,比如说 2.718281828459045 .

  8. 在 hello , 一个 return被执行;将对象标识为 hello 的值.在本例中,对象的名称为 something并且是对象 2.718281828459045 .

  9. 命名空间被丢弃。 fordf150和 something消失,x 也是如此和 y .然而,对象 ( 2.718281828459045 ) 仍然是评估 hello 的值。 .

任何名为 hello 的程序或脚本得到答案。