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. 运行easy_install安装python相关程序时提示failed to create process

    运行easy_install安装python相关程序时提示failed to create process,因为安装了两个python,卸载了的那个目录没删除,删除了另外的python目录后这个问题就 ...

  2. thinkphp 动态验证码

    <?php namespace Home\Controller; use Think\Controller; class TestController extends Controller { ...

  3. 当前界面最上面添加视图(UIWimdow)

    -(void)windowAddPushVc:(UIView *)pushView WithTitle:(NSString *)title { UIWindow *window = [UIApplic ...

  4. 安全标识符SID技术介绍及查看技巧

    说到安全标识符SID就要先说说安全主体(Security Principals),安全主体是一个能够对它分配权限的对象,例如,用户.组和计算机: 对于每一个Windows 200x域中的安全主体都有一 ...

  5. C# Using 用法

    using 语句允许程序员指定使用资源的对象应当何时释放资源.为 using 语句提供的对象必须实现 IDisposable 接口.此接口提供了 Dispose 方法,该方法将释放此对象的资源. 一起 ...

  6. Android开发学习---使用Intelij idea 13.1 进行android 开发

    1.为什么放弃eclipse?太卡!! 实在受不了eclipse的卡了,运行WEB项目还好,但android开发实在太慢,太慢!经常卡死,CPU经常被占满! 看网上很多人都说比Intelij idea ...

  7. [转] Oracle sql 查询突然变慢 -- 案例分析

    转自:http://jingyan.baidu.com/article/8275fc868ce57946a03cf692.html 一条sql突然执行变慢,耗时9秒,应用是不能改的,只能从数据库方面下 ...

  8. Java在处理大数据的时候一些小技巧

    Java在处理大数据的时候一些小技巧 发布时间:2013-05-09 00:00:00 来源:中国IT实验室 作者:佚名   关键字:Java 众所周知,java在处理数据量比较大的时候,加载到内存必 ...

  9. Redis与Memcached的区别

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  10. solr多词匹配搜索问题及解决

    使用solr进行某较长词搜索时出现了一些问题,及解决方案. 1.问题:solr默认使用OR方式搜索,当搜索一个很长的次,比如“XX集团股份有限公司”,分词器分词后,使用OR方式匹配,会匹配到很多结果. ...