一、函数的补充

1、函数回调:

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

def download(fn=None):
print('开始下载')
my_sleep(1)
data = '下载得到的信息'
print('下载完成')
if fn: # 如果外界提供了回调函数的实现体,再去调用,否则就只完成默认下载的功能
res = fn(data) # 下载成功的回调函数,具体完成什么事之后决定
if res:
print('操作成功')
return True
print('操作失败')
return False
return data # 没有外界具体操作下载结果的功能代码,就将下载结果直接返回
def download_action(data):
print('往文件中写')
with open('1.txt', 'w', encoding='utf-8') as f:
f.write(data)
return True
return False res = download(download_action)
print(res)
def download_action1(data):
print(data)
return True
res = download(download_action1)
print(res) 二、模块:一系列功能的集合体
模块的四种存在方式:
1.使用python编写的.py文件(任何一个py文件都可以作为模块)
2.包:一堆py文件的集合体
3.使用C编写并链接到python解释器的内置模块
4.已被编译为共享库或DLL的C或C++扩展
1、使用模块:在要使用该模块功能的文件中导入模块,通过import关键字导入模块名

2、优点:从文件级别组织代码,是 同特性的功能能统一管理

        可以使用系统或第三方模块(拿来主义),来提高开发效率

3、import导入模块:会编译执行成一个pyc文件,该pyc文件就是该模块的执行文件

           再次导入该模块不会再执行,只会编译执行一次,将其加载到内存,之后的都是直接对名字的引用

           该模块会产生自己的全局名称空间,且跟其他文件产生的全局名称空间互不影响

           在任何地方都可以导入模块

4、from导入:from 模块名 import 需要导入的名字

                       可以指名道姓导入模块中所有想导入的名字

5、from 模块名 import *:导入的是模块中__all__这个列表

                       系统默认该列表不会收录_(下划线)开头的名字

                       可以自定义__all__列表来规定外界通过*可以导入的名字

                       不建议直接导入*,因为可读性差,且极易出现变量重名

6、起别名:通过as关键字可以给模块起别名

         import 模块名 as 别名:

                              可以简化模块名字
import mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
                              可以统一功能:
cmd = input('数据库选择 1:mysql | 2:oracle:')
if cmd == '1':
import mysql as db
# mysql.excuse()
else:
import oracle as db
# oracle.excuse()
db.excuse()
         from 函数名 import 名字 as 别名

         模块名一旦起别名,原模块名就不能再使用

三、 自执行与模块区别

__name__:

1.在py文件作为模块被使用时,__name__为模块名

2.在py文件自执行时,__name__为字符串 '__main__'

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

												

DAY15、模块的更多相关文章

  1. Day15模块(导入,使用)

    Day15模块 什么是模块: 一系列功能的集合体 一个py文件就是一个模块 aaa.py就是aaa模块 模块四种形式: 内置的模块 py文件 第三方的 包 模块三种来源:内置的,第三方,自定义 为什么 ...

  2. python学习day15 模块(重点)

    模块(重点) python2,与py3的区别 py2:range() 在内存中立即把所有的值都创建,xrange() 不会再内存中立即创建,而是在循环时边环边创建. py3:range() 不会再内存 ...

  3. DAY15 模块

    一.模块 1.1 模块的定义:模块就是一系列功能的集合体 1.2 模块的四种存在方式: 1.使用python编写的.py文件(任一py文件都可以作为模块) 2.包:一堆py文件的集合体 3.使用C编写 ...

  4. day15(模块引用笔记)

    import spam文件名是spam.py,模块名则是spam# 首次导入模块发生?件事# 1. 会产生一个模块的名称空间# 2. 执行文件spam.py,将执行过程中产生的名字都放到模块的名称空间 ...

  5. day15模块内容

    1.生成器表达式 先说三元表达式如下 res = [i for i in range(10) if 1 > 5] 这样res就是一个列表6,7,8,9] 只要在这个基础上稍加调整,如下 方括号改 ...

  6. 22期老男孩Ptython全栈架构师视频教程

    老男孩Ptython全栈架构师视频教程 Python最新整理完整版22期视频教程 超60G课程容量<ignore_js_op> <ignore_js_op> <ignor ...

  7. python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题

    1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...

  8. day15 内置函数和模块

    day15 内置函数和模块 1.三元表达式 代码如下: x = 1 y = 2 res = 'ok' if x > y else 'no' print(res) 输出结果:no 2.内置函数:重 ...

  9. Day15 Python基础之logging模块(十三)

    参考源:http://www.cnblogs.com/yuanchenqi/articles/5732581.html logging模块 (****重点***) 一 (简单应用) import lo ...

随机推荐

  1. Java开发笔记(三十七)利用正则串分割字符串

    前面介绍了处理字符串的常用方法,还有一种分割字符串的场景也很常见,也就是按照某个规则将字符串切割为若干子串.分割规则通常是指定某个分隔符,根据字符串内部的分隔符将字符串进行分割,例如逗号.空格等等都可 ...

  2. MySql 双主多从配置指导

    MySql 双主多从配置指导 一.背景 互联网项目为了数据的可靠性和架构的可拓展性经常会用到双主多从的数据库,来实现数据的备份.负载均衡和突发状况时数据库切换. 二.思路 配置两台数据库A.B互为主从 ...

  3. 用JS编写一个函数,返回数组中重复出现过的元素

    用JS编写一个函数,返回数组中重复出现过的元素,见下面的代码: , , , , , , , ]; var getRepeat = function (arr) { var obj = {}; , le ...

  4. Fragment与Activity的接口回调

    这里说一个官方推荐的写法: private OnFragmentInteractionListener mListener; @Override public void onAttach(Contex ...

  5. Android为TV端助力 关于4.0之后不能直接获取SD卡外部存储路径的问题

    Environment.getExternalStorageDirectory()是Android 2.x时代的产物,那时Android主流设备只有很小的内置存储器,然后都会外置一张sd卡,那时这个方 ...

  6. Linux 安装 powershell

    linux 安装 powershell Intro powershell 已经推出了一个 Powershell Core, 版本号对应 Powershell 6.x,可以跨平台,支持 Linux 和 ...

  7. SQL Server Mirror 断开后,删除副本上镜像数据库

    一般而言,SQL Server 在数据库级别进行数据同步的方式主要有三种 1.日志传送:2.Mirror(镜像):3. AlwaysOn.复制订阅技术理解为表级别的同步,不归结为数据库级别的同步. 在 ...

  8. cannot be run because the QueueReader subsystem failed to load

    前阵子一数据库服务器的事务日志开始暴增,当时使用下面脚本检查发现该数据库的log_reuse_wait_desc 一直处于REPLICATION状态, 也就是说在事务复制过程中,与发布相关的事务仍未传 ...

  9. jQuery如何制作动画

    下面为一组图片(四张)展示 1 2 3 4 页面代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN& ...

  10. Centos7.5 部署postfix邮件系统

    1. Postfix 1.1 邮件服务的介绍 电子邮件是—种用电子手段提供信息交换的通信方式,是互联网应用最广的服务.通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费) ...