一、函数的补充

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. iOS----------弹窗动画

    - (void)animationAlert:(UIView *)view { CAKeyframeAnimation *popAnimation = [CAKeyframeAnimation ani ...

  2. leetcode-48.旋转图像

    leetcode-48.旋转图像 point: 数组 题意 给定一个 n × n 的二维矩阵表示一个图像. 将图像顺时针旋转 90 度. 说明: 你必须在原地旋转图像,这意味着你需要直接修改输入的二维 ...

  3. 设计模式系列之单例模式(Singleton Pattern)

    单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式.这种模式涉及到一个单一的类,该类负责创建自己的对象 ...

  4. 转摘app-稳定性测试

    稳定性测试的概念有2种, 一, 稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试.包含: 1 交互性测试,被打扰的情况,如来电,短信,低电量等.这些其实在上章的功能测试中有提到. 2 ...

  5. C语言,char类型变量不应与EOF直接比较

    #include <iostream>#include <stdio.h>#include <stdlib.h>using namespace std; int m ...

  6. 获取spring security用户相关信息

    在JSP中获得 使用spring security的标签库 在页面中引入标签 <%@ taglib prefix="sec" uri="http://www.spr ...

  7. SQLServer之删除函数

    删除函数注意事项 从当前数据库中删除一个或多个用户定义函数.DROP 函数支持本机编译的标量用户定义函数. 如果数据库中存在引用 DROP FUNCTION 的 Transact-SQL 函数或视图并 ...

  8. 20181112-PostgreSQL数据库dmp文件导入(记录一次数据导入)

    20181112-PostgreSQL数据库dmp文件导入 标注:dmp文件导入,场景:多个schema导入 1. 环境准备: postgres集群master节点上,postgres用户执行以下操作 ...

  9. Threading.Timer用法

    protected System.Threading.Timer executeTimer;//定时器 private int interval;//定时器执行间隔周期 executeTimer = ...

  10. C#中Windows窗体工具栏

    标签(Label):用于显示用户不能编辑的文本或图像.常使用它对窗体上的其他各种控件进行标注或说明. 文本框(TextBox):用于获取用户名输入的信息或向用户显示的文本. 组合框(ComboBox) ...