Python 学习---------Day6
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的更多相关文章
- python 学习day6(面向对象)
博客部分内容转自:http://www.cnblogs.com/wupeiqi/p/4493506.html 面向对象编程介绍 为什么要用面向对象进行开发? 面向对象的特性:封装.继承.多态 类.方法 ...
- Python学习-day6 面向对象概念
开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...
- python学习-Day6
目录 学习内容详述 上期 '猜年龄'练习详解: while循环补充 while + else 死循环与while的嵌套 while嵌套 for循环 range关键字 range用法 什么是爬虫??? ...
- python学习day6 数据类型Ⅳ(集合)
day6 数据类型-集合 内容补充: 列表功能: .reverse()反转 v = [1,2,3,4,5,6]v.reverse()print() #[6, 5, 4, 3, 2, 1] .sort( ...
- python学习 day6 (3月7日)
#__author : 'liuyang' #date : 2019/3/7 0007 a = ['a' , 'b' , 'c'] b = [] print(a is b ) # 空元组 可以 空列表 ...
- python学习Day6 元组、字典、集合set三类数据用法、深浅拷贝
一.深浅拷贝 1. 值拷贝 ls1 = ls2 不开辟空间,指针跟着走.(直接将ls1中存放的地址拿过来,内存中不会开辟新的空间,所以你怎么变,我也跟着变.)(ls1内部的所有类型的值发生改变,l ...
- 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 ...
- Python学习记录day6
title: Python学习记录day6 tags: python author: Chinge Yang date: 2016-12-03 --- Python学习记录day6 @(学习)[pyt ...
- python笔记 - day6
python笔记 - day6 参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html 大纲: 利用递归,实现阶乘: Python反射 pyt ...
- 【目录】Python学习笔记
目录:Python学习笔记 目标:坚持每天学习,每周一篇博文 1. Python学习笔记 - day1 - 概述及安装 2.Python学习笔记 - day2 - PyCharm的基本使用 3.Pyt ...
随机推荐
- iOS支持Https
http://oncenote.com/2014/10/21/Security-1-HTTPS/?hmsr=toutiao.io&utm_medium=toutiao.io&utm_s ...
- 转 Microsoft's Objective-C tech started on BlackBerryOS, Tizen
今天看到了这个 Microsoft's Objective-C tech started on BlackBerryOS, Tizen 见原文 http://www.osnews.com/story ...
- 用shell在一个文件后面的每一行追加数据
在shell分析log的时候,需要将数据过滤后转为csv的格式: 要在分析好的数据后面追加逗号: sed 's/$/&,/g' no2.log > ccc.log 结果保存在ccc.lo ...
- HDMI IP学习笔记
在HDMI的IP核中点击,生成例子.找到./simulaion/mentor文件夹,把modelsim路径转到该路径下,即可仿真.
- 安装好grunt,cmd 提示"grunt不是内部或外部命令" 怎么办?
Grunt和所有grunt插件都是基于nodejs来运行的,因此,必须安装node.js. (一) 去官网http://nodejs.org/ 下载安装包 node-v6.9.2.msi,直接点击安装 ...
- ZT 北大青鸟APTECH(南京泰思特)
北大青鸟APTECH(南京泰思特)授权培训中心诚招 高级软件测试/开发培训讲师 Posted on 2008-01-14 11:38 追求卓越 阅读(590) 评论(7) 编辑 收藏 北京阿博泰克北大 ...
- SegmentControl的多选项实现(标题栏)
NSArray *titleArr = @[STR(@"全部"), STR(@"未使用"), STR(@"已赠送"), STR(@" ...
- Calculating Stereo Pairs
Calculating Stereo Pairs Written by Paul BourkeJuly 1999 Introduction The following discusses comput ...
- 读取xml文件报错:Invalid byte 2 of 2-byte UTF-8 sequence。
程序读取xml文件后,系统报“Invalid byte 2 of 2-byte UTF-8 sequence”错误,如何解决呢? 1.程序解析xml的时候,出现Invalid byte 2 of 2- ...
- 如何将数据库中的表导入到PowerDesigner中
1. 打开PowerDesigner12,在菜单中按照如下方式进行操作file->Reverse Engineer->DataBase 点击后,弹出 New Physical ...