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)

时间: 2024-10-08 11:12:11

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

python 学习day6 re模块

一简介: 就其本质而言,正则表达式(或 RE)是一种小型的.高度专业化的编程语言, (在Python中)它内嵌在Python中,并通过 re 模块实现.正则表达式模式被 编译成一系列的字节码,然后由用 C 编写的匹配引擎执行. 二 字符匹配(普通字符,元字符): 普通字符:大多数字符和字母都会和自身匹配         >>> re.findall('alex','yuanaleSxalexwupeiqi')            ['alex'] 2元字符:.   ^   $   * 

Python学习Day6

is比较内存地址是否相等 is 主要是判断 2 个变量的值是否指向同一个内存地址,如果是的话,则返回 true,否则返回 false. >>> a = 5555555 >>> b = 5555555 >>> a is b False >>> id(a) #a与b在内存中各开辟了一个地址存放它的值,虽然它们的值相同,但内存地址不同 1925864837008 >>> id(b) 1925868899600 >&g

python学习DAY6(集合)

#集合 无序的 # -*- coding:utf-8 -*- name=[1,4,5,2,3,2,6,7] name=set(name) #转换成集合的形式,并且自动去重 name2=set([2,6,0,66,22,8,4]) print(name,name2) #交集 print(name.intersection(name2 print(name & name2) #并集 print(name.union(name2)) print(name | name2) #差集 name中有的nam

Python学习记录day6

Python学习记录day6 学习 python Python学习记录day6 1.反射 2.常用模块 2.1 sys 2.2 os 2.3 hashlib 2.3 re 1.反射 反射:利用字符串的形式去对象(默认)中操作(寻找)成员 cat commons.py #!/usr/bin/env python#_*_coding:utf-8_*_''' * Created on 2016/12/3 21:54. * @author: Chinge_Yang.''' def login(): pr

python学习:程序控制结构·作业20141219

Python学习:程序控制结构 20141219 编程环境: windows 7 x64 python 2.7.6 题目: 1 编写程序,完成下列题目(1分) 题目内容: 如果列出10以内自然数中3或5的倍数,则包括3,5,6,9.那么这些数字的和为23.要求计算得出任意正整数n以内中3或5的倍数的自然数之和. 输入格式: 一个正整数n. 输出格式: n以内中3或5的倍数的自然数之和. 输入样例: 10 输出样例: 23 时间限制:500ms内存限制:32000kb n = int(raw_in

python学习第二天

python学习的第二天就是个灾难啊,这天被打击了,自己写的作业被否认了,不说了,写博客还是个好习惯的,要坚持下去,就不知道能坚持到什么时候.呵呵!!! 这天教的知识和第一天的知识相差不大,区别在于比第一天讲的更细了(我们是两个老师教的,风格是不一样的),这次也写那些比较细的知识点. python的简介 (1)你的程序一定要有个主文件. (2)对于python,一切事物都是对象,对象基于类创建.#似懂非懂,不过有那么点似懂. 知识点 #__divmod__ 会把两个数字相除的商和余数以元组的方式

[Python 学习] 二、在Linux平台上使用Python

这一节,主要介绍在Linux平台上如何使用Python 1. Python安装. 现在大部分的发行版本都是自带Python的,所以可以不用安装.如果要安装的话,可以使用对应的系统安装指令. Fedora系统:先以root登入,运行 yum install python Ubuntu系统:在root组的用户, 运行 sudo apt-get install python 2. 使用的Python的脚本 Linux是一个以文件为单位的系统,那么我们使用的Python是哪一个文件呢? 这个可以通过指令

python学习之最简单的用户注册及登录验证小程序

文章都是从我的个人博客上粘贴过来的哦,更多内容请点击 http://www.iwangzheng.com 正如很多同学所知道的,楼主开始学习python了,前进的道路曲曲折折,有荆棘也有陷阱,从最简单的小程序写起,每天练习,将python进行到底. 有一点比较别扭的就是python的换行之后空四个空格,ruby都是两个,并且python在方法和循环语句的第一句都要加冒号 mysql> show create table user; mysql> alter table user add sal

python学习--创建模块

昨天做了python客户端和服务器端通信,并把接收到的信息写到数据库,因为对数据库进行操作是个经常调用的行为,所以我想把调用数据库的操作写成一个module来给其它python程序调用,所以将昨天的服务器端程序拆分为两个文件: 1.主程序python.py #!/usr/bin/env python import socket import json import connmysql s = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0) h

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho