day11 名称空间 作用域

妖精的绣舞 提交于 2019-12-04 15:46:47
day11 名称空间 作用域

 

一.三元运算符
def func(a, b):
    return a if a > b else b
 
print(func(44,66))
二:函数注释
def func(a, b):
    '''
    这个函数是用来计算a和b的和
    :param a: 第一个数据
    :param b: 第二个数据
    :return: 返回的是两个数的和
    '''
    return a + b
 
print(func.__doc__)         #document 文档
三.命名空间(名称空间)
    内置命名空间: 存放python为我们提供的名字
    全局命名空间: py文件中, 函数外的变量
    局部命名空间: py文件中, 函数内的变量
a = 10
 
def fn():           # fn也在全局名称空间, 可以认为顶格写的都是全局的
    b = 20          # 变量 b 只有在函数调用时, 才会被用到
    print(a)
def gn():
    print(a)
fn()
gn()
# 名称空间的加载顺序: 内置-> 全局-> 局部
四.作用域: 就是作用范围, 按生效范围来分为
    全局作用域: 全局和内置
    局部作用域: 局部的
        globals()    locals()
a = 10
def fn():
    b = 20
    def en():
        c = 30
print(globals())    #可以查看全局作用域中的内容
print(locals())     #查看当前作用域中的内容,  和locals()所在的作用域有关系
 
a = 10
def fn():
    b = 20
    def en():
        print(globals())    #en 没有被调用, print 没有执行, fn()无结果
        print(locals())
fn()
五.函数的嵌套
def outer():
    print('i am in outer')
    def inner():
        print('i am in inner')      #可以无限的往下套
    inner()
outer()
六.global和nonlocal关键字
    global 改全局
a = 10        #全局变量本身不安全, 不能随意修改(闭包可解决此事)
 
def func():
    global a    #不写global, 可以使用a, 但是不能改a 的值, 否则报错
    a = 20      #在调用func()之后,  1.把全局的a 改成 20    2.创建全局变量 a
func()
 
print(a)
    nonlocal 改上一层,还要有这个变量, 若没有,再往上找, 直到找最后一层, 找不到报错(但是不找全局)
a = 30
def outer():
    a = 10        #找的这个,没有则报错
    def inner():
        nonlocal a
        a = 20
    inner()
    print(a)
outer()
print(a)            #全局的不找
 
 
 
 
 
 
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!