1、函数的调用与嵌套
''函数的调用'''
def func3():
pass
def func4():
func3()
'''函数可以嵌套函数'''
def func1():
b=20
def func2():
# 不能直接调用func2(),因为func2()相当于局部变量
pass
2、global和nonlocal
global 用法:在局部,引入全局变量
nonlocal用法:在局部,引入外层的全局变量
3、闭包
内层函数对外层函数的局部变量的使用,此时内层函数被称为闭包函数
4、装饰器
装饰器本质上是一个闭包,作用是:
在不改变原有函数调用的情况下,给函数增加新的功能
一般用在用户登录的地方、日志
雏形:
def wrapper():
def inner(fn):
# 在目标函数执行之前
fn() # 执行目标函数
# 在目标函数执行之后
return inner
方法一:
def guanjia(game):
def inner():
print("打开外挂!!")
game()
print("关闭外挂!!")
return inner
def play_dnf():
print("你好呀,我叫赛利亚,今天又是美好的一天!")
def play_lol():
print("德玛西亚!!!!")
'''让管家把游戏重新封装一遍,我这边把原来的游戏替换了'''
play_dnf=guanjia(play_dnf)
play_dnf() # 此时运行的是管家给的内层函数inner()
play_lol=guanjia(play_lol)
play_lol()
方法二:
def guanjia(game):
def inner():
print("打开外挂!!")
game()
print("关闭外挂!!")
return inner
@guanjia # 相当于play_dnf=guanjia(play_dnf)
def play_dnf():
print("你好呀,我叫赛利亚,今天又是美好的一天!")
@guanjia # 相当于play_lol=guanjia(play_lol)
def play_lol():
print("德玛西亚!!!!")
play_dnf()
play_lol()
两种方法输出结果:
5、python中二维数组转变为一维数组
6、list 二维数组的排序注意
错误写法:
正确写法
7、list二维数组添加元素
list.append([i,j])
8、python安装requests 报错ERROR: Could not find a version that satisfies the requirement XXX解决方法
pip install 库包名 -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com