栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python内部函数

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python内部函数

检查此答案:

本质上,Python中唯一引入新作用域的就是函数定义。类是一种特殊情况,因为直接在主体中定义的所有内容都放置在类的名称空间中,但不能从它们所包含的方法(或嵌套类)中直接访问它们。

在您的示例中,只有3个范围将在其中搜索x:

  • 垃圾邮件的范围-包含在pre3和pre5(以及pre4,循环变量)中定义的所有内容

  • 全局范围-包含pre1中定义的所有内容以及Foo(及其后的所有更改)

  • 内置名称空间。有点特殊的情况-它包含各种Python内置函数和类型,例如len()和str()。通常,不应由任何用户代码对其进行修改,因此,期望它包含标准功能,而不包含其他任何功能。

仅当您在图片中引入嵌套函数(或lambda)时,才会出现更多作用域。但是,它们的行为几乎与您期望的一样。嵌套函数可以访问本地范围内的所有内容,也可以访问封闭函数范围内的任何内容。例如。

def foo():    x=4    def bar():        print x  # Accesses x from foo's scope    bar()  # Prints 4    x=5    bar()  # Prints 5

限制条件:

可以访问除局部函数的变量以外的范围中的变量,但是如果没有进一步的语法,则不能将其反弹到新参数。相反,赋值将创建一个新的局部变量,而不是影响父作用域中的变量。例如:

global_var1 = []global_var2 = 1def func():    # This is OK: It's just accessing, not rebinding    global_var1.append(4)     # This won't affect global_var2. Instead it creates a new variable    global_var2 = 2     local1 = 4    def embedded_func():        # Again, this doen't affect func's local1 variable.  It creates a         # new local variable also called local1 instead.        local1 = 5        print local1    embedded_func() # Prints 5    print local1    # Prints 4

为了在功能范围内实际修改全局变量的绑定,您需要使用global关键字指定该变量是全局变量。例如:

global_var = 4def change_global():    global global_var    global_var = global_var + 1

当前,对于封装函数作用域中的变量,没有任何方法可以做,但是Python 3引入了一个新关键字

“ nonlocal”
,它的作用与全局变量类似,但对于嵌套函数作用域。

可以访问除局部函数的变量以外的范围中的变量,但是如果没有进一步的语法,则不能将其反弹到新参数。相反,赋值将创建一个新的局部变量,而不是影响父作用域中的变量。例如:



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/661117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号