python 模块的介绍(一)

模块让你能够有逻辑地组织你的Python代码段。

把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。

模块也是Python对象,具有随机的名字属性用来绑定或引用。

简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。

模块分为三种:

  • 自定义模块
  • 内置模块 (又称标准库)
  • 第三方模块 (又称第三方模块)

自定义模块:

也就是自己写的, 创建一个.py文件 自己实现一些功能 叫做自定义模块

导入模块:

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:
当解释器遇到import语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块hello.py,需要把命令放在脚本的顶端:
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。

import 文件名

Python的from语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下
例如,要导入模块zzz的xxx函数,使用如下语句: 这
个声明不会把整个zzz模块导入到当前的命名空间中,
它只会将zzz里的xxx单个引入到执行这个声明的模块的全局符号表。

from zzz import xxx

把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明: 这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
from module.xx.xx import *

导入模块其实就是告诉Python解释器去解释那个py文件

  • 导入一个py文件,解释器解释该py文件
  • 导入一个包,解释器解释该包下的 __init__.py 文件
  • 那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path
#!/usr/bin/env/python
# -*- coding:utf-8 -*-

import sys   #获取给脚本传入的参数
print(sys.path)

D:\python3.5\python.exe D:/untitled/python3/sys模块.py
[‘D:\\untitled\\python3‘, ‘D:\\untitled‘, ‘D:\\python3.5\\python35.zip‘, ‘D:\\python3.5\\DLLs‘, ‘D:\\python3.5\\lib‘, ‘D:\\python3.5‘, ‘D:\\python3.5\\lib\\site-packages‘]

Process finished with exit code 0

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append(‘路径‘) 添加。

import sys
sys.path.append(‘D:\\untitled\\python1\\day1.py‘)
print(sys.path)
D:\python3.5\python.exe D:/untitled/python3/sys模块.py
[‘D:\\untitled\\python3‘, ‘D:\\untitled‘, ‘D:\\python3.5\\python35.zip‘, ‘D:\\python3.5\\DLLs‘, ‘D:\\python3.5\\lib‘, ‘D:\\python3.5‘, ‘D:\\python3.5\\lib\\site-packages‘, ‘D:\\untitled\\python1\\day1.py‘]

Process finished with exit code 0

还可以去往上下载安装模块 安装成功后,模块会自动安装到 sys.path 中的某个目录中,如:

/usr/lib/python2.7/site-packages/

site-packages 是存放第三方安装的模块

内置模块:

time 模块:

导入模块
import time  

print(time.time())  #返回当前系统时间戳 1970年Linux系统诞生到现在的秒数
执行结果: 1463843836.9476368

print(time.ctime()) #输出当前的系统时间
执行结果:Sat May 21 23:17:57 2016

print(time.ctime(time.time()-86400)) #将当前时间减一天转为字符串格式
执行结果:Fri May 20 23:19:53 2016   

print(time.gmtime(time.time()-86400)) #将当前时间转换成_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=20, tm_hour=15, tm_min=21, tm_sec=43, tm_wday=4, tm_yday=141, tm_isdst=0)

print(time.localtime(time.time()-86400)) #本地时间转换为strruct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=20, tm_hour=23, tm_min=24, tm_sec=16, tm_wday=4, tm_yday=141, tm_isdst=0)

print(time.mktime(time.localtime()))#于time.localtime()功能相反,将struct_time格式转回成当地时间戳格式
执行结果:1463844332.0

print(‘kaixin‘)
time.sleep(4) #时间间隔4秒
print(‘gege‘)
执行结果   #操作一遍就明白了
kaixin
gege

print(time.strftime(‘%Y-%m -%d %H:%M:%S‘,time.gmtime())) #将struct_time格式转成指定的字符串格式
执行结果:2016-05 -21 15:31:32

print(time.strptime(‘2016-01-28‘,‘%Y-%m-%d‘)) #将字符串格式转换成struct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=1, tm_mday=28, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=28, tm_isdst=-1)
import datetime
print(datetime.date.today())  #输出当前的日期
执行结果:2016-05-22

print(datetime.date.fromtimestamp(time.time()-84600))#-84600减一天 #输出前一天的时间
执行结果:2016-05-21

current_time = datetime.datetime.now()
print(current_time)  #输出 当前时间
执行结果:2016-05-22 00:15:15.434901

print(current_time.timetuple()) #输出返回struct_time格式
执行结果:time.struct_time(tm_year=2016, tm_mon=5, tm_mday=22, tm_hour=0, tm_min=15, tm_sec=15, tm_wday=6, tm_yday=143, tm_isdst=-1)

print(current_time.replace(2015,10,10)) #输出2015-10-10的日期当前的时间
执行结果:2015-10-10 00:15:15.434901

str_to_date = datetime.datetime.strptime("21/11/06 16:30", "%d/%m/%y %H:%M")
print(str_to_date)   #将字符串转换成日期格式
执行结果:2006-11-21 16:30:00
new_data = datetime.datetime.now()+datetime.timedelta(days=10)
print(new_data)  #当前的日期加10天
new_data = datetime.datetime.now()+datetime.timedelta(days=-10)
print(new_data) #当前的日期减10天
new_data = datetime.datetime.now()+datetime.timedelta(hours = 10)
print(new_data)  #当前时间-10小时
new_data = datetime.datetime.now()+datetime.timedelta(seconds = 120)
print(new_data)  #当前时间加120秒

执行结果

2016-06-01 00:09:36.236987
2016-05-12 00:09:36.236987
2016-05-22 10:09:36.236987
2016-05-22 00:11:36.236987

random 模块:

# import random 导入  随机模块,

 #验证码的操作

random.randint(1,99)   #随机数字

temp = ‘‘   定义一个空字付串

for i in range(6):  循环6次

    q = random.randrange(0,4)  自动生成一个0-4的随机数

    if q == 3 or q == 1:    如果随机数等于3 或 1就生成小写字母

        c2 = random.randrange(0,10)  生成 0--10内的随机数

        temp = temp + str(c2)   向变量中添加当前数字对应的ascii码的字符

    else:

        c = random.randrange(65,91) 生成 65-91内的随机数

        z = chr(c)

        temp = temp + z  向变量中添加当前数字对应的ascii码的字符

print(temp)

sys 模块:

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n)        退出程序,正常退出时exit(0)
sys.version        获取Python解释程序的版本信息
sys.maxint         最大的Int值
sys.path           返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform       返回操作系统平台名称
sys.stdin          输入相关
sys.stdout         输出相关
sys.stderror       错误相关

进度条:

import sys
import time
for i in range(31):
    sys.stdout.write("\r")
    sys.stdout.write("%s%% | %s" % (int(i/30*100),int(i/30*100)*‘*‘))
    sys.stdout.flush()
    time.sleep(0.1)

pickle模块

pickle模块提供了四个功能:dumps、dump、loads、load

pickle.dumps(obj): 把任意对象序列化成一个str,然后把这个str写入文件

pickle.loads(string): 反序列化出对象

pickle.dump(obj,file):直接把对象序列化后写入文件

pickle.load(file):从文件中反序列化出对象

import pickle
accounts = {
    1000: {
        ‘name‘:‘Alex LI‘,
        ‘email‘: ‘[email protected]26.com‘,
        ‘passwd‘: ‘abc123‘,
        ‘balance‘: 15000,
        ‘phone‘: 13651054608,
        ‘bank_acc‘:{
            ‘ICBC‘:14324234,
            ‘CBC‘ : 235234,
            ‘ABC‘ : 35235423
        }
    },
    1001: {
        ‘name‘: ‘CaiXin Guo‘,
        ‘email‘: ‘[email protected]‘,
        ‘passwd‘: ‘abc145323‘,
        ‘balance‘: -15000,
        ‘phone‘: 1345635345,
        ‘bank_acc‘: {
            ‘ICBC‘: 4334343,
        }
    },
}

f = open(‘account.db‘,‘wb‘)
f.write(pickle.dumps(accounts))
f.close()

acc_file_name = ‘account.db‘
account_file = open(acc_file_name,‘rb‘)
account_dic = pickle.loads(account_file.read())
account_file.close()

account_dic[1000][‘balance‘]-=500

x = open(acc_file_name,‘wb‘)
x.write(pickle.dumps(account_dic))
x.close()
print(account_dic)

f = open(‘account.db‘,‘rb‘)
account_db = pickle.loads(f.read())
print(account_db)
dic = {
    ‘k1‘: [1,2],
    ‘k2‘: [3,4]
}
f = open(‘test‘,‘wb‘)
pickle.dump(dic,f)
f.close()
f = open(‘test‘,‘rb‘)
dic2 = pickle.load(f)
print(dic2)
f.close()

hashlib模块

用于加密相关的操作,
import hashlib

# ######## md5 ########

hash = hashlib.md5()

hash.update(‘admin‘)

print hash.hexdigest()

# ######## sha1 ########

hash = hashlib.sha1()

hash.update(‘admin‘)

print hash.hexdigest()

# ######## sha256 ########

hash = hashlib.sha256()

hash.update(‘admin‘)

print hash.hexdigest()

# ######## sha384 ########

hash = hashlib.sha384()

hash.update(‘admin‘)

print hash.hexdigest()

# ######## sha512 ########

hash = hashlib.sha512()

hash.update(‘admin‘)

print hash.hexdigest()

小练习:

import hashlib

def md5(arg):
    ooo = hashlib.md5(bytes(‘kai;x,in‘,encoding=‘utf-8‘))
    ooo.update(bytes(arg,encoding=‘utf-8‘))
    return ooo.hexdigest()

def login(user,pwd):
    with open(‘db‘,‘r‘,encoding=‘utf-8‘)as f:
        for line in f:
            u ,p =line.strip().split(‘|‘)
            if u == user and p == md5(pwd):
                return True

def register(user,pwd):
    with open(‘db‘,‘a‘,encoding=‘utf-8‘) as f:
        temp = user + ‘|‘+ md5(pwd)
        f.write(temp)

k = input(‘1,登录;2,注册‘)
if k == ‘2‘:
    user = input(‘请输入用户名:‘)
    pwd = input(‘请输入密码:‘)
    register(user,pwd)
elif k == ‘1‘:
    user = input(‘请输入用户名:‘)
    pwd = input(‘请输入密码:‘)
    r = login(user,pwd)
    if r :
        print(‘登陆成功‘)
    else:
        print(‘登录失败‘)
时间: 2024-11-05 16:23:33

python 模块的介绍(一)的相关文章

Python模块的介绍与使用

格式: 1)import module 2)from modname import name 3)包[目录]包含多个*.py文件,在包中编写__init__.py文件,写入导入语句 lg:from Pots import Pots  sys//与Python解释器联系的变量和函数 os//提供访问多个操作系统服务的功能 fileinput//遍历文本文件的所有行 集合[Set].堆[heapd]和双端队列[collections] time//获取当前时间,并可进行时间日期操作和格式化 rand

Python 模块简单的介绍

Python模块的学习: 1.os模块: 下面只对os模块中几个比较常用的方法做一些简单的示例: os.system():这个方法在shell中体现的比较多,在dos命令行中也可以执行,下面就以在dos命令行中为例,说下system方法的作用(通过这个示例,大家对system方法的实用就一目了然了): 1 >>> import os 2 >>> print(os.system('ls')) 3 'ls' 不是内部或外部命令,也不是可运行的程序 4 或批处理文件. 5 1

python 模块介绍 - Base16, Base32, Base64 数据编码

简介 功能:RFC 3548: Base16, Base32, Base64 数据编码.转换二进制数据为适合明文协议传输的 ASCII 序列.转换8bits 为每个字节包含 6,5 或 4bits 的有效数据,比如 SMTP, URL 的一部分或者 HTTP POST 的一部分.参考:RFC 3548.编码算法不同于 uuencode.类型:标准库相关模块:uu, binhex, uu, quopri Base64 是一种基于 64 个可打印字符来表示二进制数据的表示方法.由于 2 的 6 次方

python模块介绍

adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包MySQLdb:连接MySQL数据库的py2exe:用来生成windows可执行文件Pylons:我们领导推荐的web frameworkpysql

python 模块的概念介绍

模块 模块:本质就是一个.py文件分为三部分:内置模块.第三方模块,自定义模块 模块: 顶层文件 python模块python模块可以将代码量较大的程序分割成多个有组织的.彼此独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块,模块在物理形式上表现为以.py结尾的代码文件一个文件被看作一个独立的模块,一个模块也可以被看作是一个文件模块的文件名就是模块的名字加上扩展名.py每个模块都有自己的名称空间python允许"导入"其他模块以实现代码重用,从而也实现了将独立的代码文

python模块--时间模块

一.python中时间介绍: python中时间的表示形式有两种: 1.时间戳表示法,即以整型或浮点型表示的是一个以秒为单位的时间间隔.这个时间的基础值是从1970年的1月1号零点开始算起. 2.元组格式表示法,即一种Python的数据结构表示.这个元组有9个整型内容.分别表示不同的时间含义. 二.datetime模块 2.1 datetime模块的所有函数 In [2]: dir(datetime) Out[2]:  ['MAXYEAR',  'MINYEAR',  '__doc__',  '

如何安装python模块

在python编程语言中,我们一般会用到python模块,如chardet.pygame,这些模块不包含在python的默认代码中,需要从外部下载并安装.有些模块提供了自动安装的文件,比如pygame的Windows版本,直接双击安装就可以.但大多数模块没有提供这样的安装方式,有些同学没能成功安装而导致无法在程序中引入模块.在这里,介绍一下python模块http://www.maiziedu.com/course/python/393-4380/几种常见的安装方法.   1. 直接copy 下

python 常库介绍及安装方法

文大赛,秀绝招,赢无人机! python 常库介绍及安装方法 标签: PYTHON库 2016-10-13 15:32 798人阅读 评论(0) 收藏 举报  分类: 其他(33)  bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheetahcherrypy:一个WEB frameworkctypes:用来调用动态链接库DBUtils:数据库连接池django:一个WEB frameworkdocutils:用来写文档的dpkt:数据包的解包和组包My

python模块解析

一:模块的介绍: 用一坨代码实现了某个功能:模块分为:自定义模块.内置模块.开源模块. 1.time模块 import time print(time.time()) #返回当前系统的时间戳 print(time.ctime()) #返回当前系统的时间 print(time.ctime(time.time()-86640)) #将时间戳转化为字符串格式 print(time.gmtime(time.time()-86640)) #将时间戳转化为struct_time格式 print(time.l