简明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语句在结尾处包含一个冒号
  • elifelse从句都必须在逻辑行结尾处有一个冒号
  • elifelse部分是可选的

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语句:

如果你从forwhile循环中 终止 ,任何对应的循环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类的readreadlinewrite方法来恰当地读写文件。对文件的读写能力依赖于你在打开文件时指定的模式。最后,当你完成对文件的操作的时候,你调用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.stdinsys.stdoutsys.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 ParnassusONLamp.com Python DevCenterdirtSimple.orgPython Notes等等。

 

 

posted @ 2018-01-02 17:17  Cranberries  阅读(217)  评论(0编辑  收藏  举报