首页 > 其他 > 详细

函数进阶

时间:2019-05-01 19:51:49      阅读:148      评论:0      收藏:0      [点我收藏+]
# 函数进阶


# 命名空间和作用域

# 命名空间 有三种
# 内置命名空间——python解释器
# 就是python解释器一启动就可以使用的名字存储在内置命名空间
# 内置的名字再启动解释器的时候加载进内存里
# 全局命名空间——我们写的代码,但不是函数中的代码
# 是在程序从上到下被执行的过程中依次加载进内存的
# 放置了我们所有变量名和函数名
# 局部命名空间——函数
# 就是函数内部定义的名字
#当调用函数的时候才会产生这个名称空间,随着函数执行的结束,这个命名空间回收


# 在局部,可以使用全局、内置空间中的名字
# 在全局,可以使用内置空间中的名字,但是不能使用局部空间中的名字
# 在内置,不可以使用全局、内置空间中的名字




# 当我们定义了和内置空间名字空间中同名的名字时,会使用全局的名字
# 在正常情况下直接使用内置的名字
# 当此命名空间有的时候,就不会使用上一级的
# 如果自己没有,就向上一级要
# 多个函数拥有多个独立的局部命名空间,不互相共享

def input():
print(‘haha‘)

def func():
input()
func()

# func()
# fun--->函数的内存地址
# 函数名()函数的调用
# 函数的内存地址()函数的调用


# 作用域 2种
# 全局作用域——作用在全局——内置和全局名字空间中的名字都属于全局作用域
# 局部作用域——作用在局部——函数(局部名字空间中的名字属于局部作用域)
#
a=1
def func():
global a
a=3
func()
print(a)
# 对于不可变数据类型,在局部可以查看全局作用域中的变量
# 不可以修改
# 若想要修改,需在程序的一开始添加global声明
# 如果在一个局部(函数)内声明了一个global变量,那么这个变量在局部的所有操作将对全局的变量有效


a=1
b=2
def func():
x = ‘aaa‘
y = ‘bbb‘
print(locals())
print(globals())
func()
print(globals())
print(locals())

# globals 永远打印全局名字
# locals 输出什么根据locals所在位置

a = 1
def func():
a = 2
return a
a = func()
print(a)

函数进阶

原文:https://www.cnblogs.com/Mr-Feng/p/10800492.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!