python基础教程读书笔记_《Python基础教程》读书笔记10
模块
使用 dir
dir 函数可以将对象的所有属性(以及模块的所有函数、类、变量等)列出。
>>> import copy
>>> dir(copy)
['Error', 'PyStringMap', '_EmptyClass', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_copy_dispatch', '_copy_immutable', '_copy_with_constructor', '_copy_with_copy_method', '_deepcopy_atomic', '_deepcopy_dict', '_deepcopy_dispatch', '_deepcopy_list', '_deepcopy_method', '_deepcopy_tuple', '_keep_alive', '_reconstruct', 'builtins', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name', 't', 'weakref']
>>> [n for n in dir(copy) if not n.startswith('_')]
['Error', 'PyStringMap', 'builtins', 'copy', 'deepcopy', 'dispatch_table', 'error', 'name', 't', 'weakref']
all变量>>> copy.__all__
['Error', 'copy', 'deepcopy']
如果使用 from copy import *,那么就只能使用 __all__ 变量中的函数。如果要使用其他函数,则需要 from copy import XXX。
用 help 获取帮助
用 help 含函数与查看函数文档字符串相比,可以获得更多信息,比如所带参数。
>>> help(copy.copy)
Help on function copy in module copy:
copy(x)
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
>>> print(copy.copy.__doc__)
Shallow copy operation on arbitrary Python objects.
See the module's __doc__ string for more info.
查看源代码>>> print (copy.__file__)
C:python3.5libcopy.py
标准库
sys变量sys.argv包含传递到Python解释器的参数,包括脚本名称。
函数sys.exit可以退出当前程序,大多数使用默认参数0,表示成功,也可以使用字符串用作错误信息。
映射sys.modules将模块名映射到实际存在的模块上,只应用于目前导入的模块。
变量sys.path一个字符串列表,解释器将从这些目录中查找模块。
变量sys.platform一个字符串,平台的名称,如:操作系统名字(win32),运行Jython就是java虚拟机(java1.6.12).
变量sys.stdin,sys.stdout,sys.stderr,类文件流对象,标准输入、标准输出和标准错误。
写一个脚本 test.py
import sys
args = sys.argv[1:] # 第一个参数是脚本的名字
args.reverse()
print(' '.join(args))
在 Shell 中运行,或 MS-DOS 中运行
$ python test.py this is a test
test a is this
fileinput
遍历文本文件的所有行。
fileinput.input([files[, inplace[, backup]]]),返回能够用于for循环遍历的对象。
(1)files,序列或字符串,提供一个或多个文件名。
(2)inplace,布尔值,是否进行原地处理,对于要访问的每一行,需要打印出替代的内容,以返回到当前的输入文件中。容易破坏文件,应该在不使用这个参数时,仔细测试程序,确保正确后再修改文件。
(3)backup,当inplace为True时,backup参数将文件名扩展备份到通过原始文件创建的备份文件中。
fileinput.filename()函数返回当前正在处理的文件名。
fileinput.lineon()函数返回当前行数。如果处理多个文件,这个值是累计的,处理下一个文件时,行数不会重置。
fileinput.isfirstline()函数判断当前行是否是当前文件的第一行,是返回True,否返回False。
fileinput.isstdin()函数在当前文件为sys.stdin时返回真值,否则假值。
fileinput.nextfile()函数会关闭当前文件,跳到下一个文件,跳过的行并不计。
fileinput.close()函数关闭整个文件链。结束迭代。
# numberlines.py
# 为文本文件添加行号
import fileinput
for line in fileinput.input(inplace=True):
line = line.rstrip()
num = fileinput.lineno()
print ('%-40s # %2i' % (line, num))
运行程序
$ python numberlines.py numberlines.py
堆
位于i位置上的元素总比i/2位置上的元素大(反之来说就是i位置上的元素总比2*i以及2*i+1位置上的元素小)。
Python中没有堆类型,有一个包含一些堆操作函数的模块,这个模块叫做heapq(q是queue的缩写,即队列)
heappush函数
heappush 函数用于增加堆的项。只能用于通过各种堆函数建立的列表中,不能是之前的普通列表。
>>> from heapq import *
>>> from random import shuffle
>>> data = range(10)
>>> shuffle(data) # Python2.7不会报错,Python 3.5会报错,range() 返回的是“range object”,而不是实际的list 值
Traceback (most recent call last):
File "", line 1, in
shuffle(data)
File "C:python3.5.2librandom.py", line 272, in shuffle
x[i], x[j] = x[j], x[i]
TypeError: 'range' object does not support item assignment
>>> data = list(range(10))
>>> shuffle(data)
>>> data
[2, 5, 8, 0, 6, 3, 1, 7, 4, 9]
>>> heap = []
>>> for n in data:
heappush(heap, n)
>>> heappush(heap, 0.5)
>>> heap
[0, 0.5, 1, 4, 2, 8, 3, 7, 5, 9, 6]
heappop 函数
heappop 函数弹出最小的元素,一般就是索引0处的元素。
>>> heappop(heap)
0
>>> heappop(heap)
0.5
>>> heappop(heap)
1
>>> heap
[2, 4, 3, 5, 9, 8, 6, 7]
heapify 函数
heapify 函数使用任意列表作为参数,并将其转换为合法的堆。
>>> heap = [3, 5, 6, 8, 4, 2, 7, 1, 9]
>>> heapify(heap)
>>> heap
[1, 3, 2, 5, 4, 6, 7, 8, 9]
heapreplace 函数
heapreplace 函数弹出堆的最小元素,并将新元素推入。这样比 heappop 之后再调用 heappush 更高效。
>>> heap
[1, 3, 2, 5, 4, 6, 7, 8, 9]
>>> heapreplace(heap, 0.5)
1
>>> heapreplace(heap, 10)
0.5
>>> heap
[2, 3, 6, 5, 4, 10, 7, 8, 9]
nlargest(n, iter)
返回 iter 中第 n 大的元素。
nsmllest(n, iter)
返回 iter 中第 n 小的元素。
双端队列
双端队列(double-ended queue,或称deque),collections 模块。
>>> from collections import deque
>>> q = deque(range(5))
>>> q
deque([0, 1, 2, 3, 4])
>>> q.append(5)
>>> q.appendleft(6)
>>> q
deque([6, 0, 1, 2, 3, 4, 5])
>>> q.pop()
5
>>> q.popleft()
6
>>> q.rotate(3) # 元素左移3个,或者说指针,指向第一个元素的指针
>>> q
deque([2, 3, 4, 0, 1])
>>> q.rotate(-1) # 元素右移1个
>>> q
deque([3, 4, 0, 1, 2])
shelve
在文件中存储数据,进行普通字典(键是字符串)来操作。
>>> import shelve
>>> s = shelve.open(r'C:UsersbinDesktoppythontestshelve.dat') # Python3.5,2.7,目录中有这个shelve.dat文件,且文件不是shelve创建的,就会报错,
Traceback (most recent call last):
File "", line 1, in
s = shelve.open(r'C:UsersbinDesktoppythontestshelve.dat')
File "C:python3.5.2libshelve.py", line 243, in open
return DbfilenameShelf(filename, flag, protocol, writeback)
File "C:python3.5.2libshelve.py", line 227, in __init__
Shelf.__init__(self, dbm.open(filename, flag), protocol, writeback)
File "C:python3.5.2libdbm__init__.py", line 88, in open
raise error[0]("db type could not be determined")
dbm.error: db type could not be determined
>>> s = shelve.open(r'C:UsersbinDesktoppythontestshelve.dat') # 如果源文件不存在 Python3.5 会生成shelve.dat.dat文件,文件大小0kb。
# 如果源文件不存在 Python2.7 会生成shelve.dat文件,文件大小24kb
>>> s['x'] = ['a', 'b', 'c'] # Python3.5 生成shelve.dat.dir文件
>>> s['x'].append('d')
>>> s['x'] # 刚新增的'd',不存在
['a', 'b', 'c']
>>> temp = s['x'] # 可以这么做,保存在临时变量中,再新增'd',最后重新存储这个副本
>>> temp.append('d')
>>> s['x'] = temp
>>> s['x']
['a', 'b', 'c', 'd']
>>> s.close() # 记得关闭 Python3.5 生成shelve.dat.bak文件
# 也可以将open函数的writeback参数设置为True,这样所有读取或赋值操作都会保存在内存中,在close后保存到磁盘中。数据小可以这么做。
>>> s = shelve.open(r'C:UsersbinDesktoppythontestshelve.dat',writeback=True)
>>> s['x'].append('e')
>>> s['x']
['a', 'b', 'c', 'd', 'e']
>>> s.close()
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [email protected]
python基础教程读书笔记_《Python基础教程》读书笔记10相关推荐
- 计算机应用基础考试单选,计算机应用基础统考题库_计算机应用基础统考试题及答案(单选题)...
计算机应用基础统考题库_计算机应用基础统考试题及答案(单选题) 1.世界上第一台电子数字计算机的诞生时间是(). A.1946年 B.1951年 C.1957年 D.1962年 答案:A 2.()体现 ...
- python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...
随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...
- python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...
廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...
- python知识笔记_[Python笔记]第一篇:基础知识
二.为什么要使用Python 优点: 学习成本低 开发效率高–拥有丰富而且强大的第三方库 高级语言–不用关心底层运作细节 可扩展性–Python是一门胶水语言,能于其他语言如C ,C#进行扩展 缺点: ...
- python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...
0基础.非计算机专业怎么学Python?其中最重要的,我想就是基础的夯实.掌握好Python语法等基础知识,才能在做项目时事半功倍.今天我们就来看看2位前辈是怎么自学Python的.希望对你有所帮助. ...
- python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...
今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...
- 初学python有几个阶段_零基础如何系统的学习Python 从7个阶段入手
目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Python开发. Python语言的应用 Pyt ...
- python语言程序设计难不难_零基础学Python编程开发难度大吗?从哪学起?
转行零基础学Python编程开发难度大吗?从哪学起? 近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大? 今天,小编就来为大家详细解读一下这个问题. ...
- 零基础轻松学python pdf 小码哥_零基础轻松学Python
零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...
- 零基础python视频教程谁的好_零基础自学Python!自我提升视频教程,新手必看
小编今天给大家分享一套高老师的python400集视频教程,里面包含入门进阶,源码,实战项目等等,,不管你是正在学习中,还是想要学习的,通通来吧 肯定不会让你失望. 目录大纲: 本套教程15天 学前环 ...
最新文章
- 这24个高频存储问题,你一定要知道!如何不停机,安全更换数据库?大厂都怎么做MySQL到Redis同步的?...
- python怎么读文件里的某一行-python读取txt文件并取其某一列数据的示例
- 日期和时间 - Java处理日期和时间
- 物流行业应用虚拟化解决方案
- 双语经典:告别单身的必杀技之情话连篇
- 2021-2025年中国一氧化碳烟雾报警器行业市场供需与战略研究报告
- 学好python工资一般多少-学会Python后,月薪40k是什么水平?
- 今天安家 明天开始在网络的海洋里遨游
- oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
- 国科大学习资料--自然语言处理(宗成庆)-2016期末考试题
- PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
- swf是什么文件以及与fla格式的区别
- 【Android -- 技术周刊】第 021 期
- 最全Java后端技术栈
- 《脑与语言认知 江铭虎》读书总结
- 遥感道路提取的补充C-UNet: Complement UNet for Remote Sensing Road Extraction
- 哪些著名软件是用C、C++编写的?
- 嵌入式和移动深度学习研究
- stable-baselines3学习之Logger
- 手机电影正式亮相,华为手机不断提高影像力让手机拍电影成为可能
热门文章
- 叶问【转自知数堂微信公众号】
- TensorFlow - 使用Eigen进行矩阵计算
- ORACEL R12 总账和子账的关系
- 一文读懂“什么是Web 1.0,Web 2.0,Web 3.0?”
- typescript总结
- 翁恺c语言视频作业题,翁恺入门C语言第2周编程练习
- (转)如何在Excel2013中制作条形码
- 【无代码爬虫】web scraper 之 安装
- oracle linux 退格,oracle database for linux 不能使用退格键
- python生成单位阵或者对角阵的三种方法