返回值,文档字符串,作用域,命名空间
本节内容如下:
- 函数的返回值
- 文档字符串( doc str ):主要帮助理解自己定义函数,相当于解释文档,help( )
- 作用域,global关键字
- 命名空间,locals( ),globals( )
# 返回值,文档字符串,作用域,命名空间
# 函数的返回值
# 返回值可以是任意的对象,也可以是一个函数
def fn() :
def fn2() :
print('fn2')
return fn2
r = fn( )# r = fn2
print( r ,type(r))
r( )
# 函数内的return 后的代码都不会执行
# break 退出当前循环
# continue 跳出当次循环
#-------------------------------------------------
# 通过help( )函数可以查询python中函数的用法
# help( 函数对象 )
help( print )
# 文档字符串( doc str )
def fn1( a:int ,b:bool ,c:str = 'hello' ) -> int :
# a:int ,b:bool ,c:str 提示输入的参数的类型,没有强制意义
# -> int 说明返回值类型
'''
这是一个文档字符串的示例
函数的作用:。。。。。
函数的参数:
a.----
b.----
'''
return 1
help(fn1)
#-------------------------------------------------
# 作用域( scope )
# 作用域指的是变量生效的区域
# 全局作用域
# - 在程序执行时创建,程序结束时销毁
# - 在函数外定义的变量都是全局变量,可以在程序内的任何位置被访问
# 函数作用域
# - 在函数调用时创建,调用结束时销毁
# - 函数内部定义的变量都是局部变量,只能在函数中访问
# 变量的查找
# 当使用变量时,会优先在当前作用域查找,如果没有会去上级作用域查找
# 如果还没有再去上一级作用域查找,以此类推,
# 直到找到全局作用域依然没有,抛出异常
a = 10
def fn3() :
a=20
def fn4():
a=30
print(a)
fn4( )
fn3( )
# 如果希望在函数内部修改全局变量,需要用全局变量global关键字声明变量
a = 11
def fn5() :
global a# 声明在函数中的a是全局变量,再去修改a时,全局变量a也会随之改变
a=22
print('函数内部:a =',a)
fn5( )
print('函数外部:a =',a)
# b = 11
# def fn6( a ) :
# a=22
# print('函数内部:a =',a)
# fn6( b )
# print('函数外部:a =',b)
# 命名空间( namespace )
# 命名空间是变量存储的位置,每一个变量都存储在命名空间中
# 每个作用域都有一个对应的命名空间
# 本质上就是一个专门存储变量的字典
# locals( ) 用来获取当前作用域的命名空间
# 调用时会返回一个字典
scope = locals( )
print( scope )
scope['c'] = 33# 向字典locals中添加一个键值对,相当于定义了一个变量c = 33(不建议使用)
print(locals( ))
def fn6() :
a = 10
scope = locals( )
scope['b'] = 22# 函数内也可以通过向子典中添加键值对的方式添加变量(不建议使用)
print( scope )
fn6( )
# globals( ) 函数可以在任意位置获取全局变量的命名空间
# 也可以通过调用该函数在局部变量中增删改全局变量
def fn7( ) :
global_scope = globals( )
global_scope['d'] = 4
fn7( )
print('d=',d)