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 ...
随机推荐
- DIOCP之开发流程图之Server
server开发流程图 暂时没有找到好的流程图绘制软件,就用画图来做的,比较乱,太慢了
- asp.net LINQ实现数据分页
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- VisualSVN Server导入Repository
SVN服务器换机器了,原来SVN服务器A的Repository需要原样复制到新的SVN服务器B. 原样复制 Repository ,是为了保持SVN内容不会因换了服务器而导致不同. 那么在新SVN服务 ...
- Sharif University CTF 2016 -- Login to System (PWN 200)
EN: It's easy to find out where is the bug : .text:0000000000400DE4 ; void *start_routine(void *).te ...
- jquery设置自己的标识符
$(function(){ var $jc=jQuery.noConflict(); $jc('.main').css({'margin':'0 auto'}) })
- [转载] Android随笔之——PackageManager详解
本文转载自: http://www.cnblogs.com/travellife/p/3932823.html 参考:http://www.cnblogs.com/xingfuzzhd/p/33745 ...
- XdbxAnalysis
Tree: TXdbxAnalysis; FDataStream: TMemoryStream; {FDataStream:= TMemoryStream.Create; FDataStream ...
- char类型输出地址
问题描述: 当输出char的地址时,发现输出的是一个字符: char ch = 'a'; cout<<&ch<<endl;//a @ 因为cout得到一个char类型的 ...
- jquery取框架当前的url
前提,当前frame无名或动态生成的: var url = eval($("#ifr1").attr("name")+".location.href; ...
- jQuery停止动画——stop()方法的使用
很多时候需要停止匹配元素正在进行的动画,比如,当鼠标选入元素时显示菜单,鼠标离开时隐藏下拉菜单,如果鼠标移入移出过快的话就会导致动画效果与鼠标的动作不一致的情况,此时stop()就派上用场了. sto ...