python函数对象以及名称空间和作用域
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python函数对象以及名称空间和作用域,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1280字,纯文字阅读大概需要2分钟。
内容图文
函数对象
python中一切皆对象
s=10
print(s)
1.引用
s1=s
2.容器元素
lt=[s]
3.作为函数的实参
def f1(s):
print(s)
4.作为函数的返回值
def f1(s):
return s
字典/列表/元组/集合/布尔值,所有对象都可以做以上四件事
函数对象==函数名 函数名()就是在调用,没有其他意思
函数嵌套
函数里面有函数
def f1():
print(‘from f1‘)
def f2():
print(‘from f2‘)
res=f1()
函数内部定义的函数,外部就不能用
名称空间和作用域
变量名/函数名--》名称--》名称空间:专门存储名称的
内置名称空间:存储了内置方法的名称
数据类型自带内置方法;python解释器自带内置方法(print/len/list/str/dict)
全局名称空间:除了内置和局部都叫全局
局部名称空间:函数内部定义的都叫局部
名称空间的执行(生成)循序:
1.内置名称空间:python解释器启动的时候就有了
2.全局名称空间:执行文件代码的时候才会有全局
3.局部名称空间:函数调用的时候才会有局部
搜索顺序
先从当前所在位置寻找,找不到再按找这种循序,不会逆着方向寻找
局部——》全局——》内置——》报错
作用域
全局作用域:内置名称空间+全局名称空间——》全局作用域
1.全局作用域的x和局部作用域的x没有半毛钱关系
局部作用域:局部名称空间——》局部名称空间
2.局部作用域1的x和局部作用域2的x也没有任何关系,即使局部作用域1和局部作用域2在同一个局部作用域下
global
x = 10
def f1():
global x # 让global以下的局部的x变成全局的x
x = 20
f1()
print(x)
nonlocal
x = 10
def f1():
def f2():
def f3():
nonlocal x # nonlocal让x成为顶层函数的局部,不是让他成为全局 # 压根没有应用情景,尽量不要嵌套函数
x = 1
x = 2
f3()
print(1, x)
f2()
f1()
print(2,x)
def f0():
x = 3 # f1的nonlocal无法修改
f1()
所有可变数据类型均可打破上述一切规则
lt = [10]
def f1():
lt.append(12)
lt[0] = 11
f1()
print(lt)
原文:https://www.cnblogs.com/zqfzqf/p/12577958.html
内容总结
以上是互联网集市为您收集整理的python函数对象以及名称空间和作用域全部内容,希望文章能够帮你解决python函数对象以及名称空间和作用域所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。