一、函数的补充

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面试题大集合

    自己当初找工作时参加过众多一线互联网公司的Java研发面试,这段时间处于寒冬,然而前几天跳槽找工作,两天面了3家,已经拿了两个offer,觉得可以和大家分享下: 下面为拼多多.饿了么.蚂蚁金服.哈啰出 ...

  2. 如何用java控制你的电脑?

    用java控制你的电脑 java,是一门强大的语言,强大的地方在于有很多类,我们可以直接的使用.而java.awt.Robot就很有意思了,顾名思义robot机器人,怎样一个机器法,如:控制鼠标方法: ...

  3. Web 性能优化: 使用 Webpack 分离数据的正确方法

    摘要: Webpack骚操作. 原文:Web 性能优化: 使用 Webpack 分离数据的正确方法 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 制定向用户提供文件的最佳方式可能是一 ...

  4. java环境配置记录

    1.启动Eclipse时报错:Failed to load the JNIshared library 这种问题是因为Java与Eclipse两个软件的位数不一样,一个是32位,一个是64位,存在冲突 ...

  5. Docker创建JIRA 7.2.4中文破解版

    目录 目录 1.介绍 1.1.什么是JIRA? 2.JIRA的官网在哪里? 3.如何下载安装? 4.对JIRA进行配置 4.1.打开浏览器:http://localhost:20012 4.2.JIR ...

  6. 通过apt-get安装JDK8

    安装python-software-properties $sudo apt-get install python-software-properties $sudo apt-get install ...

  7. Windows系统资源监控

    1.windows自带系统资源监控工具 2.Windows监控的数据来源:Performance Counters 2.1 Performance Counter架构 2.2 Performance ...

  8. java类加载及类初始化

    1.前言 java是跨平台语言,主要是因为它的java虚拟机的存在,java有事编译语言,所以需要将编写的java文件编译成jvm可运用的class字节码文件.在java中一切皆对象.对于Java虚拟 ...

  9. Linux Collection:用户管理

    adduser 添加(新建)用户账户 $ sudo adduser username groups 添加组 $ groups username # 查看用户已有的组 $ groups username ...

  10. IO多路复用三种方式select/poll/epoll

    select多并发socket例子: #_*_coding:utf-8_*_ __author__ = 'Alex Li' import select import socket import sys ...