day11 函数和命名空间

# def my_sum(*args):
# sum_2=0
# for i in args:
# sum_2+=i
# return sum_2
#
#
# ret=my_sum(1,2,3,4)
# print(ret)
#-------------------------------------------------------------------
#命名空间, 名称空间 namespa
# 局部命名空间:每个函数都拥有自己的命名空间
# 全局命名空间:写在函数外边的变量名
#内置命名空间:python解释器启动之后就可以使用的名字


#python的解释器要运行起来
# 加载顺序
# 所有内置命名空间中的名字-->然后按照顺序加载全局命名空间中的名字
#局部命名空间的名字:在调用函数的时候产生,并且随着调用的结束而消失

# 函数的嵌套定义
# def func():
# def qqxing():
# print('我是qqxing')
# qqxing()

# func() # 函数的嵌套定义
# 作用域: 一个名字可以使用的区域
#全局作用域: 内置名字空间和全局名字空间中的名字都属于全局名字空间域
#局部作用域:局部名字空间中的名字属于局部作用域
#局部作用域可以使用全局做用域中的变量
#而全局作用域不能使用局部作用域中的变量
#局部作用域中还可以嵌套更小的局部作用域
# 作用域链:小范围作用域可以使用大范围的变量 但作用域链是单向的不能反向使用
# n=0
# def funcl():
# def func2():
# print(n)
# func2()
# funcl()
# --------------------------------------------------
# def func():
# a=10
# b=20
# print(locals()) # 保存了当前作用域中的变量

# n=10
# m=22
# print(globals())# 保存了在全局作用域中的名字和值
# print(locals())#中的内容会跟根据执行中的位置来决定作用域中的内容
# 如果在全局执行的话
#globals和locals打印的结果是一致的

#函数的嵌套和嵌套的嵌套定义
# 命名空间: 三种 内置全局 局部
# 关于作用域: 两种 全局和局部
# 作用域的特点: 作用域链 名字的使用是从小范围到大范围的就近事件
#globals和locals的方法


# n=1
# def func():
# global n
# n=n+1
#
# func() # 小范围可以使用大范围的 但不能修改
# print(n) # 如果想要修改 使用global关键字 -----尽量避免
# 如果想要修改最近拥有改变量的外层函数的 使用nonlocal--不影响全局
# n=0
# def func():
# n=1
# def func2():
# global n
# n+=1
# func2()
# print(n)
#
# func()
# print(n)
#-------------------------------------#跟上边的一起
#第一类对象的概念
# 函数的名字可以赋值
# 可以作为一个数据结构的元素
#可以作为一个函数的参数
#可以作为一个函数的返回值

# def func():
# print('in func')
# f=func()
# print(f)


posted @ 2017-11-01 19:44  邯城吴彦祖  阅读(151)  评论(0编辑  收藏  举报