模块

使用 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. 计算机应用基础考试单选,计算机应用基础统考题库_计算机应用基础统考试题及答案(单选题)...

    计算机应用基础统考题库_计算机应用基础统考试题及答案(单选题) 1.世界上第一台电子数字计算机的诞生时间是(). A.1946年 B.1951年 C.1957年 D.1962年 答案:A 2.()体现 ...

  2. python入门教程傻瓜版_毫无基础的人如何入门 Python ?Python入门教程拿走不谢啦!...

    随着人工智能的发展,Python近两年也是大火,越来越多的人加入到Python学习大军,对于毫无基础的人该如何入门Python呢?这里整理了一些个人经验和Python入门教程供大家参考. 如果你是零基 ...

  3. python自学看不懂怎么办_零基础学习python但是基础教程一看到后面就开始看不懂了,怎么办?...

    廖大的教程看不懂不要担心,简明教程也看不下去也不要怕,世界上总有人基础比你好的,不过我们可以用笨办法来学习python. 0,先找一个python3版本的<笨办法学python>,从头看, ...

  4. python知识笔记_[Python笔记]第一篇:基础知识

    二.为什么要使用Python 优点: 学习成本低 开发效率高–拥有丰富而且强大的第三方库 高级语言–不用关心底层运作细节 可扩展性–Python是一门胶水语言,能于其他语言如C ,C#进行扩展 缺点: ...

  5. python从基础到入门电子书_零基础如何学好python?一本python从入门到实践电子书籍赠送...

    0基础.非计算机专业怎么学Python?其中最重要的,我想就是基础的夯实.掌握好Python语法等基础知识,才能在做项目时事半功倍.今天我们就来看看2位前辈是怎么自学Python的.希望对你有所帮助. ...

  6. python后端开发学什么_零基础学Python,这是阿里Python8年开发经验写给你的学习路线图...

    今天给大家分享一位前辈整理的一个Python web学习路线.这位前辈由于有编程基础,所以采用了自学Python的方式.学完后主要做后端开发.希望对你有所启发. 整理的一个 python web 学习 ...

  7. 初学python有几个阶段_零基础如何系统的学习Python 从7个阶段入手

    目前信息化产业发展势头很好,互联网就成为了很多普通人想要涉及的行业,因为相比于传统行业,互联网行业涨薪幅度大,机会也多,所以就会大批的人想要转行来学习Python开发. Python语言的应用 Pyt ...

  8. python语言程序设计难不难_零基础学Python编程开发难度大吗?从哪学起?

    转行零基础学Python编程开发难度大吗?从哪学起? 近期很多小伙伴问我,如果自己转行学习Python,完全0基础能否学会呢?Python的难度到底有多大? 今天,小编就来为大家详细解读一下这个问题. ...

  9. 零基础轻松学python pdf 小码哥_零基础轻松学Python

    零基础轻松学Python电子书 Python之父Guido van Rossum力荐的Python门书.本书以通俗易懂的语言.好玩有趣的案例让读者轻轻松松.循序渐地从零始掌握Python 3 编程.本 ...

  10. 零基础python视频教程谁的好_零基础自学Python!自我提升视频教程,新手必看

    小编今天给大家分享一套高老师的python400集视频教程,里面包含入门进阶,源码,实战项目等等,,不管你是正在学习中,还是想要学习的,通通来吧 肯定不会让你失望. 目录大纲: 本套教程15天 学前环 ...

最新文章

  1. 这24个高频存储问题,你一定要知道!如何不停机,安全更换数据库?大厂都怎么做MySQL到Redis同步的?...
  2. python怎么读文件里的某一行-python读取txt文件并取其某一列数据的示例
  3. 日期和时间 - Java处理日期和时间
  4. 物流行业应用虚拟化解决方案
  5. 双语经典:告别单身的必杀技之情话连篇
  6. 2021-2025年中国一氧化碳烟雾报警器行业市场供需与战略研究报告
  7. 学好python工资一般多少-学会Python后,月薪40k是什么水平?
  8. 今天安家 明天开始在网络的海洋里遨游
  9. oracle字符串转日期比较大小写,【varchar】oracle中比较日期大小日期定义的是varchar2类型的......
  10. 国科大学习资料--自然语言处理(宗成庆)-2016期末考试题
  11. PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
  12. swf是什么文件以及与fla格式的区别
  13. 【Android -- 技术周刊】第 021 期
  14. 最全Java后端技术栈
  15. 《脑与语言认知 江铭虎》读书总结
  16. 遥感道路提取的补充C-UNet: Complement UNet for Remote Sensing Road Extraction
  17. 哪些著名软件是用C、C++编写的?
  18. 嵌入式和移动深度学习研究
  19. stable-baselines3学习之Logger
  20. 手机电影正式亮相,华为手机不断提高影像力让手机拍电影成为可能

热门文章

  1. 叶问【转自知数堂微信公众号】
  2. TensorFlow - 使用Eigen进行矩阵计算
  3. ORACEL R12 总账和子账的关系
  4. 一文读懂“什么是Web 1.0,Web 2.0,Web 3.0?”
  5. typescript总结
  6. 翁恺c语言视频作业题,翁恺入门C语言第2周编程练习
  7. (转)如何在Excel2013中制作条形码
  8. 【无代码爬虫】web scraper 之 安装
  9. oracle linux 退格,oracle database for linux 不能使用退格键
  10. python生成单位阵或者对角阵的三种方法