Python学习笔记 15

返回值,文档字符串,作用域,命名空间

本节内容如下:

  • 函数的返回值
  • 文档字符串( 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)

猜你喜欢

转载自blog.csdn.net/weixin_44011689/article/details/89421530