Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 嵌套作用域_Python - Fatal编程技术网

Python 嵌套作用域

Python 嵌套作用域,python,Python,我完全理解Python中不同作用域的概念,但我不能清楚地理解这段代码,所以如果有人能向我解释一下,我会很高兴,第18行的返回是什么意思?例如,它不应该是returng()?g在这里是什么意思?它是一个变量吗?输出为0x15b43b0处的z=函数g,这意味着什么 最后一件事,最后一行中的z()表示什么?没有名为z的函数 def f(x): def g(): x='abc' print 'x=',x def h(): z=x

我完全理解Python中不同作用域的概念,但我不能清楚地理解这段代码,所以如果有人能向我解释一下,我会很高兴,第18行的返回是什么意思?例如,它不应该是
returng()
?g在这里是什么意思?它是一个变量吗?输出为0x15b43b0处的z=函数g,这意味着什么

最后一件事,最后一行中的z()表示什么?没有名为z的函数

def f(x):
    def g():
        x='abc'
        print 'x=',x
    def h():
        z=x
        print 'z=',z
    x=x+1
    print 'x=',x
    h()
    g()
    print 'x=',x
    return g

x=3
z=f(x)
print 'x=',x
print 'z=',z
z()

g
是用
def
定义的函数名
g()
调用函数并给出结果,而
g
是函数对象本身的名称(即引用)

是的,有一个功能名为“z”。它等于调用
f(x)
返回的函数,即使用arg
x
调用的函数f。这是函数g,与返回g的
行一致


除了作用域之外,您可能还需要检查高阶函数和闭包概念。

g
是使用
def
定义的函数的名称
g()
调用函数并给出结果,而
g
是函数对象本身的名称(即引用)

是的,有一个功能名为“z”。它等于调用
f(x)
返回的函数,即使用arg
x
调用的函数f。这是函数g,与返回g的
行一致

除了作用域之外,您可能还需要检查高阶函数和闭包概念

第18行的返回是什么意思

它返回函数对象
g
本身

例如,它不应该是returng()吗

不一定。传递函数是完全可以接受的,因为它们只是Python中的对象。
returng
returng()
都是有效的,它们的含义不同

g在这里是什么意思?它是一个变量吗


g
是绑定到函数对象的名称,调用函数对象时会打印
x=abc
,然后返回
None
。是的,
g
是一个变量(它是一个局部变量)

输出为0x15b43b0处的z=函数g,这意味着什么

这意味着名称
z
绑定到内存位置0x15b43b0处名为
g
的函数。(提示:它实际上是绑定到内部作用域中名称
g
的同一个函数对象)

最后一件事,最后一行中的z()表示什么

这意味着调用名称
z
绑定到的对象。i、 e.它调用
f
返回的函数

没有称为z的函数

这里没有
\uuu name\uuu
属性等于
z
的函数。但是名称
z
仍然可以绑定到函数对象。请记住,对象可以有多个名称(或者根本没有名称)

第18行的返回是什么意思

它返回函数对象
g
本身

例如,它不应该是returng()吗

不一定。传递函数是完全可以接受的,因为它们只是Python中的对象。
returng
returng()
都是有效的,它们的含义不同

g在这里是什么意思?它是一个变量吗


g
是绑定到函数对象的名称,调用函数对象时会打印
x=abc
,然后返回
None
。是的,
g
是一个变量(它是一个局部变量)

输出为0x15b43b0处的z=函数g,这意味着什么

这意味着名称
z
绑定到内存位置0x15b43b0处名为
g
的函数。(提示:它实际上是绑定到内部作用域中名称
g
的同一个函数对象)

最后一件事,最后一行中的z()表示什么

这意味着调用名称
z
绑定到的对象。i、 e.它调用
f
返回的函数

没有称为z的函数


这里没有
\uuu name\uuu
属性等于
z
的函数。但是名称
z
仍然可以绑定到函数对象。请记住,对象可以有多个名称(或者根本没有名称)

函数
f
返回函数
g
的值,因此
f
返回函数。在主代码中,该函数存储在
z
中,因此
z
实际上是一个函数,可以调用。函数
f
返回函数
g
的值,这是一个函数,因此
f
返回一个函数。在主代码中,该函数存储在
z
中,因此
z
实际上是一个函数,可以调用。