包
包:包是模块的一种形式,包的本质就是含有.py文件的文件夹。
模块:模块就是封装好的具有特定功能的函数代码。例如sum()求和函数
py文件的两种功能
1 脚本:一个文件就是完整的程序,用来直接执行。
2 模块:一个文件中存放的某些功能函数,用来被导入使用。
if __name__ == '__main__':
1 作用:用来控制py文件在不同的应用场景下执行不同的逻辑
2 python中内置了全局变量__name__:
当外部文件被当做脚本执行时 __name__ == __main__ if __name__ == '__main__':中的语句可以执行
当外部文件被当做模块导入时 __name__ == 模块名 if __name__ == '__main__':中的语句不可以执行
3 相当于python模拟的程序入口,这是一种编程习惯
闭包
闭包
在嵌套函数的前提下,内部函数使用了外部函数的变量,
而且外部函数返回了内部函数
我们就把 使用了外部函数变量的 内部函数 称为 闭包
构成条件:
1.函数中嵌套了一个函数
2.内层函数使用了外层函数的变量
3.外层函数的返回值是内层函数的函数名
# 例一 def outer(): # 外部函数 n = 10 def inner(): # 内部函数 print(n) # 在内函数中,用到了外部函数的变量 return inner # 外部函数的返回值是内部函数的函数名 print(outer()) # 返回的是内部函数的地址 ot = outer() ot() # 调用内部函数 # 总结: # 函数名()= 调用函数 # 函数名 = 返回函数所在位置地址
# 例二 def outer(m): def inner(n): print('inner函数中的值:', m+n) return inner # 第一种写法: ot = outer(20) ot(10) # 第二种写法 outer(10)(20)
# 例三 # 每次开启内函数都在使用同一份闭包变量 即 m def outer(m): # 外函数 print('out函数中的值:', m) def inner(n): # 内函数 print('inner函数中的值:', n) return m+n # 在inner函数中返回m+n的值 return inner # 调用外函数,给outer函数传值10 ot = outer(10) # 第一次调用内函数,给inner函数传值20 print(ot(20)) # 第二次调用内函数,给inner函数传值30 print(ot(30)) # 使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用 # 虽然每次调用内函数。会开启一个函数,执行后消亡,但是闭包变量实际只有一份,每次开启内函数都在使用同一份闭包变量
以上是作者学习总结,分享所学,共同进步。如若哪处有误,感谢指出!