命名空间
命名空间一共分为三种
全局命名空间
局部命名空间
内置命名空间(是Python解释器为我们提供的名字,好比‘input,print’等)
三种命名空间之间的加载顺序:
加载顺序:内置命名空间(程序运行前加载)->全局命名空间(程序运行中:从上到下加载)->局部命名空间(程序运行中:调用时才加载)
三种命名空间之间的取值顺序:
在局部调用:
局部命名空间->全局命名空间->
内置命名空间
在全局调用:
全局命名空间->内置命名空间
作用域:
作用域就是作用范围,按照生效范围可以分为全局作用域和局部作用域。
全局作用域:
包含内置名称空间、全局名称空间,在整个文件的任意位置都能被引用、全局有效
局部作用域:
局部名称空间,只能在局部范围内生效
(globals() 函数会以字典类型返回当前位置的全部全局变量。)
(locals() 函数会以字典类型返回当前位置的全部局部变量。)
函数的嵌套:
嵌套函数,顾名思义就是函数里面 套函数。
def A():
print(‘a‘)
def B():
print (‘b‘)
B()
print (‘Over!!!‘)
A()
运行结果
a
b
Over!!!
函数名的本质:
1.可以被引用
2.可以被当作容器类型的元素
3.可以当作函数的参数和返回值
闭包:
内部函数包含对外部作用域而非全剧作用域名字的引用,该内部函数称为闭包函数
def func():
name = ‘eva‘
def inner():
print(name)
作业:
# 2、写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作# import os# def rep(file_name,new,old):## with open(file_name,‘r‘,encoding=‘utf-8‘) as read_f,\# open(‘h‘,‘w‘,encoding=‘utf-8‘) as write_f:# for line in read_f:# write_f.write(line.replace(new,old))## os.remove(file_name)# os.rename(‘h‘,file_name)## rep(‘hello.txt‘,‘*‘,‘7‘) # 3、写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。 # def func(obj):# for i in obj:# if i:# print(‘该元素不为空‘,i)# else:# a = obj.index(i)# print(‘该元素为空‘,i)### func([‘a‘,‘‘,‘‘])# # 4、写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。# dic = {"k1": "v1v1", "k2": [11,22,33,44]} # PS:字典中的value只能是字符串或列表# dic = {"k1": "v1v1", "k2": [11,22,33,44]}# def value_len(leng):# for k,v in leng.items():# # print(k,v)# if len(v) > 2:# leng[k]=v[0:2]# # print(leng)# return leng# # print(value_len(dic))
时间: 2024-10-22 00:02:45