自学python-函数命名空间

#函数第二讲
#help()是python中的内置函数
#通过help()函数可以查询python中的用法
#语法:help(函数对象)

#文档字符串(doc str)
#在定义函数时,可以在函数内部编写文档字符串,文档支付 串就是函数的说明
#文档字符串非常简单,其实直接在函数的第一行写一个字符串就是文档字符串
def fn(a:int,b:bool,c:str)-> str: #:int是文档字符串,相当于注释,后面的str是返回值是str类型
    '''
    这是一个文档字符串的示例
    函数的作用:
    函数的参数:...
    '''
    return 10
help(fn)

#函数的作用域(scope):指的是变量生效的区域,
b=20
def fn1():
    a=10 #a定义在函数内部,所以他的作用域是函数内部,在外面无法访问
    print("函数内部:",'a=',a)
fn1()
print('b等于',b)
#在python中有两种作用域,一种叫全局作用域,一种叫函数作用域
#全局作用域:全局作用域在程序执行时创建,在程序执行结束时销毁,所有函数以外的都是全局作用域,全局变量可以在任意位置访问。
#函数作用域:在函数调用时创建,在调用结束时销毁,每调用一次就产生一个作用域,只能在函数内部访问.
#变量的查找:当我们使用一个变量的时候,我们会优先查找作用域中寻找变量,如果有就使用,如果没有就去上一级查找和使用,当全局变量没有的时候会有异常。
def fn2():
    a=30   #a的作用域是在29-32行fn2的函数中,所以fn3中也可以使用,
    def fn3():
        print('fn3中','a=',a)
    fn3()
fn2()
#如果希望在函数内部修改全局变量,需要使用global来声明变量
a=20
def fn3():
    global a #声明在函数内波的使用a是全局变量,此时在去修改a时就是修改全局变量
    a=10 #修改全局变量
    print('函数内部的a',a)
fn3()
print("函数外部的a",a)
#命名空间(namespace):命名空间值得是变量存储的位置,所有变量都需要存储到指定的命名空间中
#每一个作用域都有一个它对应的命名空间
#全局命名空间,用来保存全局变量,函数命名空间用来保护函数中的变量
#命名空间实际上是一个字典,是专门用来存储变量的字典
#locals()用来获取当前作用域的命名空间
#如果在全局作用域中调用locals()则获取全局命名空间,如果在函数作用域中调用locals()则获取函数命名空间
#返回的是字典
scope=locals() #当前命名空间
print(scope) #以字典的形式,输出命名空间的内容
print(scope['a']) #和print(a)的作用是相同的
#向scope中添加一个key-value就相当在全局变量中创建了一个变量(一般不建议用这种方法)
scope['c']=1000
print(c)

def fn4():
    a=10
    #scope=locals() #在函数内部调用locals()会获取函数的命名空间
    #scope['b']=20
    #global()函数可以用来在任意位置获取全局命名空间
    global_scope=globals()
    print(global_scope['a'])
    global_scope['t']=159
    #print(scope)
fn4()
print(t)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值