首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在函数中访问函数(嵌套函数?)

在函数中访问函数(嵌套函数?)
EN

Stack Overflow用户
提问于 2011-08-14 08:40:57
回答 5查看 21.3K关注 0票数 13

巨蟒新手在这里。如何获得'fib‘函数中的'inner’函数?

代码语言:javascript
复制
from time import sleep

class Fibonacci(object):

    def __init__(self, a, b, limit=50):
        self.a = a
        self.b = b
        self.limit = limit

    def fib(self):

        while self.a < self.limit:
            c = self.a + self.b
            sleep(1)
            print self.a,
            self.b = self.a
            self.a = c

        def inner(self):
            print 'Damn it! Just print already!'


j = Fibonacci(0,1,2)
j.fib()

## This doesn't work. Gives an "AttibuteError: 'function' object has no attribute 'inner'"
j.fib.inner()
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-08-14 08:44:06

您不能这样做,除非fib以某种方式返回innerinner本质上是fib作用域内的一个局部变量,您不能从它外部访问函数的局部变量。(这甚至没有意义,因为除非函数正在运行,否则本地变量不存在。想想看--从函数外部访问fibc变量有意义吗?)

票数 16
EN

Stack Overflow用户

发布于 2011-08-14 09:21:15

不要使用以下代码。

代码语言:javascript
复制
[...]
>>> j = Fibonacci(0,1,2) 
>>> j.fib()
0 1 1
>>> # dark magic begins!
>>> import new
>>> new.function(j.fib.im_func.func_code.co_consts[2],{})(None)
Damn it! Just print already!

您可以简单地看一下它,它并不是真正的Python,而且它并没有真正调用“内部”函数本身,它只是创建了一个类似它的新函数。我也没有费心“正确”地设置全局变量,因为这在一开始就是一件很糟糕的事情。

我应该指出的是,上面的观点是要注意,你不能从外部访问内部的想法并不是严格意义上的,尽管这几乎不是一个好主意。例外包括解释器级别的代码检查等。

不洁!不洁!

票数 9
EN

Stack Overflow用户

发布于 2011-08-14 09:38:43

代码语言:javascript
复制
from time import sleep

class Fibonacci(object):

    def __init__(self, a, b, limit=50):
        self.a = a
        self.b = b
        self.limit = limit

    def fib(self):

        while self.a < self.limit:
            c = self.a + self.b
            sleep(1)
            print self.a,
            self.b = self.a
            self.a = c

        def inner(self):
            print 'Damn it! Just print already!'
        Fibonacci.fib.inner = inner

    fib.inner = None

此代码片段将允许您使用内部。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7054228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档