python⼊门⼿册--笔记
1
2 传递模式
参数传递 。import sys 来获取这个列表,调⽤解释器时,脚本名和附加参数传⼊⼀个名为 sys.argv 的字符串列表。
交互模式。这种模式下它根据 主提⽰符 来执⾏,主提⽰符通常标识为三个⼤于号 (>>>);继续的部分被称为 从属提⽰符,由三个点标识 (...),需要在最后多输⼊⼀个空⾏,表⽰多⾏命令结束。
3 注释
注释 :以 # 字符起始,直⾄实际的⾏尾。注释可以从⾏⾸开始,也可以在空⽩或代码之后,但是不出现在字符串中。
计算:+-*/% int() float()
编码:
Latin-1 ,ASCII ,UTF-8 和 UTF-16 之类的编码可以互相转换(译者:Latin-1 表⽰⼀个很⼩的拉丁语⾔符号集,与 ASCII 基本⼀致,其实不能⽤来表⽰庞⼤的东⽅语⾔字符集)。后两个是变长编码,将每⼀个 Unicode 字符存储为⼀到多个字节。通常默认编码为 ASCII,此编码接受 0到 127 这个范围的编码,否则报错。
转移符:\
4 函数
函数体的第⼀⾏语句可以是可选的字符串⽂本,这个字符串是函数的⽂档字符串,或者称为 docstring(⽂档字符串)。
这⼀⾏应该以⼤写字母开头,以句号结尾。
如果⽂档字符串有多⾏,第⼆⾏应该空出来,与接下来的详细描述明确分隔。接下来的⽂档应该有⼀或多段描述对象的调⽤约定、边界效应等。
使⽤ 4 空格缩进,⽽⾮ TAB。
在⼩缩进(可以嵌套更深)和⼤缩进(更易读)之间,4 空格是⼀个很好的折中。TAB 引发了⼀些混乱,最好弃⽤。
折⾏以确保其不会超过 79 个字符。
这有助于⼩显⽰器⽤户阅读,也可以让⼤显⽰器能并排显⽰⼏个代码⽂件。
使⽤空⾏分隔函数和类,以及函数中的⼤块代码。
可能的话,注释独占⼀⾏
使⽤⽂档字符串
把空格放到操作符两边,以及逗号后⾯,但是括号⾥侧不加空格:a = f(1, 2) + g(3, 4)。
统⼀函数和类命名。
推荐类名⽤ 驼峰命名,函数和⽅法名⽤ ⼩写_和_下划线。总是⽤ self 作为⽅法的第⼀个参数(关于类和⽅法的知识详见 初识类)。
不要使⽤花哨的编码,如果你的代码的⽬的是要在国际化 环境。Python 的默认情况下,UTF-8,甚⾄普通的 ASCII 总是⼯作的最好。
同样,也不要使⽤⾮ ASCII 字符的标识符,除⾮是不同语种的会阅读或者维护代码。
5 数据结构
列表对象:
insert(n,x) 把元素x插⼊到指定的n+1位置
append(x) 把元素x追加到列表尾部
remove(x) 把链表中的第⼀个元素x删除
reverse() 把链表倒置
sort() 把链表排序
pop() 把链表最后⼀个元素删除
把链表当堆栈使⽤
堆栈作为特定的数据结构,最先进⼊的元素最后⼀个被释放(后进先出)。
append() ⽅法可以把⼀个元素添加到堆栈顶。⽤不指定索引的 pop() ⽅法可以把⼀个元素从堆栈顶释放出来。
把链表当列队使⽤
队列作为特定的数据结构,最先进⼊的元素最先释放(先进先出)。
函数编译
内置函数⾮常有⽤:
filter()
map()
reduce()
map() 函数的功能是对可迭代对象中的每个元素,都调⽤指定的函数,并返回⼀个 map 对象。
注意,该函数返回的是⼀个 map 对象,不能直接输出,可以通过 for 循环或者 list() 函数来显⽰。
map() 函数的基本语法格式如下:
map(function, iterable)
其中,function 参数表⽰要传⼊⼀个函数,其可以是内置函数、⾃定义函数或者 lambda 匿名函数;iterable 表⽰⼀个或多个可迭代对象,可以是列表、字符串等。
还是对列表中的每个元素乘以 2。
listDemo = [1, 2, 3, 4, 5]
new_list = map(lambda x: x * 2, listDemo)
print(list(new_list))
运⾏结果为:
[2, 4, 6, 8, 10]
由于 map() 函数是直接由⽤ C 语⾔写的,运⾏时不需要通过 Python 解释器间接调⽤,并且内部做了诸多优化,所以相⽐其他⽅法,此⽅法的运⾏效率最⾼。
filter()函数的基本语法格式如下:
filter(function, iterable)
此格式中,funcition 参数表⽰要传⼊⼀个函数,iterable 表⽰⼀个可迭代对象。
filter() 函数的功能是对 iterable 中的每个元素,都使⽤ function 函数判断,并返回 True 或者 False,最后将返回True 的元素组成⼀个新的可遍历的集合。
返回⼀个列表中的所有偶数。
listDemo = [1, 2, 3, 4, 5]
new_list = filter(lambda x: x % 2 == 0, listDemo)
print(list(new_list))
运⾏结果为:
[2, 4]
reduce() 函数通常⽤来对⼀个集合做⼀些累积操作,其基本语法格式为:
reduce(function, iterable)
其中,function 规定必须是⼀个包含 2 个参数的函数;iterable 表⽰可迭代对象。
注意,由于 reduce() 函数在 Python 3.x 中已经被移除,放⼊了 functools 模块,因此在使⽤该函数之前,需先导⼊functools 模块。
计算某个列表元素的乘积。
import functools
listDemo = [1, 2, 3, 4, 5]
product = duce(lambda x, y: x * y, listDemo)
print(product)
运⾏结果为:
120
del也可以删除整个变量。
循环技巧
在序列中循环时,索引位置和对应值可以使⽤enumerate()函数同时得到。
同时循环两个或更多的序列,可以使⽤zip()整体打包。
需要逆向循环序列的话,先正向定位序列,然后调⽤reversed()函数。
要按排序后的顺序循环序列的话,使⽤ sorted()函数,它不改动原序列,⽽是⽣成⼀个新的已排序的序列。
遍历字典时,使⽤iteritems()⽅法可以同时得到键和对应的值。
若要在循环内部修改正在遍历的序列(例如复制某些元素),建议您⾸先制作副本。在序列上循环不会隐式地创建副本。
切⽚表⽰法使这尤其⽅便。
6 模块
import导⼊模块中的所有函数
如果打算频繁使⽤⼀个函数,你可以将它赋予⼀个本地变量。
⼀个好的习惯是将所有的import语句放在模块的开始(或者是脚本),这并⾮强制。
from fibo import *
可以导⼊所有除了以下划线( _ )开头的命名。需要注意的是在实践中往往不⿎励从⼀个模块或包中使⽤ * 导⼊所有,因为这样会让代码变得很难读。
解释器由 sys.path 变量指定的路径⽬录搜索模块,该变量初始化时默认包含了输⼊脚本(或者当前⽬
录),PYTHONPATH 和安装⽬录。这样就允许 Python 程序了解如何修改或替换模块搜索⽬录。需要注意的是由于这些⽬录中包含有搜索路径中运⾏的脚本,所以这些脚本不应该和标准模块重名,否则在导⼊模块时 Python 会尝试把这些脚本当作模块来加载。
sapm.pyc被视为模块spam的预编译⼆进制⽂件,⽤于修改时间记录,⼀旦spam.py成功编译,就会产⽣对应版本的spam.pyc。
如果没有设定 PYTHONPATH ,就由内置的默认值初始化。你可以⽤标准的列表操作修改它:
import sys
sys.path.append('/ufs/guido/lib/python')
内置函数dir⽤于按模块名搜索模块定义,它返回⼀个排好序的字符串类型的存储列表:
dir()不会列出内置函数和变量名。如果你想列出这些内容,它们在标准模块 builtin 中定义:
包
包通常是使⽤⽤“圆点模块名”的结构化模块命名空间。例如,名为 A.B 的模块表⽰了名为 A 的包中名为 B 的⼦模块。
7.输⼊和输出
输出:
print
str() str.zfill()左侧填充;str.format()填充
repr()
write()
输⼊:
open()返回⽂件对象
read()
readline()
python新手代码及作用seek()
8.错误和异常
Python 中(⾄少)有两种错误:语法错误和异常( syntax errors 和 exceptions )。
8.1 语法错误
⼩箭头的位置标记错误出现的位置;
8.2 异常
try 。。。except。。。 中间可以添加else。。。
raise语句抛出指定异常。
不管有没有发⽣异常,finally⼦句 在程序离开 try后都⼀定会被执⾏。
9 类
class
继承,迭代,⽣成
10 标准库
1. os 模块提供很多与操作系统交互的函数;内置dir()和help()函数;针对⽇常的⽂件和⽬录管理任务,shutil模块提供了⼀个易于使⽤的⾼级接
⼝:
2)glob模块提供了⼀个函数⽤于从⽬录通配符搜素中⽣成列表:
3-4)sys模块
5)re模块未⾼级字符串处理提供了正则表达式⼯具。
6)math模块位浮点运算提供了对底层C函数库的访问;random提供了⽣成随机数的⼯具;
7)urllib模块⽤于处理urls接受的数据;smtplib⽤于发送电⼦邮件;
8)datetime模块为⽇期和时间处理提供⽅法;
9)以下模块⽀持通⽤的数据打包和压缩格式:zlib/gzip/bz2/zipflie/tarfile;
10)timeit时间量度⼯具。
11)doctest模块提供扫描模块并根据程序中内嵌的⽂档字符串执⾏测试,测试构造如同简单的将它的输出结果剪切并粘贴到⽂档字符串中。
unittest模块可以在⼀个独⽴的⽂件⾥提供⼀个更加全⾯的测试集。
12)csv模块⽀持通⽤数据库格式中直接读写。
13)repr模块为⼤型或深度嵌套的容器缩写显⽰提供了repr()函数。
14)pprint模块提供了⼀种解释器可读的⽅式深⼊控制内置和⽤户⾃定义对象的打印。当输出超过⼀⾏的时候,“美化打印(pretty printer)”添加断⾏和标识符,使得数据结构显⽰的更清晰。
15)textwrap模块格式化⽂本段落以适应设定的屏宽。
16)locale模块按访问设定好的国家信息数据库。
17)string模块提供了⼀个模块类Template,使⽤它最终⽤户可以简单地进⾏编辑。
18)struct模块为使⽤变长的⼆进制记录格式提供了pack()和unpack()函数。
19)logging模块提供了完整灵活的⽇志系统。它最简单的⽤法就是记录信息并发送信息到⼀个⽂件或sys.stderr。
20 )Python ⾃动进⾏内存管理(对⼤多数的对象进⾏引⽤计数和垃圾回收 garbage collection 以循环利⽤)在最后⼀个引⽤消失后,内存会很快释放。weakref 模块提供了不⽤创建引⽤的跟踪对象⼯具,⼀旦对象不再存在,它⾃动从弱引⽤表上删除并触发回调。
21 )array模块提供了⼀个类似列表的 array()对象,它仅仅是存储数据,更为紧凑。
22)collections 模块提供了类似列表的 deque()对象,它从左边添加(append)和弹出(pop)更快,但是在内部查询更慢。
22)bisect模块以操作存储链表。
23)heapq提供了基于正规链表的堆实现。最⼩的值总是保持在 0 点。
24)decimal 模块提供了⼀个Decimal数据类型⽤于浮点数计算,相⽐较内置的⼆进制浮点数实现float,这个类型有助于:
⾦融应⽤和其它需要精确⼗进制表达的场合,
控制精度,
控制舍⼊以适应法律或者规定要求,
确保⼗进制数位精度,
或者
⽤户希望计算结果与⼿算相符的场合。
11. python⽂档辅助⽂档
python⼊门指南:。python⼊门指南
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论