a bit of python github_GitHub - Everfighting/A-Byte-of-Python: A Byte of Python 书中代码和笔记...

《简明Python教程》这本书是初级的Python入门教材,初级内容基本覆盖,对高级内容没有做深入纠结。适合刚接触Python的新手,行文比较简洁轻松,读起来也比较顺畅。

下面是我根据各个章节的内容进行的简要归纳,相关代码都已按照章节顺序进行命名。

基本介绍

Python特点:

简单、易学、免费、开源、可移植性好、面向对象、可扩展、丰富的库等等。

如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。C,C++为编译型语言,变异后看不到源代码。

编辑器的选择:

强烈建议你学习使用VIM或Emacs,从长远看来它们对你是极其有帮助的。

如何退出Python提示符:

如果你使用的是Linux/BSD shell,那么按Ctrl-d退出提示符。

如果是在Windows命令行中,则按Ctrl-z再按Enter。

基本概念

'#'符号右面的内容都是注释

特殊形式的注释:

源文件的头两个字符是#!,后面跟着一个程序,告诉你的Linux/Unix系统执行你的程序的时候,它应该运行哪个解释器。

可执行的Python程序:

在linux下,chmod命令用来改变文件的模式 ,给系统中所有用户这个源文件的执行许可。然后直接通过指定源文件的位置来执行程序。我们使用./来指示程序位于当前目录。

$ chmod a+x helloworld.py

$ ./helloworld.py

Hello World

设置环境变量的作用:

能让程序在各个位置运行。运行时,系统会查找列在PATH环境变量中的各个目录,然后运行那个程序。

显示PATH变量

$ echo $PATH

获取帮助

运行help(str)——这会显示str类的帮助。str类用于保存你的程序使用的各种文本(字符串),按q退出帮助。

三引号

使用三引号('''或""")利用三引号,你可以指示一个多行的字符串。你可以在三引号中自由的使用单引号和双引号。

特殊字符

\'来指示单引号

\\来指示反斜杠

行末的单独 \ 表示字符串在下一行继续

不需转义: 字符串加上前缀r或R来指定

字符串是不可变对象

这意味着一旦你创造了一个字符串,你就不能再改变它了。

标识符的命名

标识符的第一个字符必须是字母表中的字母(大写或小写)或者一个下划线(‘_’)。

标识符名称的其他部分可以由字母(大写或小写)、下划线(‘ _ ’)或数字组成。

标识符名称是对大小写敏感的。例如,myname和myName不是一个标识符。

有效 标识符名称的例子有i、__my_name、name_23和a1b2_c3。

无效 标识符名称的例子有2things、this is spaced out和my-name。

逻辑行与物理行

建议你坚持在每个物理行只写一句逻辑行。仅仅当逻辑行太长的时候,在多于一个物理行写一个逻辑行。这些都是为了尽可能避免使用分号,从而让代码更加易读。

如何缩进

不要混合使用制表符和空格来缩进,因为这在跨越不同的平台的时候,无法正常工作。我强烈建议你在每个缩进层次使用单个制表符或两个或四个空格。

运算符和表达式

严格来说,逻辑操作符的操作数应该为布尔表达式,但Python对此处理的比较灵活,即使操作数是数字,解释器也把他们当成“表达式”。

非0的数字的布尔值为1,0的布尔值是0。空字符串为假,非空字符串为真。非零的数为真。

and操作符:

只要左边的表达式为真,整个表达式返回的值是右边表达式的值。否则,返回左边表达式的值。

or操作符:

只要两边的表达式都为真,整个表达式的结果是左边表达式的值;如果是一真一假,返回真值表达式的值。特别注意的是空值和0的情况,这时候返回的是右边的0或空值.

Python中代表False的值有:

布尔型,False表示False,其他为True (false则不同)

整数和浮点数,0表示False,其他为True

字符串和类字符串类型(包括bytes和unicode),空字符串表示False,其他为True(注:'0'字符串零并不是False)

序列类型(包括tuple,list,dict,set等),空表示False,非空表示True

None永远表示False

print '' or 5 or 0

5

print 5 and 4

4

位运算:

左移: 3<<1

0001(十进制1)

<< 3(左移3位)

= 1000(十进制8)

右移: 10>>2

1010(十进制10)

>> 2(右移2位)

= 0010(十进制2)

位与: 5&3

0101(十进制5)

AND 0011(十进制3)

= 0001(十进制1)

位或: 5|3

0101(十进制5)

OR 0011(十进制3)

= 0111(十进制7)

位异或: 2^10

0010(十进制2)

XOR 1010 (十进制10)

= 1000 (十进制8)

运算符优先级:

运算符 描述

** 指数 (最高优先级)

~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)

* / % // 乘,除,取模和取整除

+ - 加法减法

>> << 右移,左移运算符

& 位 'AND'

^ | 位运算符

<= < > >= 比较运算符

<> == != 等于运算符

= %= /= //= -= += *= **= 赋值运算符

is is not 身份运算符

in not in 成员运算符

not or and 逻辑运算符

控制流

在Python中有三种控制流语句——if、for和while。

break VS continue

break语句是用来终止循环语句的,即哪怕循环条件没有称为False或序列还没有被完全递归,也停止执行循环语句。

continue语句被用来告诉Python跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

注:如果你从for或while循环中终止,任何对应的循环else块将不执行。

函数

形参与实参

参数在函数定义的圆括号对内指定,用逗号分割。当我们调用函数的时候,我们以同样的方式提供值。函数中的参数名称为形参,提供给函数调用的值称为实参。

局部变量

当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是局部的。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。

global语句

如果你想要为一个定义在函数外的变量赋值,那么你就得告诉Python这个变量名不是局部的,而是全局的,使用global语句完成这一功能。没有global语句,是不可能为定义在函数外的变量赋值的。

使用默认参数值

只有在形参表末尾的那些参数可以有默认参数值,即你不能在声明函数形参的时候,先声明有默认值的形参而后声明没有默认值的形参。

赋给形参的值是根据位置而赋值的。例如,def func(a, b=5)是有效的,但是def func(a=5, b)是无效的。

关键参数

如果你的某个函数有许多参数,而你只想指定其中的一部分,那么你可以通过命名来为这些参数赋值——这被称作关键参数——我们使用名字(关键字)而不是位置(我们前面所一直使用的方法)来给函数指定实参。如: func(c=50, a=100)

return语句

return语句用来从一个函数返回即跳出函数,从函数返回一个值 。

DocStrings

Python有一个很奇妙的特性,称为文档字符串,它通常被简称为docstrings。它帮助你的程序文档更加简单易懂,你应该尽量使用它。

文档字符串的惯例是一个多行字符串,它的首行以大写字母开始,句号结尾。第二行是空行,从第三行开始是详细的描述。

如果你已经在Python中使用过help(),那么你已经看到过DocStings的使用了!它所做的只是抓取函数的__doc__属性,然后整洁地展示给你。

模块

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.exists()

检验给出的路径是否真地存在。

from..import语句

如果你想要输入所有sys模块使用的名字,那么你可以使用from sys import *语句。(避免使用)

模块的__name__

每个模块都有一个名称,在模块中可以通过语句来找出模块的名称。这在一个场合特别有用——就如前面所提到的,当一个模块被第一次输入的时候,这个模块的主块将被运行。

dir()函数

你可以使用内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。当你为dir()提供一个模块名的时候,它返回模块定义的名称列表。如果不提供参数,它返回当前模块中定义的名称列表。

del

这个语句在运行后被用来删除一个变量/名称。在例子del a中,你将无法再使用变量a——它就好像从来没有存在过一样。

数据结构

字符串

split函数的另外一个参数是规定作为分隔符的字符串。分隔符不显示在列表中。

>>> string.split(song, 'ai')

['The r', 'n in Sp', 'n...']

函数jion的功能和split正好相反,它是将列表连接成字符串。默认的分

隔符是空格。

>>> list = ['The', 'rain', 'in', 'Spain...']

>>> string.join(list)

'The rain in Spain...'

列表:

len(list)、list.append、list.sort、del list[0]

元组:

元组和字符串一样是不可变的,即你不能修改元组。元组通过圆括号中用逗号分割的项目定义。

字典:

它们的键/值对用冒号分割,而各个对用逗号分割,所有这些都包括在花括号中。

赋值:d[key]= value

删除:del d[key]

迭代出每一项:for name,address in ab.items()

序列:列表、元组、字符串都属于序列。

序列的两个特点:索引操作符和切片操作符。

引用:

当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!

字符串方法:

in操作符用来检验一个给定字符串是否为另一个字符串的一部分。

find方法:

用来找出给定字符串在另一个字符串中的位置,或者返回-1以表示找不到子字符串。

append:

在列表的尾部追加元素,参数是插入元素的值。方法extend合并两个列表为一个。

面向对象编程

self:类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

__init__方法: __init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化 。

类与对象的方法:类的变量 由一个类的所有对象(实例)共享使用。对象的变量 由类的每个对象/实例拥有。

继承:基本类的__init__方法专门使用self变量调用。

类与对象

类使用class关键字创建。类的域和方法被列在一个缩进块中。

self

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称,但是在调用这个方法的时候你不为这个参数赋值,

Python会提供这个值。这个特别的变量指对象本身,按照惯例它的名称是self。

类的使用

我们使用class语句后跟类名,创建了一个新的类。这后面跟着一个缩进的语句块形成类体。

在这个例子中,我们使用了一个空白块,它由pass语句表示。接下来,我们使用类名后跟一对圆括号来创建一个对象/实例(实例化)。

__init__方法

__init__方法在类的一个对象被建立时,马上运行。这个方法可以用来对你的对象做一些你希望的初始化 。

注意,这个名称的开始和结尾都是双下划线。

__del__方法

__del__它在对象消逝的时候被调用。对象消逝即对象不再被使用,它所占用的内存将返回给系统作它用。

输入输出

模式可以为读模式'r'、写模式'w'或追加模式'a'。

使用file类的write方法来写文件,最后我们用close关闭这个文件。

使用readline方法读文件的每一行。

异常

处理异常

我们可以使用try..except语句来处理异常。我们把通常的语句放在try-块中,而把我们的错误处理语句放在except-块中。

引发异常

你可以使用raise语句 引发 异常。你还得指明错误/异常的名称和伴随异常 触发的 异常对象。

你可以引发的错误或异常应该分别是一个Error或Exception类的直接或间接导出类。

try...finally

异常发生后有语句仍然执行。

python标准库

sys模块

sys模块包含了与Python解释器和它的环境有关的函数。

sys.argv变量是一个字符串的列表。特别地,sys.argv包含了命令行参数 的列表,即使用命令行传递给你的程序的参数。 如:sys.argv[0]、sys.argv[1]

.pyc文件: 字节编译的文件 ,这些文件以.pyc作为扩展名。

from..import语句: from sys import argv语句。

模块的__name__:获取模块的名称。__main__为当前程序。

制造你自己的模块:记住这个模块应该被放置在我们输入它的程序的同一个目录中,或者在sys.path所列目录之一。

dir():内建的dir函数来列出模块定义的标识符。标识符有函数、类和变量。

更多python内容

表生成式、单语句块、lambda语句

exec语句用来执行储存在字符串或文件中的Python语句

>>> exec 'print "Hello World"

eval语句用来计算存储在字符串中的有效Python表达式。

>>> eval('2*3')

assert语句用来声明某个条件是真的。当assert语句失败的时候,会引发一个AssertionError。

assert语句

assert语句用来声明某个条件是真的。

例如,如果你非常确信某个你使用的列表中至少有一个元素,而你想要检验这一点,并且在它非真的时候引发一个错误,那么assert语句是应用在这种情形下的理想语句。当assert语句失败的时候,会引发一个AssertionError。

this is a book about python. it was written by Swaroop C H.its name is "a byte of python". Table of Contents Preface Who This Book Is For History Lesson Status of the book Official Website License Terms Using the interpreter prompt Choosing an Editor Using a Source File Output How It Works Executable Python programs Getting Help Summary 4. The Basics Literal Constants Numbers Strings Variables Identifier Naming Data Types Objects Output How It Works Logical and Physical Lines Indentation Summary 5. Operators and Expressions Introduction Operators Operator Precedence Order of Evaluation Associativity Expressions Using Expressions Summary 6. Control Flow Introduction The if statement ivUsing the if statement How It Works The while statement Using the while statement The for loop Using the for statement Using the break statement The continue statement Using the continue statement Summary 7. Functions Introduction Defining a Function Function Parameters Using Function Parameters Local Variables Using Local Variables Using the global statement Default Argument Values Using Default Argument Values Keyword Arguments Using Keyword Arguments The return statement Using the literal statement DocStrings Using DocStrings Summary 8. Modules Introduction Using the sys module Byte-compiled .pyc files The from..import statement A module's __name__ Using a module's __name__ Making your own Modules Creating your own Modules from..import The dir() function Using the dir function Summary 9. Data Structures Introduction List Quick introduction to Objects and Classes Using Lists Tuple Using Tuples Tuples and the print statement Dictionary Using Dictionaries Sequences Using Sequences References Objects and References More about Strings String Methods Summary 10. Problem Solving - Writing a Python Script The Problem The Solution First Version Second Version Third Version Fourth Version More Refinements The Software Development Process Summary 11. Object-Oriented Programming Introduction The self Classes Creating a Class object Methods Using Object Methds The __init__ method Using the __init__ method Class and Object Variables Using Class and Object Variables Inheritance Using Inheritance Summary 12. Input/Output Files Using file Pickle Pickling and Unpickling Summary 13. Exceptions Errors Try..Except Handling Exceptions Raising Exceptions How To Raise Exceptions Try..Finally Using Finally Summary 14. The Python Standard Library Introduction The sys module Command Line Arguments More sys The os module Summary 15. More Python Special Methods Single Statement Blocks List Comprehension Using List Comprehensions Receiving Tuples and Lists in Functions Lambda Forms Using Lambda Forms The exec and eval statements The assert statement The repr function Summary 16. What Next? Graphical Software Summary of GUI Tools Explore More Summary A. Free/Libré and Open Source Software (FLOSS) B. About Colophon About the Author C. Revision History Timestamp
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值