1. 模块

  • 告诉解释器到哪里查找模块的位置:比如sys.path.append('C:/python')
  • 导入模块时:其所在目录中除源代码文件外,还新建了一个名为__pycache__ 的子目录,这个目录包含处理后的文件,若.py文件没变化,则不会重建,变化了则重建
  • 模块只导入一次,避免两个模块导入对方时的无穷递归
  • 若需要多次导入:import importlib,hello = importlib.reload(hello),用reload加载新版本
  • 在主程序中(包括解释器的交互式提示符),变量__name的值是'__main';导入的模块中,这个变量被设置为该模块的名称
  • import sys, pprint,pprint.pprint(sys.path)可以友好的打印,常把模块放在site-packages下
  • 比sys更常见的做法:修改PYTHONPATH比如export PYTHONPATH=$PYTHONPATH:~/python,添加到主目录中的.bashrc文件,可对所有启动的shell都执行这个命令

2. 包

  • 1.组织模块,编成包,2.目录必须包含文件__init__.py,from . import 模块名 的方式注册这个模块

3. 模块内容查询

  • 使用dir:列出对象的所有属性(对于模块,它列出所有的函数、类、变量等) [n for n in dir(copy) if not n.startswith('_')]
  • __all__:定义模块的公有接口,否则会在以import *方式导入时,导入所有不以下划线打头的全局名称!!!
  • help(copy.copy)
  • __doc__:文档开头对函数进行说明的字符串
  • __file__:有时需要使用源代码时,可以查看模块的完整路径

4. 常用模块

4.1 sys:与python解释器相关

  • sys.argv:包含传递给python解释器的参数,包括脚本名
  • sys.exit:退出当前程序
  • sys.modules:字典sys.modules对于加载模块起到了缓冲的作用。当某个模块第一次导入,字典sys.modules将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。
  • sys.path
  • sys.plantform:运行解释器的平台名称
  • sys.stdin(和input差不多,input还可以加说明文字、sys.stdoutsys.stderr是类似文件的流对象
  1. #input
  2. n = int(input('Please input a number:\n'))
  3. sn = list(map(int,input('Please input some numbers:\n').split()))#int(1),int(2)...再合成list
  4. print(n)#1
  5. print(sn,'\n')#[1,2,3]
  6. #sys.stdin
  7. print('Please input a number:')
  8. n = int(sys.stdin.readline().strip('\n')) #strip('\n')表示以\n分隔,否则输出是“字符串+\n”的形式
  9. print('Please input some numbers:')
  10. sn = sys.stdin.readline().strip()#若是多输入,strip()默认是以空格分隔,返回一个包含多个字符串的list
  11. if sn == '':
  12. break
  13. sn = list(map(int,sn.split())) #如果要强制转换成int等类型,可以调用map()函数。
  14. print(n)
  15. print(sn,'\n')
  16. 复制代码

4.2 os:能够访问多个操作系统服务

  • os.environ():环境变量,要访问环境变量PYTHONPATH,可使用表达式os.environ['PYTHONPATH']
  • os.system():用于运行外部程序
  • os.sep():是用于路径名中的分隔符
  • os.pathsep():来组合多条路径
  • os.linesep():是用于文本文件中的行分隔符
  • os.rename(旧,新)
  • os.remove()
  • os.listdir()
  • os.mkdir()
  • os.rmdir()
  • os.getcwd()
  • os.chdir()
  • os.path.isdir()

4.3 fileinput:如何读写文件

(没怎么用过,先写上,遇到了再详细看)

  • python some_script.py file1.txt file2.txt file3.txt:依次迭代文件file1.txt到file3.txt中的行
  • cat file.txt | python some_script.py

常见函数:

  • fileinput.input:返回一个可在for循环中进行迭代的对象
  • fileinput.filename:返回当前文件(即当前处理的行所属文件)的文件名
  • fileinput.lineno:返回当前行的编号
  • fileinput.filelineno:返回当前行在当前文件中的行号
  • fileinput.isfirstline:当前行为当前文件中的第一行时返回True
  • fileinput.isstdin:在当前文件为sys.stdin时返回True
  • fileinput.nextfile:关闭当前文件并跳到下一个文件
  • fileinput.close:关闭整个文件链并结束迭代。
  • 举例:在行号后面添加行号

4.4 heapq:堆中常用模块

  • 创建堆:(1)用heappush创建(2)heapify得到合法堆
  1. from heapq import *
  2. from random import shuffle
  3. data = list(range(10))
  4. shuffle(data)
  5. #创建堆:(1)用heappush创建
  6. heap = []
  7. for n in data:
  8. heappush(heap, n)#添加
  9. heappop(heap)#弹出堆顶元素
  10. #(2)heapify得到合法堆
  11. heapreplace(heap, 0.5)#弹出最小元素,且压入新元素,相当于前两个的整合,但效率更高
  12. #nlargest(n, iter),nsmallest(n, iter),找出可迭代对象iter中最大和最小的n个元素
  13. 复制代码

4.5 双端队列

  1. from collections import deque
  2. q = deque(range(5))
  3. q.append(5)
  4. q.appendleft(6)
  5. q.pop()
  6. q.popleft()
  7. q.rotate(3)
  8. q.rotate(-1)
  9. #此外还有extend,extendleft
  10. 复制代码

4.6 time

  • time.asctime():将时间元组转换为字符串
  • time.time():返回当前的国际标准时间,以从新纪元开始的秒数表示

4.7 random

  • random.random:返回一个0~1(含)的伪随机数
  • random.getrandbits:以一个整数的方式返回指定数量的二进制位。
  • random.uniform:回一个a~b(含)的随机(均匀分布 的)实数。例如,如果你需要一个随机角度,可使用uniform(0, 360)
  • random.randrange:是生成随机整数的标准函数
  • random.choice:从给定序列中随机(均匀)地选择一个元素
  • random.sample:从给定序列中随机(均匀)地选择指定数量的元素,并确保所选择元素 的值各不相同

4.8 shelve和json

4.9 re

4.9.1 正则表达式

  • 通配符:句点与除换行符外的其他字符都匹配
  • 对特殊字符进行转义:'python\.org‘。两层转义:解释器执行的转义和模块re执行的转义
  • 字符集:例如'[a-zA-Z0-9]'与大写字母、小写字母和 数字都匹配。请注意,字符集只能匹配一个字符
  • 指定排除字符集:'abc'与除a、b和c外的其他任何字符 都匹配。
  • 二选一和子模式:'python|perl','p(ython|erl)'
  • 问号表示可选的子模式可出现一次,也可不出现
  • (pattern)*:pattern可重复0、1或多次。
  • (pattern)+:pattern可重复1或多次。
  • (pattern){m,n}:模式可从父m~n次

4.9.2 一些函数

  • compile(pattern[, flags]):根据包含正则表达式的字符串创建模式对象
  • search(pattern, string[, flags]):在字符串中查找模式
  • match(pattern, string[, flags]):在字符串开头匹配模式
  • split(pattern, string[, maxsplit=0]):根据模式来分割字符串
  • findall(pattern, string):返回一个列表,其中包含字符串中所有与模式匹配的子串
  • sub(pat, repl, string[, count=0]):将字符串中与模式pat匹配的子串都替换为repl
  • escape(string):对字符串中所有的正则表达式特殊字符都进行转义

5.操作文件的函数/方法

open函数负责打开文件(f = open("文件名","打开方式")),返回文件操作对象f,打开方式有:只读r,只写w,追加a等
read/write/close需要文件对象f来调用

Python基础学习之常用模块的更多相关文章

  1. 第六章:Python基础の反射与常用模块解密

    本课主题 反射 Mapping 介绍和操作实战 模块介绍和操作实战 random 模块 time 和 datetime 模块 logging 模块 sys 模块 os 模块 hashlib 模块 re ...

  2. python基础学习十 logging模块详细使用【转载】

    很多程序都有记录日志的需求,并且日志中包含的信息既有正常的程序访问日志,还可能有错误.警告等信息输出,python的logging模块提供了标准的日志接口,你可以通过它存储各种格式的日志,主要用于输出 ...

  3. python基础学习笔记——collections模块

    在内置数据类型(dict.list.set.tuple)的基础上,collections模块还提供了几个额外的数据类型:Counter.deque.defaultdict.namedtuple和Ord ...

  4. Python基础学习:operator模块

    operator——函数的标准操作 转自:https://blog.csdn.net/zhtysw/article/details/80510113 代码资源:Lib/operator.py oper ...

  5. python基础学习笔记——time模块

    time模块 time翻译过来就是时间,有我们其实在之前编程的时候有用到过. #常用方法 1.time.sleep(secs) (线程)推迟指定的时间运行.单位为秒. 2.time.time() 获取 ...

  6. python基础学习笔记——os模块

    #OS模块 #os模块就是对操作系统进行操作,使用该模块必须先导入模块: import os #getcwd() 获取当前工作目录(当前工作目录默认都是当前文件所在的文件夹) result = os. ...

  7. Python基础学习----字典常用操作

    字典的常见操作: # 字典: # 格式:{键值对,键值对} dict_demo={"name":"bai-boy","age":17} # ...

  8. Python入门基础学习(时间模块,随机模块)

    Python基础学习笔记(六) time模块: 时间的三种表示方法: 1.格式化字符串 2.时间戳 用来表示和1970年的时间间隔,单位为s 3.元组 struct_time 9个元素 time的st ...

  9. python基础学习(起步)

    目录 python基础学习(起步) 变量 常量 变量的内存管理 python垃圾回收机制 变量的其他赋值方式 今日编程小题 本人能力有限,若有偏颇之处请读者大大不吝赐教! 祝大家每天都在成长! pyt ...

随机推荐

  1. Spring Boot第七弹,别再问我拦截器如何配置了!!!

    持续原创输出,点击上方蓝字关注我吧 前言 上篇文章讲了Spring Boot的WEB开发基础内容,相信读者朋友们已经有了初步的了解,知道如何写一个接口. 今天这篇文章来介绍一下拦截器在Spring B ...

  2. Apache HttpClient 4.5 在Springboot中使用

    ConnectionRequestTimeout httpclient使用连接池来管理连接,这个时间就是从连接池获取连接的超时时间,可以想象下数据库连接池 ConnectTimeout 连接建立时间, ...

  3. try-finally的时候try里面带return

    最近学习的JVM小册中老师提了个问题: 最开始我觉得是1,结果程序跑出来是0,感到很疑惑,于是查看了下字节码: 从字节码可以看出: 0:定义变量0 1:将0存入本地变量表slot-0 2:加载slot ...

  4. git pull设置为无需密码

    https方式每次都要输入密码,按照如下设置即可输入一次就不用再手输入密码的困扰而且又享受https带来的极速 设置记住密码(默认15分钟): git config --global credenti ...

  5. CyclicBarrier原来是这样的

    上一篇聊了一下Semaphore信号灯的用法及源码,这一篇来聊一下CyclicBarrier的用法及解析. 官网解释: 允许一组线程全部等待彼此达到共同屏障点的同步辅助.循环阻塞在涉及固定大小的线程方 ...

  6. 1.ffmpeg、ffplay、ffprobe命令使用

    1.学前知识 1.1视频码率值 码率公式: 码率(kbps)=文件大小(KB)*8/时间(秒) 所以码率和视频文件大小成正比的,不过码率超过一定值后,人眼是看不出效果的. 接下来,我们便先来学习ffm ...

  7. 多测师讲解python _unttest框架002(结合项目实战)_高级讲师肖sir

    第一种调用方法: if __name__ == '__main__':# #第一种运行方法:运行所有的用例 import unittestfrom selenium import webdriverf ...

  8. spring boot:redis+lua实现生产环境中可用的秒杀功能(spring boot 2.2.0)

    一,秒杀需要具备的功能: 秒杀通常是电商中用到的吸引流量的促销活动方式 搭建秒杀系统,需要具备以下几点: 1,限制每个用户购买的商品数量,(秒杀价格为吸引流量一般会订的很低,不能让一个用户全部抢购到手 ...

  9. jquery1.9+,jquery1.10+ 为什么不支持live方法了?

    live() 替换成 on() die()  替换成off() 根据jQuery的官方描述,live方法在1.7中已经不建议使用,在1.9中删除了这个方法.并建议在以后的代码中使用on方法来替代. o ...

  10. Helium文档10-WebUI自动化-Text识别网页上的任何文本或标签

    前言 Text关键字的作用是识别网页上的文字,在一般UI查找中使用率非常高,但是需要注意,如果网页上有相同的文字,那么只能识别到第一个 入参介绍 以下是Text的源码 有5个如参:后面4个参数是上下左 ...