18章 模块:宏伟蓝图
import 使客户端(导入者)以一个整体获取一个模块
from 允许客户端从一个模块文件中获取特定的变量名
reload 在不中止Python程序的情况下,提供了一种重新载入模块文件代码的方法
为什么使用模块
代码重用
系统命名空间的划分
实现共享服务和数据
import如何工作
程序第一次导入指定文件时,会执行三个步骤
1.找到模块文件
2.编译成位码
3.执行模块的代码来创建其所定义的对象
这三个步骤只在程序执行时候,模块第一次导入时候才会进行,在这之后,导入相同的模
块,会跳过这三个步骤,而只提取内存中已加载的模块对象
模块搜索路径
1.程序的主目录
2.PYTHONPATH目录
3.标准链接库目录
4.任何.pth文件的内容
这四个组件组合起来变成了sys.path
第十九章 模块代码编写基础
模块创建
模块的使用
import语句
from语句
from *语句
导入只发生一次
第二次和其后的导入并不会重新执行模块的代码,只是从PYthon内部模块表取出已创建的模
块对象.因此,变量spam不会再进行初始化

small.py
x=1
y=[1,2]
交互模式下:
from small import x,y
x=42
y[0]=42
#这里x并不是一个共享的可变对象,但y是

import small
small.x 1
small.y [42,2]

在交互会话模式下对x的赋值运算,只会修改该作用域内的变量x,而不是这个文件的x,为了实
际修改另一个文件中的全局变量,必须使用importa
导入和作用域
modb.py
x=88
def f():
global x
x=99
x=11
import modb
modb.f()
print x,moda.x 11 99
导入操作不会赋予被导入文件中的代码对上层代码的可见度,被导入文件无法看见进行导入
的文件内的变量名.
函数绝对无法看见其他函数内的变量名,除非它们从物理上处于这个函数内
模块程序代码绝对无法看见其他模块内的变量名,除非明确的进行了导入
reload 模块重载
第二十章 模块包
除了模块名之外,导入也可以指定目录路径,Python代码的目录也称为包,因此,这类导
入称为包导入.事实上,包导入是把计算机上的目录变成另一个Python命名空间,而属性则对
应目录中所包含的子目录和模块文件.
__init__.py包文件,包导入语句的路径内的每个目录都必须有__init__.py文件,否则
导入报会失败,这文件是用于声明和初始化模块包的,第一次在进程中导入某目录时,Python
会自动运行这个文件中代码.

第二十一章 高级模块话题
在模块中隐藏数据
__name__和__main__的使用
修改模块搜索路径
Import as拓展
模块设计理念
总是在Python的模块编写代码
模块耦合要降低到最低:全局变量
最大化模块的粘合性
模块应该少去修改其他模块的变量

verbose=1
def listing(module):
if verbase:
print '-'*30
print "name:",module.__name__,"file:",module__file__
print '-'*30
count=0
for attr in module.__dict__keys():
print "%02d) %s" %(count,attr),
if attr[0:2]=="__":
print "<build-in name>"
else:
print getattr(module,attr)
count=count+1
if verbase:
print '-'*30
print module.__name__,"has %d names" %count
print '-'*30
if __name__=="__main__":
import mydir
listing(mydir)

Python 学习---------Day6的更多相关文章

  1. python 学习day6(面向对象)

    博客部分内容转自:http://www.cnblogs.com/wupeiqi/p/4493506.html 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法 ...

  2. Python学习-day6 面向对象概念

    开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...

  3. python学习-Day6

    目录 学习内容详述 上期 '猜年龄'练习详解: while循环补充 while + else 死循环与while的嵌套 while嵌套 for循环 range关键字 range用法 什么是爬虫??? ...

  4. python学习day6 数据类型Ⅳ(集合)

    day6 数据类型-集合 内容补充: 列表功能: .reverse()反转 v = [1,2,3,4,5,6]v.reverse()print() #[6, 5, 4, 3, 2, 1] .sort( ...

  5. python学习 day6 (3月7日)

    #__author : 'liuyang' #date : 2019/3/7 0007 a = ['a' , 'b' , 'c'] b = [] print(a is b ) # 空元组 可以 空列表 ...

  6. python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝

    一.深浅拷贝 1.  值拷贝 ls1 = ls2  不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...

  7. python学习day6 for循环 字符串的内置方法

    1.for循环 和while相比 l=[1,2,3] i=0 while i <len(l) print(l[i]) i+=1 l=['a','b','c'] for item in l: pr ...

  8. Python学习记录day6

    title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...

  9. python笔记 - day6

    python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...

  10. 【目录】Python学习笔记

    目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...

随机推荐

  1. 敏捷软件开发vs传统软件开发

    摘要 本文介绍了传统软件开发(着重介绍了传统软件开发中常用的瀑布模型)和敏捷软件开发,以及敏捷开发和传统开发的对比. 一.传统软件开发 比较常用的几种传统软件开发方法:瀑布式开发.迭代式开发.螺旋开发 ...

  2. Ubuntu 16.10下的eclipse

    下载后解压,放到文件下,打开此文件左边齿轮状的东西,即可指引安装:

  3. spring mvc 4.3.2 + mybatis 3.4.1 + mysql 5.7.14 +shiro 幼儿园收费系统 之 登录

    如标题,用spring mvc 4.3.2+mybatis 3.4.1 + mysql 5.7.14 +shiro 开发了一个用于幼儿园的管理系统. 功能模块 包括 账号,角色,权限管理. 幼儿档案管 ...

  4. 如何向新手程序员介绍Java编程

    学习Java,他们都说很easy. 作为一名刚从斯康星大学麦迪逊分校计算机科学系毕业的大学生,我通过一些编程课程认识了很多使用Java的朋友.现在很多学校都在从别的编程语言(大多是C ++)转教Jav ...

  5. MLA Handbook for Writers of Research Papers笔记

    MLA Handbook for Writers of Research Papers.7th ed.New York:MLA,2009.print.还有一本,留待阅读MLA Style Manual ...

  6. 如何用Unity制作自定义字体——Custom Font

    一.效果图 二.步骤 将美术做好的字体分块导入BMFont,使用BMFont工具生成艺术字库: 将上面的数据导入unity资源目录下:*.fnt文件中记录每个文字的状态信息: 导入*.png图片并设置 ...

  7. 初步涉及JDBC

    一.为什么要使用JDBC: 1.在之前的学习中,我们都是通过控制台来输入信息,创建对象,然后再输出信息,但是这样无法保存数据,每次程序运行都需要重新输入,很麻烦. 2. 在这样的情况下,我们就需要利用 ...

  8. Facade设计模式

    Facade模式 Facade模式要求一个子系统的外部与其内部的通信必须通过一个统一的Facade对象进行.Facade模式提供一个高层次的接口,使得子系统更易于使用. 就如同医院的接待员一样,Fac ...

  9. sql server数据库操作

    --插入整行数据 , '1983-08-29', 'A', 'A', 'A') --插入部分列数据 , '1983-08-29') --删除行记录 delete from person where n ...

  10. [goa]golang微服务框架学习(三)-- 使用swagger-ui展示API

    既然goa框架自动生成啦swagger-json文件,那么如何用swagger-ui展示出来呢? 这里分三步: 1.下载swagger-ui的web代码 2.添加swagger.json 和 swag ...