简明python教程笔记二
第4章 基本概念
1 常量:按照它们的字面意义使用它们的值,不能改变它的值。
2 数:Python中有4种类型的数——整数、长整数、浮点数和复数。
3 字符串:
- 单引号:'Quote me on this '
- 双引号:"What's your name?"
- 三引号:可以指示一个多行的字符串,并且在三引号中自由的使用单引号和双引号:
'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He
said "Bond, James Bond."
'''
- 转义符:反斜杠——‘What\'s your name?’ 行末反斜杠的应用:
"This is the first sentence.\
This is the
second sentence."
等价于"This is the first sentence. This is the second
sentence."
- 字符串是不可变的
- 连接:把两个字符串按字面意义相邻放着,他们会被Python自动级联
4 变量
标识名命名规则:
- 第一个字符必须是字母表中的字母(大写或小写)或者一个下划线;
- 其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字
- 大小写敏感
使用变量时只需要给它们赋一个值。不需要声明或定义数据类型
5 逻辑行与物理行:
- 物理行:编写程序时看见的行
- 逻辑行:python看见的单个语句,python假定每个物理行对应一个逻辑行。建议每个物理行都只写一个语句
- 行连接:明确的行链接(\);暗示的行连接(圆括号、方括号或波形括号)
6 缩进:
- 同一层次的语句必须有相同的缩进。每一组这样的语句称为一个块
- 不要混合使用制表符和空格来缩进
- 墙裂建议在每个缩进层次使用 单个制表符 或 两个 或 四个空格 。
第5章 运算符与表达式
简单介绍了运算符、运算符的优先级和表达式~~
第6章 控制流
1 if语句:if
语句用来检验一个条件, 如果 条件为真,我们运行一块语句(称为 if-块 ), 否则 我们处理另外一块语句(称为 else-块 )。。
if
语句在结尾处包含一个冒号elif
和else
从句都必须在逻辑行结尾处有一个冒号elif
和else
部分是可选的
2 while语句:while
语句有一个可选的else
从句;只要在一个条件为真的情况下,while
语句允许你重复执行一块语句;else块事实上是多余的,因为你可以把其中的语句放在同一块(与while
相同)中,跟在while
语句之后
3 for..in
在一序列的对象上 递归 即逐一使用队列中的每个项目;
内建的range
函数:
range
返回一个序列的数。这个序列从第一个数开始到第二个数为止- 默认地,
range
的步长为1。如果我们为range
提供第三个数,那么它将成为步长。例如,range(1,5,2)
给出[1,3]
。 - range 向上 延伸到第二个数,即它不包含第二个数
4 break语句:
如果你从for
或while
循环中 终止 ,任何对应的循环else
块将不执行
5 continue语句:
continue
语句被用来告诉Python跳过当前循环块中的剩余语句,然后 继续 进行下一轮循环
第7章 函数
1 DocStrings:文档字符串
- 在函数的第一个逻辑行的字符串是这个函数的 文档字符串,也适用于模块和类
- 形式:一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述
- 可以使用
__doc__
(注意双下划线)调用函数的文档字符创属性。例如:printMax.__doc__
- 它所做的只是抓取函数的
__doc__
属性,然后展示
第8章 模块
1 模块:基本上就是一个包含了所有你定义的函数和变量的文件。为了在其他程序中重用模块,模块的文件名必须以.py
为扩展名。
2 sys
模块:
- 包含了与Python解释器和它的环境有关的函数。
- Python执行
import sys
语句的时候,它在sys.path
变量中所列目录中寻找sys.py
模块。如果找到了这个文件,这个模块的主块中的语句将被运行,然后这个模块将能够被你 使用 sys
模块中的argv
变量通过使用点号指明:sys.argv ;
sys.argv
变量是一个字符串的 列表
3 字节编译的.pyc文件:与平台无关;加速模块的导入;
4 假如我们只想在程序本身被使用的时候运行主块,而在它被别的模块输入的时候不运行主块,我们该怎么做呢?这可以通过模块的__name__属性完成;
每个Python模块都有它的__name__
,如果它是'__main__'
,这说明这个模块被用户单独运行。
5 dir()函数:列出模块定义的标识符。标识符有函数、类和变量;当你为dir()
提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名 称列表。
第9章 数据结构
1 列表:内建,有序;可变;逗号;方括号; 列表的sort方法?
2 元祖:内建,不可变,逗号,圆括号;
- 含有0个或1个项目的元组:一个空的元组由一对空的圆括号组成,如
myempty = ()
。然而,含有单个元素的元组就不那么简单了。你必须在第一个(唯一一个)项目后跟一个逗号,这样Python才能区分元组和表达式中一个带圆括号的对象。即如果你想要的是一个包含项目2
的元组的时候,你应该指明singleton = (2 , )
- 元组最通常的用法是用在打印语句中
3 字典
- 逗号,冒号,花括号,无序
- 字典是
dict
类的实例/对象
4 序列
- 列表、元组和字符串都是序列
- 两个主要特点是索引操作符和切片操作
第10章:实战
第11章 面向对象的编程
1 self :类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self
。原理:Python如何给self
赋值以及为何你不需要给它赋值。举一个例子会使此变得清晰。假如你有一个类称为MyClass
和这个类的一个实例MyObject
。当你调用这个对象的方法MyObject.method(arg1, arg2)
的时候,这会由Python自动转为MyClass.method(MyObject, arg1, arg2)
——这就是self
的原理了。如果你有一个不需要参数的方法,你还是得给这个方法定义一个self
参数
2 __init__方法:
__init__
方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的 初始化 。注意,这个名称的开始和结尾都是双下划线。
3 变量:
-
类的变量 由一个类的所有对象(实例)共享使用。只有一个类变量的拷贝,所以当某个对象对类的变量做了改动的时候,这个改动会反映到所有其他的实例上。
- 对象的变量 由类的每个对象/实例拥有。因此每个对象有自己对这个域的一份拷贝,即它们不是共享的,在同一个类的不同实例中,虽然对象的变量有相同的名称,但是是互不相关的。
- Python中所有的类成员(包括数据成员)都是 公共的 ,所有的方法都是 有效的;只有一个例外:如果你使用的数据成员名称以 双下划线前缀 比如
__privatevar
,Python的名称管理体系会有效地把它作为私有变量。
4 继承:继承完全可以理解成类之间的 类型和子类型 关系;如果在继承元组中列了一个以上的类,那么它就被称作 多重继承。
第12章 输入/输出
1 常用场景一:程序与用户交互 ;常用场景二:处理文件。创建、读和写文件的能力是许多程序所必需的。
2 文件:
你可以通过创建一个file
类的对象来打开一个文件,分别使用file
类的read
、readline
或write
方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用close
方法来告诉Python我们完成了对文件的使用。
3 存储器:
- Python提供一个标准的模块,称为
pickle
。使用它你可以在一个文件中储存任何Python对象,之后你又可以把它完整无缺地取出来。这被称为 持久地 储存对象。 模块cPickle
的功能和pickle
模块完全相同,只不过它是用C语言编写的,因此要快得多(比pickle
快1000倍)。- 存储:为了在文件里储存一个对象,首先以写模式打开一个
file
对象,然后调用储存器模块的dump
函数,把对象储存到打开的文件中 - 取存储:我们使用
pickle
模块的load
函数的返回来取回对象。
第13章 异常
1 处理异常:
使用try..except
语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。
2 引发异常:
使用raise
语句 引发 异常
3 try…finally:在一个try
块下,你可以同时使用except
从句和finally
块。如果你要同时使用它们的话,需要把一个嵌入另外一个。
第14章 Python标准库
1 sys模块:sys
模块包含系统对应的功能。
sys.argv
列表,它包含命令行参数sys.version
字符串提供安装的Python的版本信息sys.version_info
元组提供一个更简单的方法来使程序具备Python版本要求功能sys.stdin
、sys.stdout
和sys.stderr
它们分别对应程序的标准输入、标准输出和标准错误流
2 os模块:包含普遍的操作系统功能。如果你希望你的程序能够与平台无关的话,这个模块是尤为重要的。即它允许一个程序在编写后不需要任何改动,也不会发生任何问题,就可以在Linux和Windows下运行
-
os.name
字符串指示你正在使用的平台。比如对于Windows,它是'nt'
,而对于Linux/Unix用户,它是'posix'
。 -
os.getcwd()
函数得到当前工作目录,即当前Python脚本工作的目录路径。 -
os.getenv()
和os.putenv()
函数分别用来读取和设置环境变量。 -
os.listdir()
返回指定目录下的所有文件和目录名。 -
os.remove()
函数用来删除一个文件。 -
os.system()
函数用来运行shell命令。 -
os.linesep
字符串给出当前平台使用的行终止符。例如,Windows使用'\r\n'
,Linux使用'\n'
而Mac使用'\r'
。 -
os.path.split()
函数返回一个路径的目录名和文件名。>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt') -
os.path.isfile()
和os.path.isdir()
函数分别检验给出的路径是一个文件还是目录。类似地,os.path.existe()
函数用来检验给出的路径是否真地存在。
第15章 更多Python的内容
1 特殊的方法:一般说来,特殊的方法都被用来模仿某个行为。
名称 | 说明 |
---|---|
__init__(self,...) | 这个方法在新建对象恰好要被返回使用之前被调用。 |
__del__(self) | 恰好在对象要被删除之前调用。 |
__str__(self) | 在我们对对象使用print 语句或是使用str() 的时候调用。 |
__lt__(self,other) | 当使用 小于 运算符(<)的时候调用。类似地,对于所有的运算符(+,>等等)都有特殊的方法。 |
__getitem__(self,key) | 使用x[key] 索引操作符的时候调用。 |
__len__(self) | 对序列对象使用内建的len() 函数的时候调用。 |
2 单语句块:每一个语句块是通过它的缩进层次与其它块区分开来的。然而这在大多数情况下是正确的,但是并非100%的准确。如果你的语句块只包含一句语句,那么你可以在条件语句或循环语句的同一行指明它,例如
>>> flag = True
>>> if flag: print
'Yes'
...
Yes
3 列表综合:
#!/usr/bin/python
# Filename:
list_comprehension.py
listone = [
2
,
3
,
4
]
listtwo = [
2
*i
for
i
in
listone
if
i >
2
]
print
listtwo
4 函数中接收元祖和列表:
当要使函数接收元组或字典形式的参数的时候,有一种特殊的方法,它分别使用*和**前缀。这种方法在函数需要获取可变数量的参数的时候特别有用。
5 lambda形式:
lambda
语句被用来创建新的函数对象,并且在运行时返回它们。
6 exec和eval语句:
exec
语句用来执行储存在字符串或文件中的Python语句eval
语句用来计算存储在字符串中的有效Python表达式
7 assert语句:
assert
语句用来声明某个条件是真的。例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert
语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError
。
8 repr函数:repr
函数用来取得对象的规范字符串表示,repr
函数和反引号用来获取对象的可打印的表示形式。可以通过定义类的__repr__
方法来控制你的对象在被repr
函数调用的时候返回的内容。
第16章 接下来学习什么
1 图形软件
2 探索更多内容:
-
Python标准库是一个丰富的库,在大多数时候,你可以在这个库中找到你所需的东西。这被称为Python的“功能齐全”理念。我强烈建议你在开始开发大型Python程序之前浏览一下Python标准文档。
-
Python.org——Python编程语言的官方主页。你可以在上面找到Python语言和解释器的最新版本。另外还有各种邮件列表活跃地讨论Python的各方面内容。
-
comp.lang.python是讨论Python语言的世界性新闻组。你可以把你的疑惑和询问贴在这个新闻组上。可以使用Google群在线访问这个新闻组,或加入作为新闻组镜像的邮件列表。
-
《Python实用大全》是一个极有价值的秘诀和技巧集合,它帮助你解决某些使用Python的问题。这是每个Python用户必读的一本书。
-
《迷人的Python》是David Mertz编著的一系列优秀的Python相关文章。
-
《深入理解Python》是给有经验的Python程序员的一本很优秀的书。如果你已经完整地阅读了本书,那么我强烈建议你接下来阅读《深入理解Python》。它覆盖了包括XML处理、单元测试和功能性编程在内的广泛的主题。
-
Jython是用Java语言实现的Python解释器。这意味着你可以用Python语言编写程序而同时使用Java库!Jython是一个稳定成熟的软件。如果你也是一个Java程序员,我强烈建议你尝试一下Jython。
-
IronPython是用C#语言实现的Python解释器,可以运行在.NET、Mono和DotGNU平台上。这意味着你可以用Python语言编写程序而使用.NET库以及其他由这三种平台提供的库!IronPython还只是一个前期alpha测试软件,现在还只适合用来进行试验。Jim Hugunin,IronPython的开发者,已经加入了微软公司,将在将来全力开发一个完整版本的IronPython。
-
Lython是Python语言的Lisp前段。它类似于普通的Lisp语言,会被直接编译为Python字节码,这意味着它能与我们普通的Python代码协同工作。
-
另外还有很多很多的Python资源。其中比较有趣的有Daily Python-URL!,它使你保持与Python的最新进展同步。另外还有Vaults of Parnassus、ONLamp.com Python DevCenter、dirtSimple.org、Python Notes等等。