玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

Python函数内部定义之前调用报错求助

def str(s):
print 'global str()'


def foo():
    str('dummy')
    def str(s):
        print 'closure str()'
    str('dummy')

def bar():
    str('dummy')
    print 'call'


foo()
bar()

现象: 在foo()函数里面 第一次调用str的时候 提示:

UnboundLocalError: local variable 'str' referenced before assignment

问题:
1. 在运行foo()的时候,第一次调用str, foo本地命名空间没有str的定义,这时候要去外部找str, 为什么会找不到外部定义的str
2. foo内部有str的定义, 解释器第一次读入foo定义的时候, 内部的str要怎么处理
3. 为什么会报这个错误, 类似的bar(), 为什么能够找到外部的str

谢谢~~

https://docs.python.org/2/reference/executionmodel.html

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd18538.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2017年06月05日 - 19时10分17秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules