4.08Day15函数回调思想、模块

复习:
三元表达式
结果1 if 判断条件 else 结果2

列表推导式
list = [列表元素 for v in 可迭代对象(iterable)]
字典推导式
dic = {字典元素 for key, value in 可迭代对象(iterable)

递归:函数的自调用
# 直接自调用:自己调自己
# 简介自调用:自己调别人,别人再调回自己

回溯(回溯条件)==>递推(递推的开始点,就是回溯的结束点)

匿名函数:
lambda 形参们:返回值

补充:
自定义sleep (较为精确的sleep指令)
def my_sleep(sec):
import time
current_time = time.time()
while time.time() - current_time < sec:
pass


今日内容:
1、函数回调
2、模块
3、自执行文件与模块的区别

一、函数回调(编程思想)
# 提前写出函数的调用,再去考虑函数体的实现

怎样提前写出函数的调用:
在另一个函数中写出函数的调用
再去考虑函数体的实现:
根据实际的需求编写函数体

二、模块
1、什么是模块
一系列功能的集合体
模块的四种存在方式:
1、使用python编写的.py文件(任何一个.py文件都可以作为模块) (*****)
2、包:一堆py文件的集合体
3、使用C编写并链接到python解释器的内置模块
4、一杯编译为共享库或DLL的C或C++扩展

2、为什么要使用模块
1.从文件级别组织代码,是同特性的功能能统一管理
2.可以使用系统或第三方模块(拿来主义),来提高开发效率

3、怎么使用模块:

定义模块:
新建一个py文件:文件名就是模块名,尽量采用全英文,可以结合数字与下划线

3.1 在要使用在模块功能的文件中导入模块,通过import关键字导入模块名
import xxx
aaa = module
inmport aaa

在任何地方都可以导入模块
def fn():
global m3
import m3 # 就是一个普通的名字,只是该名字执行的是一个py文件(全局名称空间)

注意:
1、每个文件都会产生自己的全局名称空间,且相互不影响
2、多次导入,只会编译执行模块一次,将其加在到内存,之后的导入都是直接对第一次导入时的模块名的引用

取别名: (可以简化模块名字)
通过as关键字可以给模块起别名:模块一旦起别名,原模块名就无法使用了

import wjwsgdmn as wjw

# 可以统一功能
cmd = input('数据库选择 1:mysql | 2:oracle')
if cmd == '1':
import mysql as db
# mysql.excuse() # 源代码,注释掉了,改成上面一行取了别名
else:
import oracle as db
# oracle.excuse() # 源代码,注释掉了,改成上面一行取了别名
db.excuse()

3.2 from 导入模块
在import后的名字才会在该文件的名称空间中产生
from m4 import a, b, _c # 知名道姓的可以导入 _ 开头的名字
print(a) # a 是模块 m4 中的值
a()
可以通过*导入模块中的名字:
from m4 import *
# 通常不建议导入 * ,当需要使用模块中绝大部分名字是,才考虑导入 *

使用from导入的话,执行文件与模块文件的相同名字变量都是合理存在的
但是import后的名字a 和 a = 20,在一个名称空间站,只会保留最后一次值

from导入起别名
# 一旦起别名,原名字就不能再用
from m5 import aaaaa as a, bbbbb as b, ccccc as c
print(a)
print(b)
print(c)

三、自执行文件与模块的区别
# __name__:
# 1.在py文件作为模块被使用时,__name__为模块名
# 2.在py文件自执行时,__name__为字符串 '__main__'

print("共有逻辑")
if __name__ == '__main__':
# 所有自执行的逻辑
print("m6: 我是自执行的")
a = 10 # 产生的是全局的名字
else:
# 所有模块的逻辑
print("m6: 我被导入执行的")
print(a) # 会报错:走else就不可能走if,所以a压根没产生

转载于:https://www.cnblogs.com/shuchengyi/articles/10670036.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值