python笔记

python运行3

py -2运行2

Python2+学习:

一、 简介

Python 是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHPPerl语言。

Python 是交互式语言: 这意味着,您可以在一个Python提示符,直接互动执行写你的程序。

Python 是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python 是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏。

Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。

Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。

特点:

1.易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。

2.易于阅读:Python代码定义的更清晰。

3.易于维护:Python的成功在于它的源代码是相当容易维护的。

4.一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIXWindowsMacintosh兼容很好。

5.互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。

6.可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。

7.可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用CC++完成那部分程序,然后从你的Python程序中调用。

8.数据库:Python提供所有主要的商业数据库的接口。

9.GUI编程:Python支持GUI可以创建和移植到许多系统调用。

10.可嵌入你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

二、下载与环境配置

Python下载

Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:

Python官网:https://www.python.org/

你可以在以下链接中下载 Python 的文档,你可以下载 HTMLPDF PostScript 等格式的文档。

Python文档下载地址:https://www.python.org/doc/

Linux和Unix

以下为在Unix & Linux平台上安装 Python 的简单步骤:

·       打开WEB浏览器访问https://www.python.org/downloads/source/

·       选择适用于Unix/Linux的源码压缩包。

·       下载及解压压缩包。

·       如果你需要自定义一些选项修改Modules/Setup

·       执行 ./configure 脚本

·       make

·       make install

执行以上操作后,Python会安装在 /usr/local/bin 目录中,Python库安装在/usr/local/lib/pythonXXXX为你使用的Python的版本号。

Windows

以下为在 Window 平台上安装 Python 的简单步骤:

·       打开 WEB 浏览器访问https://www.python.org/downloads/windows/

·       在下载列表中选择Window平台安装包,包格式为:python-XYZ.msi 文件 XYZ 为你要安装的版本号。

·       要使用安装程序 python-XYZ.msi, Windows系统必须支持Microsoft Installer 2.0搭配使用。只要保存安装文件到本地计算机,然后运行它,看看你的机器支持MSIWindows XP和更高版本已经有MSI,很多老机器也可以安装MSI

·       下载后,双击下载包,进入Python安装向导,安装非常简单,你只需要使用默认的设置一直点击"下一步"直到安装完成即可。

Unix/Linux 设置环境变量

·        csh shell: 输入 

setenv PATH "$PATH:/usr/local/bin/python"

, 按下"Enter"

·        bash shell (Linux): 输入 

export PATH="$PATH:/usr/local/bin/python"

,按下"Enter"

·        sh 或者 ksh shell: 输入 

PATH="$PATH:/usr/local/bin/python"

, 按下"Enter"

注意/usr/local/bin/python Python 的安装目录。

Windows 设置环境变量

在环境变量中添加Python目录:

在命令提示框中(cmd) : 输入 

path=%path%;C:\Python 

按下"Enter"

注意C:\Python Python的安装目录。

也可以通过以下方式设置:

·       右键点击"计算机",然后点击"属性"

·       然后点击"高级系统设置"

·       选择"系统变量"窗口下面的"Path",双击即可!

·       然后在"Path"行,添加python安装路径即可(我的D:\Python32),所以在后面,添加该路径即可。 ps:记住,路径直接用分号""隔开!

·       最后设置成功以后,在cmd命令行,输入命令"python",就可以有相关显示。

Python 环境变量

下面几个重要的环境变量,它应用于Python

变量名

描述

PYTHONPATH

PYTHONPATHPython搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。

PYTHONSTARTUP

Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此变量指定的文件中的代码。

PYTHONCASEOK

加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.

PYTHONHOME

另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUPPYTHONPATH目录中,使得两个模块库更容易切换。

运行:

1、交互式解释器:

以下为Python命令行参数:可以-h查看各个参数基本信息

选项

描述

-d

在解析时显示调试信息

-O

生成优化代码 ( .pyo 文件 )

-S

启动时不引入查找Python路径的位置

-V

输出Python版本号

-X

1.6版本之后基于内建的异常(仅仅用于字符串)已过时。

-c cmd

执行 Python 脚本,并将运行结果作为 cmd 字符串。

file

在给定的python文件执行python脚本。

 

2、命令行脚本

3、集成开发环境(IDEIntegratedDevelopment Environment: PyCharm

PyCharm 下载地址https://www.jetbrains.com/pycharm/download/

三、 基础语法

1. Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字。在文件开头加入 # -*-coding: UTF-8 -*- 或者 #coding=utf-8。然后在字符串前面加u或者print ‘str’.decode(“utf8”)

2. 标识符:

所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头,区分大小写的

以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入

From xxx import *import xxx有区别!,后者的变量引用还要xxx.kk,前者直接kk

以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

Python 可以同一行显示多条语句,方法是用分号 ; 分开,普通语句尾部不需要“;”

3. 保留字:所有 Python 的关键字只包含小写字母。

and

exec

not

assert

finally

or

break

for

pass

class

from

print

continue

global

raise

def

if

return

del

import

try

elif

in

while

else

is

with

except

lambda

yield

4.缩进与代码块

不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

使用的缩进方式要一致,统一是 tab 键缩进或者空格缩进。

同一条语句要多行写,可以在行尾用斜杠( \

 [], {} () 括号内的就不需要斜杠

5.引号与注释:

可以使用引号' )、双引号" )、三引号'''  """ )来表示字符串,引号的开始与结束必须的相同类型的。

三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串。

单行注释用#开头,多行用三个单引号(''')或三个双引号(""")

6.空行:规范,便于维护

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始

类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

7.raw_input

raw_input(“显示提示语:”) 

用户输入字符串,按回车,会把字符串输出,\会输出\\

8.print

默认输出是换行结尾的,如果要实现不换行需要在变量末尾加上逗号 ,

9.代码组

缩进相同的一组连续语句构成一个代码块,我们称之代码组。

ifwhiledefclass这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。

我们将首行及后面的代码组称为一个子句(clause)

10.pass

pass是空语句,是为了保持程序结构的完整性,不做任何事情,一般用做占位语句。

比如C++if(xxx) {;}差不多

四、变量类型

变量赋值不需要类型声明,初始化时根据值类型创建相应内存大小的空间。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

多变量赋值:a=b=c=1   a,b,c=1,2.3,”kingson”

标准数据类型:NumberStringListTupleDictionary

Number

Number存储数值,是不可改变的数据类型,改变数字数据类型会分配一个新的对象。

创建并且初始化变量时,Number对象创建

del删除对象引用,del var1,var2

四种数值类型:int,long,float,complex

longLl结尾,复数:a+bj或者complexa,bab都是float

String

       数字、字母、下划线组成,都可以。

索引方式1从左到右索引默认0开始的,最大范围是字符串长度少1

索引方式2:从右到左索引默认-1开始的,最大范围是字符串开头

[0] [2,5] [2:] [-3,-1] [:6]

Str[0,3]返回一个String对象,包下(左)界不包上界

+连接,*重复。Egstr*2

Tuplelist

       元组用"()"标识。但是元组不能二次赋值,相当于只读列表。

List“[]”标识。可二次赋值

内部元素用逗号隔开,可不同类型共存,索引和string一样,可用*+

字典:

       “{}”标识,无序的对象集合,通过键存取,类似C++mapeg

dict = {}

dict['one'] = "This is one"

dict[2] = "This is two"

dict[“2”]的键是’2’,和’2’一样,和2不一样

tinydict = {'name': 'john','code':6734, 'dept': 'sales'}# 初始化

printtinydict# 输出完整的字典,顺序是存的顺序

printtinydict.keys()# 输出所有键

printtinydict.values()# 输出所有值

数据类型转换

 

 

函数

描述

int(x [,base])

x转换为一个整数

long(x [,base] )

x转换为一个长整数

float(x)

x转换到一个浮点数

complex(real [,imag])

创建一个复数

str(x)

将对象 x 转换为字符串

repr(x)

将对象 x 转换为表达式字符串

eval(str)

用来计算在字符串中的有效Python表达式,并返回一个对象

tuple(s)

将序列 s 转换为一个元组

list(s)

将序列 s 转换为一个列表

set(s)

转换为可变集合

dict(d)

创建一个字典。d 必须是一个序列 (key,value)元组。

frozenset(s)

转换为不可变集合

chr(x)

将一个整数转换为一个字符

unichr(x)

将一个整数转换为Unicode字符

ord(x)

将一个字符转换为它的整数值

hex(x)

将一个整数转换为一个十六进制字符串

oct(x)

将一个整数转换为一个八进制字符串

五、运算符

+ - * / %C++一样,一intfloatfloat运算

**x**yxy次方

//:返回商的整数部分,两个整数相除则效果一样。

> < != >= <= ==C++一样, <>!=一样

+=  -=  %= *=  /=  **=  //=

按位运算:与& | 异或^ 取反~ 移位<< >>

逻辑运算:and or  not 没有&& || !

 成员运算符:in   notin

是否引用同一个存储单元:is    isnot注意和==区分

id(var)返回变量的地址

优先级:指数> 一元>乘除模>加减>左右移>&>^ | >比较>(不)等于>赋值系列>is>in>逻辑

六、条件

if判断条件1:
    执行语句1……
elif判断条件2:
    执行语句2……
elif判断条件3:
    执行语句3……
else:
    执行语句4……

if(var == 100) : print"变量 var 的值为100" #一句语句

每个条件下的执行语句可以是多条,同缩进即可。

不支持switch

七.循环语句

while

         while判断条件:
    执行语句……

while(flag): print'Given flag is really true!'#简单语句组

 

breakcontinue在语句组中相对缩进一格,eg

i = 1

whilei < 10:

i += 1

ifi%2 > 0: # 非双数时跳过输出

    continue

printi# 输出双数246810

while … else:在最后一次条件不成立时执行else的语句,break退出的不执行else

for

for iterating_var in sequence:
   statements(s)

可以用索引:forindexinrange(len(fruits)):

len()返回长度nrange()返回0-(n-1)的有序数列

for … else 正常执行完循环才执行else的语句,break这种就不会执行。

嵌套循环,注意缩进对齐

foriterating_varinsequence:

foriterating_varinsequence:

statements(s)

statements(s)

八、 Number

Math,cmath模块

math 模块提供了许多对浮点数的数学运算函数,cmath 模块包含用于复数运算的函数。

导入包:import math

查看包内容:dir(math)

数学函数:math.f()或cmath.f()

函数

返回值 ( 描述 )

abs(x)

返回数字的绝对值,如abs(-10) 返回 10

ceil(x)

返回数字的上入整数,如math.ceil(4.1) 返回 5

cmp(x, y)

如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1

exp(x)

返回ex次幂(ex),math.exp(1) 返回2.718281828459045

fabs(x)

返回数字的绝对值,如math.fabs(-10) 返回10.0

floor(x)

返回数字的下舍整数,如math.floor(4.9)返回 4

log(x)

math.log(math.e)返回1.0,math.log(100,10)返回2.0

log10(x)

返回以10为基数的x的对数,如math.log10(100)返回 2.0

max(x1, x2,...)

返回给定参数的最大值,参数可以为序列。

min(x1, x2,...)

返回给定参数的最小值,参数可以为序列。

modf(x)

返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。

pow(x, y)

x**y 运算后的值。

round(x [,n])

返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。

sqrt(x)

返回数字x的平方根

随机数

函数

描述

choice(seq)

从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从09中随机挑选一个整数。

randrange ([start,] stop [,step])

从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1

random()

随机生成下一个实数,它在[0,1)范围内。

seed([x])

改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seedPython会帮你选择seed

shuffle(lst)

将序列的所有元素随机排序

uniform(x, y)

随机生成下一个实数,它在[x,y]范围内。

三角函数

函数

描述

acos(x)

返回x的反余弦弧度值。

asin(x)

返回x的反正弦弧度值。

atan(x)

返回x的反正切弧度值。

atan2(y, x)

返回给定的 X Y 坐标值的反正切值。

cos(x)

返回x的弧度的余弦值。

hypot(x, y)

返回欧几里德范数 sqrt(x*x + y*y)

sin(x)

返回的x弧度的正弦值。

tan(x)

返回x弧度的正切值。

degrees(x)

将弧度转换为角度,degrees(math.pi/2) 返回90.0

radians(x)

将角度转换为弧度

数学常量

常量

描述

pi

数学常量 pi(圆周率,一般以π来表示)

e

数学常量 ee即自然常数(自然常数)。

九、 字符串

l  转义字符:\\\ \’ \” \a \b \e \000 \n \v \t \r \f \oyy \xyy \other

l  u’str’定义一个Unicode字符串

l  R/r:让字符串按字符输出,转义字符不会转化为特定意思。

Eg:print r‘123\n321’ 输出123\n321

l  %:有点类似C的printf格式化输出:print ‘kk %s and %d’ % (‘hello’,123)

   

描述

      %c

 格式化字符及其ASCII

      %s

 格式化字符串

      %d

 格式化整数

      %u

 格式化无符号整型

      %o

 格式化无符号八进制数

      %x

 格式化无符号十六进制数

      %X

 格式化无符号十六进制数(大写)

      %f

 格式化浮点数字,可指定小数点后的精度

      %e

 用科学计数法格式化浮点数

      %E

 作用同%e,用科学计数法格式化浮点数

      %g

 %f和%e的简写

      %G

 %f 和 %E 的简写

      %p

 用十六进制数格式化变量的地址

 

符号

功能

*

定义宽度或者小数点精度

-

用做左对齐

+

在正数前面显示加号( + )

<sp>

在正数前面显示空格

#

在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X')

0

显示的数字前面填充'0'而不是默认的空格

%

'%%'输出一个单一的'%'

(var)

映射变量(字典参数)

m.n.

m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话)

%5d,占5个位(包自己),%.3f,小数点3位

str.format():字符串格式化,用{}代替%

设置指定位置:

eg: "{1} {0} {1}".format("hello", "world")#输出'world hello world'

设置参数:

print("变量1{aa}, 变量2 {xxx}".format(aa="sss", xxx="lll"))#直接设置

 

site = {"key1": "val1", "key2": "val2"} #通过字典的key

print("var1{key1}, var2 {key2}".format(**site))

 

my_list = ['val1', 'val2'] #通过列表

print("网站名:{0[0]}, 地址 {0[1]}".format(my_list))# "0" 是必须,代表传入参数

传入一个类也是相似的,print(“{0.value}”).format(classA)#value是classA成员变量

 

数字

格式

输出

描述

3.1415926

{:.2f}

3.14

保留小数点后两位

3.1415926

{:+.2f}

+3.14

带符号保留小数点后两位

-1

{:+.2f}

-1.00

带符号保留小数点后两位

2.71828

{:.0f}

3

不带小数

5

{:0>2d}

05

数字补零 (填充左边, 宽度为2)

5

{:x<4d}

5xxx

数字补x (填充右边, 宽度为4)

10

{:x<4d}

10xx

数字补x (填充右边, 宽度为4)

1000000

{:,}

1,000,000

以逗号分隔的数字格式

0.25

{:.2%}

25.00%

百分比格式

1000000000

{:.2e}

1.00e+09

指数记法

13

{:10d}

        13

右对齐 (默认, 宽度为10)

13

{:<10d}

13

左对齐 (宽度为10)

13

{:^10d}

    13

中间对齐 (宽度为10)

11

'{:b}'.format(11)

'{:d}'.format(11)

'{:o}'.format(11)

'{:x}'.format(11)

'{:#x}'.format(11)

'{:#X}'.format(11)

1011

11

13

b

0xb

0XB

进制

^<> 分别是居中、左对齐、右对齐,后面带宽度, : 号后面带填充的字符,只能是一个字符,不指定则默认是用空格填充。

+ 表示在正数前显示 +,负数前显示 -  (空格)表示在正数前加空格

bdox 分别是二进制、十进制、八进制、十六进制。{{}}会显示{}

方法

描述

string.capitalize()

把字符串的第一个字符大写

string.center(width)

返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

string.count(str, beg=0, end=len(string))

返回 str string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数

string.decode(encoding='UTF-8', errors='strict')

encoding 指定的编码格式解码 string,如果出错默认报一个 ValueError 除非 errors 'ignore' 'replace'

string.encode(encoding='UTF-8', errors='strict')

encoding 指定的编码格式编码 string,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace'

string.endswith(obj, beg=0, end=len(string))

检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False.

string.expandtabs(tabsize=8)

把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8

string.find(str, beg=0, end=len(string))

检测 str 是否包含在 string 中,如果 beg end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1

string.format()

格式化字符串

string.index(str, beg=0, end=len(string))

find()方法一样,只不过如果str不在 string中会报一个异常.

string.isalnum()

如果 string 至少有一个字符并且所有字符都是字母或数字则返

True,否则返回 False

string.isalpha()

如果 string 至少有一个字符并且所有字符都是字母则返回 True,

否则返回 False

string.isdecimal()

如果 string 只包含十进制数字则返回 True 否则返回 False.

string.isdigit()

如果 string 只包含数字则返回 True 否则返回 False.

string.islower()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

string.isnumeric()

如果 string 中只包含数字字符,则返回 True,否则返回 False

string.isspace()

如果 string 中只包含空格,则返回 True,否则返回 False.

string.istitle()

如果 string 是标题化的( title())则返回 True,否则返回 False

string.isupper()

如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

string.join(seq)

string 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串

string.ljust(width)

返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串

string.lower()

转换 string 中所有大写字符为小写.

string.lstrip()

截掉 string 左边的空格

string.maketrans(intab, outtab])

maketrans() 方法用于创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。

max(str)

返回字符串 str 中最大的字母。

min(str)

返回字符串 str 中最小的字母。

string.partition(str)

有点像 find() split()的结合体, str 出现的第一个位置起, string 3 (string_pre_str,str,string_post_str),如果 string 中不包含str string_pre_str == string.

string.replace(str1, str2,  num=string.count(str1))

string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num .

string.rfind(str, beg=0,end=len(string) )

类似于 find()函数,不过是从右边开始查找.

string.rindex( str, beg=0,end=len(string))

类似于 index(),不过是从右边开始.

string.rjust(width)

返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串

string.rpartition(str)

类似于 partition()函数,不过是从右边开始查找.

string.rstrip()

删除 string 字符串末尾的空格.

string.split(str="", num=string.count(str))

str 为分隔符切片 string,如果 num有指定值,则仅分隔 num 个子字符串

string.splitlines([keepends])

按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends False,不包含换行符,如果为 True,则保留换行符。

string.startswith(obj, beg=0,end=len(string))

检查字符串是否是以 obj 开头,是则返回 True,否则返回 False。如果beg end 指定值,则在指定范围内检查.

string.strip([obj])

string 上执行 lstrip() rstrip()

string.swapcase()

翻转 string 中的大小写

string.title()

返回"标题化" string,就是说所有单词都是以大写开始,其余字母均为小写( istitle())

string.translate(str, del="")

根据 str 给出的表(包含 256 个字符)转换 string 的字符,

要过滤掉的字符放到 del 参数中

string.upper()

转换 string 中的小写字母为大写

string.zfill(width)

返回长度为 width 的字符串,原字符串 string 右对齐,前面填充0

string.isdecimal()

isdecimal()方法检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。

 

十、列表(List)

数据项不需要具有相同的类型

使用下标索引(0开始)来访问列表中的值

可以使用方括号的形式截取字符(类似str的索引)

创建:list = [],添加:list.append('Google'))删除:del list[1](后面的补上)

len(list) ; + ; *; in ; for a in list ; 用法和string一样

l  cmp(list1,list2)max(list) min list(seq)把元组转成列表

l  list.fun():append(x)count(x) extend(seq)在某位拼接另一个序列 index(x) insert(index,x) pop(x=list[-1])缺省最后一个 remove(x)移除第一个等于x的值 reverse() sort([func])

十一、元组

元组中只包含一个元素时,需要在元素后面添加逗号

tup1 =(50,);#不可以(50

元素值是不允许修改的,但我们可以对元组进行连接组合

元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组

l  链表的len* + in等和元组一样

任意无符号的对象,以逗号隔开,默认为元组(t=1,2,3

l  内置函数:cmplen max min tuple

十二、字典

键唯一,值不唯一,d = {key1 : value1, key2 : value2 }

删除:del dict[key1] del dict dict.clear()

键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行

内置函数:cmp len str(dict) type(dict)

序号

函数及描述

1

dict.clear()
删除字典内所有元素

2

dict.copy()
返回一个字典的浅复制

3

dict.fromkeys(seq[, val])
创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值

4

dict.get(key, default=None)
返回指定键的值,如果值不在字典中返回default

5

dict.has_key(key)
如果键在字典dict里返回true,否则返回false

6

dict.items()
以列表返回可遍历的(, ) 元组数组

7

dict.keys()
以列表返回一个字典所有的键

8

dict.setdefault(key, default=None)
get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

9

dict.update(dict2)
把字典dict2的键/值对更新到dict

10

dict.values()
以列表返回字典中的所有值

11

pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。否则,返回default值。

12

popitem()
随机返回并删除字典中的一对键和值。

十三、日期和时间

模块:time calendarimport),单位秒的时间间隔

time.time()返回1970/1/1到现在经历的秒(时间戳)

时间元组,9个数字的元组表示时间:(time.localtime(time.time())返回时间元组,可不写time.time()参数)

序号

属性

0

tm_year

2008

1

tm_mon

1 12

2

tm_mday

1 31

3

tm_hour

0 23

4

tm_min

0 59

5

tm_sec

0 61 (6061 是闰秒)

6

tm_wday

06 (0是周一)

7

tm_yday

1 366(儒略历)

8

tm_isdst

-1, 0, 1, -1是决定是否为夏令时的旗帜

一种默认的格式化时间

localtime = time.asctime( time.localtime(time.time()))

输出

ThuApr  710:05:212016

也可以自定义格式化:

time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

%y 两位数的年份表示(00-99

%Y 四位数的年份表示(000-9999

%m 月份(01-12

%d 月内中的一天(0-31

%H 24小时制小时数(0-23

%I 12小时制小时数(01-12

%M 分钟数(00=59

%S 秒(00-59

%a 本地简化星期名称

%A 本地完整星期名称

%b 本地简化的月份名称

%B 本地完整的月份名称

%c 本地相应的日期表示和时间表示

%j 年内的一天(001-366

%p 本地A.M.P.M.的等价符

%U 一年中的星期数(00-53)星期天为星期的开始

%w 星期(0-6),星期天为星期的开始

%W 一年中的星期数(00-53)星期一为星期的开始

%x 本地相应的日期表示

%X 本地相应的时间表示

%Z 当前时区的名称

%% %号本身

获取某个月日历:

cal = calendar.month(2016,1)#直接输出print cal

序号

函数及描述

1

time.altzone
返回格林威治西部的夏令时地区的偏移秒数。如果该地区在格林威治东部会返回负值(如西欧,包括英国)。对夏令时启用地区才能使用。

2

time.asctime([tupletime])
接受时间元组并返回一个可读的形式为"Tue Dec 11 18:07:14 2008"20081211 周二180714秒)的24个字符的字符串。

3

time.clock( )
用以浮点数计算的秒数返回当前的CPU时间。用来衡量不同程序的耗时,比time.time()更有用。

4

time.ctime([secs])
作用相当于asctime(localtime(secs)),未给参数相当于asctime()

5

time.gmtime([secs])
接收时间戳(1970纪元后经过的浮点秒数)并返回格林威治天文时间下的时间元组t。注:t.tm_isdst始终为0

6

time.localtime([secs])
接收时间戳(1970纪元后经过的浮点秒数)并返回当地时间下的时间元组tt.tm_isdst可取01,取决于当地当时是不是夏令时)。

7

time.mktime(tupletime)
接受时间元组并返回时间戳(1970纪元后经过的浮点秒数)。

8

time.sleep(secs)
推迟调用线程的运行,secs指秒数。

9

time.strftime(fmt[,tupletime])
接收以时间元组,并返回以可读字符串表示的当地时间,格式由fmt决定。

10

time.strptime(str,fmt='%a %b %d %H:%M:%S %Y')
根据fmt的格式把一个时间字符串解析为时间元组。

11

time.time( )
返回当前时间的时间戳(1970纪元后经过的浮点秒数)。

12

time.tzset()
根据环境变量TZ重新初始化时间相关设置。

序号

属性及描述

1

time.timezone
属性time.timezone是当地时区(未启动夏令时)距离格林威治的偏移秒数(>0,美洲;<=0大部分欧洲,亚洲,非洲)。

2

time.tzname
属性time.tzname包含一对根据情况的不同而不同的字符串,分别是带夏令时的本地时区名称,和不带的。

Calendar中星期一是默认的每周第一天,星期天是默认的最后一天。更改设置需调用calendar.setfirstweekday()函数

其他模块还有datetime,pytz,dateutil

序号

函数及描述

1

calendar.calendar(year,w=2,l=1,c=6)
返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c每日宽度间隔为w字符。每行长度为21* W+18+2* Cl是每星期行数。

2

calendar.firstweekday( )
返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。

3

calendar.isleap(year)
是闰年返回True,否则为false

4

calendar.leapdays(y1,y2)
返回在Y1Y2两年之间的闰年总数。

5

calendar.month(year,month,w=2,l=1)
返回一个多行字符串格式的yearmonth月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6l是每星期的行数。

6

calendar.monthcalendar(year,month)
返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Yearmonth月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。

7

calendar.monthrange(year,month)
返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从112

8

calendar.prcal(year,w=2,l=1,c=6)
相当于 print calendar.calendar(year,w,l,c).

9

calendar.prmonth(year,month,w=2,l=1)
相当于 print calendar.calendaryearwlc)。

10

calendar.setfirstweekday(weekday)
设置每周的起始日期码。0(星期一)到6(星期日)。

11

calendar.timegm(tupletime)
time.gmtime相反:接受一个时间元组形式,返回该时刻的时间戳(1970纪元后经过的浮点秒数)。

12

calendar.weekday(year,month,day)
返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 1212月)。

十四、函数

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()

任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

函数的第一行语句可以选择性地使用文档字符串用于存放函数说明。

函数内容以冒号起始,并且缩进。

return [表达式] 结束函数,返回一个值给调用方。不带表达式的return相当于返回 None

def functionname( parameters ):
   "函数_文档字符串"
   function_suite
   return[expression]

python 中,类型属于对象,变量是没有类型的,a=[1,2,3]a只是一个对象的引用。

strings, tuples, numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了ab=a,则只是用新引用b指向a所指的内存,b is atruedel a,而b仍然等于所指内存的指。类似值传递。GC机制:对象的引用数为0就被回收内存。

可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。类似引用传递

严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

调用时可使用的正是参数类型:必备参数,关键字参数,默认参数,不定长参数

关键字参数:实参和形参名字一样,允许实参顺序不同。(printme(str=”abc”)

默认参数:缺省,类似C++

不定长参数:形参中加了星号(*)的变量名会存放所有未命名的变量参数。Eg:

def printinfo( arg1,*vartuple ):

调用:

printinfo(70,60,50);

匿名函数:

lambda的主体是一个表达式,而不是一个代码块。仅仅能在表达式中封装有限的逻辑进去。

lambda函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

sum =lambda arg1, arg2: arg1 + arg2;

调用:

sum(10,20)

全局变量与局部变量

十五、模块

模块(Module),是一个Python文件,以.py结尾,包含了 Python 对象定义和Python语句。

import导入,引用模块的变量或函数:module.fun()

模一个模块只会被导入一次,不管你执行了多少次import

导入部分(模块内的变量或函数):from module inport fun1,var1,fun2(*则全部)

导入时搜索顺序:当前目录->shell 变量 PYTHONPATH 下的每个目录->察看默认路径

函数中不能直接对全局变量操作!

Var=1

def fun():#在函数中直接作右值使用会出错

       #globalVar  这个是使用全局变量

       #Var=2  这个是重新声明一个局部变量覆盖全局变量

       Var=Var+1

dir()函数返回一个排好序的字符串列表,内容是一个模块里定义过的名字

如果在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。

如果在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。

两个函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。

重新导入之前导入过的模块(再执行一次):reload(module_name)

包:

包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境。

就是文件夹,但该文件夹下必须存在 __init__.py文件, 该文件的内容可以为空。__int__.py用于标识当前文件夹是一个包。

包文件夹放在与code.py同级,包pack1内含(__init__.py,module1.py,其他模块或者文件夹子包)

code.py中导入:importpack1.module1(from pack1.module1 import *)

十六、文件IO

print 隔开不同表达式。尾部加,则不换行

输入:

raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)

input 可以接收一个Python表达式作为输入,并将运算结果返回。

         请输入:[x*5for x in range(2,10,2)]
你输入的内容是:  [10,20,30,40]

打开和关闭文件

f = open(file_name [, access_mode][, buffering])

·       file_namefile_name变量是一个包含了你要访问的文件名称的字符串值。

·       access_modeaccess_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。“w

·       buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

二进制格式多用于非文本文件,不存在的则aw都会新创,r不会,只有a指针在尾

模式

描述

r

只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式

rb

二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。

r+

打开一个文件用于读写。文件指针将会放在文件的开头。

rb+

二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。

w

打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件

wb

以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

w+

打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

wb+

以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。

a

打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

ab

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

a+

打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

ab+

以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

 

 

文件对象的属性

属性

描述

file.closed

返回true如果文件已被关闭,否则返回false

file.mode

返回被打开文件的访问模式。

file.name

返回文件的名称。

file.softspace

如果用print输出后,必须跟一个空格符,则返回false。否则返回true

f.close():刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。

f.write()可将任何字符串写入一个打开的文件,字符串可以是二进制数据,而不是仅仅是文字,不会在字符串的结尾添加换行符('\n'),参数是写入的数据。

f.read():读取一个字符串,可以是二进制数据,而不是仅仅是文字。参数是要从中读取的字节数,缺省会读到末尾。

f.tell():返回当前位置,下一次的读写会发生在文件开头这么多字节之后。

f.seek(offset [,from]):改变当前文件的位置,from默认为0(开头),1则为当前位置,2位文件末尾,文件指针移动到from+offset

重命名:import os  os.rename(now_name,new_name);

删除:os.remove(file_name)

创建文件夹:os.mkdir(“newdir”)

显示当前目录:os.getcwd() 设置当前目录:os.chdir(“/a/b/dir”)

删除目录:rmdir(“dir_name”)

主要对象:OSFile

File方法

序号

方法及描述

1

file.close()

关闭文件。关闭后文件不能再进行读写操作。

2

file.flush()

刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。

3

file.fileno()

返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。

4

file.isatty()

如果文件连接到一个终端设备返回 True,否则返回 False

5

file.next()

返回文件下一行。

6

file.read([size])

从文件读取指定的字节数,如果未给定或为负则读取所有。

7

file.readline([size])

读取整行,包括 "\n" 字符。

8

file.readlines([sizehint])

读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。

9

file.seek(offset[, whence])

设置文件当前位置

10

file.tell()

返回文件当前位置。

11

file.truncate([size])

截取文件,截取的字节通过size指定,默认为当前文件位置。

12

file.write(str)

将字符串写入文件,没有返回值。

13

file.writelines(sequence)

向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。

十七、异常处理

异常名称

描述

BaseException

所有异常的基类

SystemExit

解释器请求退出

KeyboardInterrupt

用户中断执行(通常是输入^C)

Exception

常规错误的基类

StopIteration

迭代器没有更多的值

GeneratorExit

生成器(generator)发生异常来通知退出

StandardError

所有的内建标准异常的基类

ArithmeticError

所有数值计算错误的基类

FloatingPointError

浮点计算错误

OverflowError

数值运算超出最大限制

ZeroDivisionError

(或取模) (所有数据类型)

AssertionError

断言语句失败

AttributeError

对象没有这个属性

EOFError

没有内建输入,到达EOF 标记

EnvironmentError

操作系统错误的基类

IOError

输入/输出操作失败

OSError

操作系统错误

WindowsError

系统调用失败

ImportError

导入模块/对象失败

LookupError

无效数据查询的基类

IndexError

序列中没有此索引(index)

KeyError

映射中没有这个键

MemoryError

内存溢出错误(对于Python 解释器不是致命的)

NameError

未声明/初始化对象 (没有属性)

UnboundLocalError

访问未初始化的本地变量

ReferenceError

弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError

一般的运行时错误

NotImplementedError

尚未实现的方法

SyntaxError

Python 语法错误

IndentationError

缩进错误

TabError

Tab 和空格混用

SystemError

一般的解释器系统错误

TypeError

对类型无效的操作

ValueError

传入无效的参数

UnicodeError

Unicode 相关的错误

UnicodeDecodeError

Unicode 解码时的错误

UnicodeEncodeError

Unicode 编码时错误

UnicodeTranslateError

Unicode 转换时错误

Warning

警告的基类

DeprecationWarning

关于被弃用的特征的警告

FutureWarning

关于构造将来语义会有改变的警告

OverflowWarning

旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning

关于特性将会被废弃的警告

RuntimeWarning

可疑的运行时行为(runtime behavior)的警告

SyntaxWarning

可疑的语法的警告

UserWarning

用户代码生成的警告

异常处理:名字就是异常的类型

try:
<语句>        #运行别的代码
except<名字>
<语句>        #如果在try部份引发了'name'异常
except<名字><数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

·       如果当try后的语句执行时发生异常,python就跳回到try并执行第一个匹配该异常的except子句,异常处理完毕,控制流就通过整个try语句(除非在处理异常时又引发新的异常)。

·       如果在try后的语句里发生了异常,却没有匹配的except子句,异常将被递交到上层的try,或者到程序的最上层(这样将结束程序,并打印缺省的出错信息)。

·       如果在try子句执行时没有发生异常python将执行else语句后的语句(如果有else的话),然后控制流通过整个try语句。

可以except:不带异常,这样所有异常都执行这个语句块

可以except (E1,E2,E3):

try:
<语句>
finally:
<语句>    #退出try时总会执行

一个异常可以带上参数,可作为输出的异常信息参数

try:
    正常的操作
   ......................
exceptExceptionType,Argument:
    你可以在这输出Argument的值...

Eg

def temp_convert(var):
    try:
        returnint(var)
    exceptValueError,Argument:
        print"参数没有包含数字\n",Argument

使用raise语句自己触发异常

raiseException("Invalid level!", level)

自定义异常类:必须直接或间接继承Exception

classNetworkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

触发:

try:
    raiseNetworkerror("Bad hostname")
exceptNetworkerror,e:
    print e.args

 

十八、OS文件/目录方法

序号

方法及描述

1

os.access(path, mode)


检验权限模式

2

os.chdir(path)


改变当前工作目录

3

os.chflags(path, flags)


设置路径的标记为数字标记。

4

os.chmod(path, mode)


更改权限

5

os.chown(path, uid, gid)


更改文件所有者

6

os.chroot(path)


改变当前进程的根目录

7

os.close(fd)


关闭文件描述符 fd

8

os.closerange(fd_low, fd_high)


关闭所有文件描述符,从 fd_low (包含) fd_high (不包含), 错误会忽略

9

os.dup(fd)


复制文件描述符 fd

10

os.dup2(fd, fd2)


将一个文件描述符 fd 复制到另一个 fd2

11

os.fchdir(fd)


通过文件描述符改变当前工作目录

12

os.fchmod(fd, mode)


改变一个文件的访问权限,该文件由参数fd指定,参数modeUnix下的文件访问权限。

13

os.fchown(fd, uid, gid)


修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。

14

os.fdatasync(fd)


强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。

15

os.fdopen(fd[, mode[, bufsize]])


通过文件描述符 fd 创建一个文件对象,并返回这个文件对象

16

os.fpathconf(fd, name)


返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。

17

os.fstat(fd)


返回文件描述符fd的状态,像stat()

18

os.fstatvfs(fd)


返回包含文件描述符fd的文件的文件系统的信息,像 statvfs()

19

os.fsync(fd)


强制将文件描述符为fd的文件写入硬盘。

20

os.ftruncate(fd, length)


裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。

21

os.getcwd()


返回当前工作目录

22

os.getcwdu()


返回一个当前工作目录的Unicode对象

23

os.isatty(fd)


如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False

24

os.lchflags(path, flags)


设置路径的标记为数字标记,类似 chflags(),但是没有软链接

25

os.lchmod(path, mode)


修改连接文件权限

26

os.lchown(path, uid, gid)


更改文件所有者,类似 chown,但是不追踪链接。

27

os.link(src, dst)


创建硬链接,名为参数 dst,指向参数 src

28

os.listdir(path)


返回path指定的文件夹包含的文件或文件夹的名字的列表。

29

os.lseek(fd, pos, how)


设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. unixWindows中有效

30

os.lstat(path)


stat(),但是没有软链接

31

os.major(device)


从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)

32

os.makedev(major, minor)


majorminor设备号组成一个原始设备号

33

os.makedirs(path[, mode])


递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。

34

os.minor(device)


从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )

35

os.mkdir(path[, mode])


以数字modemode创建一个名为path的文件夹.默认的 mode 0777 (八进制)

36

os.mkfifo(path[, mode])


创建命名管道,mode 为数字,默认为 0666 (八进制)

37

os.mknod(filename[, mode=0600, device])
创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。

38

os.open(file, flags[, mode])


打开一个文件,并且设置需要的打开选项,mode参数是可选的

39

os.openpty()


打开一个新的伪终端对。返回 pty tty的文件描述符。

40

os.pathconf(path, name)


返回相关文件的系统配置信息。

41

os.pipe()


创建一个管道. 返回一对文件描述符(r, w) 分别为读和写

42

os.popen(command[, mode[, bufsize]])


从一个 command 打开一个管道

43

os.read(fd, n)


从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。

44

os.readlink(path)


返回软链接所指向的文件

45

os.remove(path)


删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory

46

os.removedirs(path)


递归删除目录。

47

os.rename(src, dst)


重命名文件或目录,从 src dst

48

os.renames(old, new)


递归地对目录进行更名,也可以对文件进行更名。

49

os.rmdir(path)


删除path指定的空目录,如果目录非空,则抛出一个OSError异常。

50

os.stat(path)


获取path指定的路径的信息,功能等同于C API中的stat()系统调用。

51

os.stat_float_times([newvalue])
决定stat_result是否以float对象显示时间戳

52

os.statvfs(path)


获取指定路径的文件系统统计信息

53

os.symlink(src, dst)


创建一个软链接

54

os.tcgetpgrp(fd)


返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组

55

os.tcsetpgrp(fd, pg)


设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg

56

os.tempnam([dir[, prefix]])


返回唯一的路径名用于创建临时文件。

57

os.tmpfile()


返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。

58

os.tmpnam()


为创建一个临时文件返回一个唯一的路径

59

os.ttyname(fd)


返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。

60

os.unlink(path)


删除文件路径

61

os.utime(path, times)


返回指定的path文件的访问和修改的时间。

62

os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])


输出在文件夹中的文件名通过在树中游走,向上或者向下。

63

os.write(fd, str)


写入字符串到文件描述符 fd. 返回实际写入的字符串长度

十九、面向对象

类、类变量、数据成员、方法重写、实例变量、继承、实例化、方法、对象

数据成员=类变量+实例变量

创建类

classClassName:

   '类的帮助信息'   #类文档字符串

  class_suite  #类体

类的帮助信息可以通过ClassName.__doc__查看

classEmployee:#每一个类方法原形的第一个形参都是self(相当*this),调用时忽略

 '所有员工的基类'

empCount = 0 #类变量,通过类名.empCount来引用,实例间共用

def__init__(self, name, salary): #构造函数

self.name = name #实例变量

self.salary = salary

Employee.empCount += 1

 

defdisplayCount(self):

print"Total Employee %d" % Employee.empCount

 

defdisplayEmployee(self): print"Name : ", self.name, ", Salary: ", self.salary#其他方法也能使用实例变量

#selfrunoob等同,self.__class__为自己类名,对于self的拼写没有要求

实例化,python没有new,直接调用:

emp1 =Employee("Zara",2000)

可以动态添加删除修改成员属性,注意实例变量和类变量的区别

emp1.age =7  # 添加一个 'age' 属性

emp1.age =8  # 修改 'age' 属性

del emp1.age  # 删除 'age' 属性

·       getattr(obj, name[, default]) : 访问对象的属性。

·       hasattr(obj,name) : 检查是否存在一个属性。

·       setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。

·       delattr(obj, name) : 删除属性。

 

内置类属性,ClassName.attr

__dict__ : 类的属性(包含一个字典,由类的数据属性组成)

__doc__ :类的文档字符串

__name__: 类名

__module__: 类定义所在的模块(类的全名是'__main__.className',如果类位于一个导入模块mymod中,那么className.__module__等于 mymod

__bases__ : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

垃圾回收

一个内部跟踪变量,称为一个引用计数器。

当对象被创建时,就创建了一个引用计数,当这个对象不再需要时,也就是说,这个对象的引用计数变为0 时,它被垃圾回收。但是回收不是"立即"的,由解释器在适当的时机,将垃圾对象占用的内存空间回收。

垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。循环引用指的是,两个对象相互引用,但是没有其他变量引用他们。

析构函数:__del__(self)

类继承

1:在继承中基类的构造(__init__()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用。

2:在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别在于类中调用普通函数时并不需要带上self参数

3Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。

如果在继承元组中列了一个以上的类,那么它就被称作"多重继承"

classSubClassName(ParentClass1[,ParentClass2,...]):

   'Optional class documentation string'

  class_suite

·       issubclass() - 布尔函数判断一个类是另一个类的子类或者子孙类,语法:issubclass(sub,sup)

·       isinstance(obj, Class) 布尔函数如果objClass类的实例对象或者是一个Class子类的实例对象则返回true

 

 

方法重写:直接定义

基础重载方法

序号

方法, 描述 & 简单的调用

1

__init__ ( self [,args...] )
构造函数
简单的调用方法obj = className(args)

2

__del__( self )
析构方法, 删除一个对象
简单的调用方法del obj

3

__repr__( self )
转化为供解释器读取的形式
简单的调用方法repr(obj)

4

__str__( self )
用于将值转化为适于人阅读的形式
简单的调用方法str(obj)

5

__cmp__ ( self, x )
对象比较
简单的调用方法cmp(obj, x)

运算符重载

def__str__(self): #用法!!!

return'Vector (%d, %d)' % (self.a, self.b)

def__add__(self,other):

returnVector(self.a + other.a, self.b + other.b)

调用:

       v1 = Vector(2,10)

v2 = Vector(5,-2)

printv1 + v2

l  私有属性:

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

类的方法

在类的内部,使用 def 关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数

类的私有方法

__private_method:两个下划线开头,声明该方法为私有方法,不能在类地外部调用。在类的内部调用 self.__private_methods

实例不能访问私有变量!!!可以object._className__attrName 访问私有属性

__foo__: 定义的是特殊方法,一般是系统定义名字,类似 __init__() 之类的。

_foo: 以单下划线开头的表示的是 protected 类型的变量,即保护类型只能允许其本身与子类进行访问,不能用于 from module import *

__foo: 双下划线的表示的是私有类型(private)的变量, 只能是允许这个类本身进行访问了。

二十、正则表达式

re.match(pattern,string, flags=0)

函数参数说明:

参数

描述

pattern

匹配的正则表达式

string

要匹配的字符串。

flags

标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等

匹配成功re.match方法返回一个匹配的对象,否则返回None

import re

我们可以使用group(num) groups() 匹配对象函数来获取匹配表达式。

匹配对象方法

描述

group(num=0)

匹配的整个表达式的字符串,group() 可以一次输入多个组号,在这种情况下它将返回一个包含那些组所对应值的元组。

groups()

返回一个包含所有小组字符串的元组,从 1 所含的小组号。

re.search 扫描整个字符串并返回第一个成功的匹配。

函数语法:

re.search(pattern,string, flags=0)

两个都有re.xxx(x,x,x).span()  #返回匹配的字符串的起始索引和尾部索引

re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

re,sub

re.sub(pattern, repl,string, count=0, flags=0)

参数:

pattern : 正则中的模式字符串。

repl : 替换的字符串,也可为一个函数。

string : 要被查找替换的原始字符串。

count : 模式匹配后替换的最大次数,默认 0 表示替换所有的匹配。

正则表达式可用r'#.*$'表示语法。

Repl参数是一个函数:(注意用法)

importre

# 将匹配的数字乘于 2

defdouble(matched):

value = int(matched.group('value'))

returnstr(value * 2)

s = 'A23G4HFD567'

print(re.sub('(?P<value>\d+)', double, s))

compile 函数用于编译正则表达式,生成一个正则表达式( Pattern )对象

re.compile(pattern[, flags])

·       pattern : 一个字符串形式的正则表达式

·       flags : 可选,表示匹配模式,比如忽略大小写,多行模式等,具体参数为:

1.     re.I 忽略大小写

2.     re.L 表示特殊字符集 \w, \W, \b, \B, \s, \S 依赖于当前环境

3.     re.M 多行模式

4.     re.S 即为 . 并且包括换行符在内的任意字符(. 不包括换行符)

5.     re.U 表示特殊字符集 \w, \W, \b, \B, \d, \D, \s, \S 依赖于 Unicode 字符属性数据库

6.     re.X 为了增加可读性,忽略空格和 # 后面的注释

用法:

 

二十一、CGI编程

CGI(Common Gateway Interface),通用网关接口,它是一段程序,运行在服务器上如:HTTP服务器,提供同客户端HTML页面的接口。

getpost方式及处理,传递checkbox数据,radio数据,textarea数据,传递下拉程序,使用cookie(设置与检索),文件下载和上传

二十二、mysql数据库的操作

不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载OracleMySQL数据库模块。

DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口

PythonDB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

Python DB-API使用流程:

·       引入 API 模块。

·       获取与数据库的连接。

·       执行SQL语句和存储过程。

·       关闭数据库连接。

实际操作一下,在linux安装一下。

二十三、网络编程

Python 提供了两个级别访问的网络服务。:

·       低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

·       高级别的网络服务模块 SocketServer它提供了服务器中心类,可以简化网络服务器的开发。

socket.socket([family[, type[, proto]]])

参数

·       family: 套接字家族可以使AF_UNIX或者AF_INET

·       type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAMSOCK_DGRAM

·       protocol: 一般不填默认为0.

 

二十四、SMTP

二十五、多线程

·       使用线程可以把占据长时间的程序中的任务放到后台去处理。

·       用户界面可以更加吸引人,这样比如用户点击了一个按钮去触发某些事件的处理,可以弹出一个进度条来显示处理的进度

·       程序的运行速度可能加快

·       在一些等待的任务实现上如用户输入、文件读写和网络收发数据等,线程就比较有用了。在这种情况下我们可以释放一些珍贵的资源如内存占用等等。

Python中使用线程有两种方式:函数或者用类来包装线程对象。

函数式:(import thread

thread.start_new_thread(function, args[, kwargs])

参数说明:

·       function - 线程函数。

·       args - 传递给线程函数的参数,他必须是个tuple类型。

·       kwargs - 可选参数。

结束:一般依靠线程函数的自然结束;也可以在线程函数中调用thread.exit(),他抛出SystemExit exception

thread提供了低级别的、原始的线程以及一个简单的锁。

threading 模块提供的其他方法:

·       threading.currentThread(): 返回当前的线程变量。

·       threading.enumerate(): 返回一个包含正在运行的线程的list。正在运行指线程启动后、结束前,不包括启动前和终止后的线程。

·       threading.activeCount(): 返回正在运行的线程数量,与len(threading.enumerate())有相同的结果。

除了使用方法外,线程模块同样提供了Thread类来处理线程,Thread类提供了以下方法:

·       run(): 用以表示线程活动的方法。

·       start():启动线程活动。

·       join([time]): 等待至线程中止。这阻塞调用线程直至线程的join() 方法被调用中止-正常退出或者抛出未处理的异常-或者是可选的超时发生。

·       isAlive(): 返回线程是否活动的。

·       getName(): 返回线程名。

·       setName(): 设置线程名。

二十六、XML解析

常见的XML编程接口有DOMSAXpython有三种

·       python 标准库包含SAX解析器,SAX用事件驱动模型,通过在解析XML的过程中触发一个个的事件并调用用户定义的回调函数来处理XML文件。

·       XML数据在内存中解析成一个树,通过对树的操作来操作XML

·       ElementTree就像一个轻量级的DOM,具有方便友好的API。代码可用性好,速度快,消耗内存少。

DOM需要将XML数据映射到内存中的树,一是比较慢,二是比较耗内存,而SAX流式读取XML文件,比较快,占用内存少,但需要用户实现回调函数(handler)。

二十七、GUI编程

TkinterwxPythonJython

·       1、导入 Tkinter 模块

·       2、创建控件

·       3、指定这个控件的 master即这个控件属于哪一个

·       4、告诉 GM(geometry manager) 有一个控件产生了。

二十八、3.0主要变化

1Print,只有print()

2.7中:三者一样

print"fish"
print("fish")#注意print后面有个空格
print("fish")#print()不能带有任何其它参数

2Unicode

3.0Unicode(utf-8)字符串,以及一个字节类:bytebytearrays

默认使用utf-8编码,可以用中文作为变量名称。

3)除与整除

2.0:1/2==0,1.0/2.0==0.5-1//2==-1//是对正确结果-0.5floor操作)

3.0:1/2==0.5-1//2==-1

所以///不一样!!!简单舍弃小数应该用math.trunc(-1/2)floor是下舍操作,5.6->5.0-5.6->-6

4)异常

52.0rangexrange3.0没有xrange

6)八进制2.00o7770777,3.0只有0o777,且二进制位都是0b111

73.0只有!=

83.0去掉``,只能用repr函数

9)改名:

旧的名字

新的名字

_winreg

winreg

ConfigParser

configparser

copy_reg

copyreg

Queue

queue

SocketServer

socketserver

repr

reprlib

StringIO模块现在被合并到新的io模组内。 new, md5, gopherlib等模块被删除。 Python 2.6已经支援新的io模组。

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer,Cookie, cookielib被合并到http包内。

取消了exec语句,只剩下exec()函数。 Python 2.6已经支援exec()函数。

except Exception, e变成except (Exception) as e.

10)数据类型

1Py3.X去除了long类型,现在只有一种整型——int,但它的行为就像2.X版本的long

2)新增了bytes类型,对应于2.X版本的八位串,定义一个bytes字面量的方法如下

>>> b = b'china'
>>> type(b)

 

str对象和bytes对象可以使用.encode()(str -> bytes) or .decode() (bytes -> str)方法相互转化。

3dict.keys().items .values()方法返回迭代器,而之前的iterkeys()等函数都被废弃。同时去掉的还有 dict.has_key(),用 in替代它吧

二十九、JSON

import json

函数

描述

json.dumps

Python 对象编码成 JSON 字符串

json.loads

将已编码的 JSON 字符串解码为 Python 对象

json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8",default=None, sort_keys=False,**kw)

 

import json
 
data =[{'a':1,'b':2,'c':3,'d':4,'e':5}]
 
json = json.dumps(data)
print json

Python

JSON

dict

object

list, tuple

array

str, unicode

string

int, long, float

number

True

true

False

false

None

null

json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[,**kw]]]]]]]])

 

jsonData ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
text = json.loads(jsonData)

JSON

Python

object

dict

array

list

string

unicode

number (int)

int, long

number (real)

float

true

True

false

False

null

None

Demjson python 的第三方模块库,可用于编码和解码 JSON 数据,包含了JSONLint 的格式化及校验功能。

 


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Python笔记.md 是一个用于记录Python编程相关内容的markdown文档。 在Python学习过程中,学习者通常会遇到各种问题和疑惑,需要有一个地方来记录学习笔记和重要概念,以方便日后复习和查阅。Python笔记.md 就是一个很好的选择。 Python笔记.md 可以按照自己的需要来组织内容,比如可以分为不同的章节或主题,并使用markdown语法来格式化文档,使其更加清晰易读。 在Python笔记.md中,可以记录Python基础语法、常用数据结构、函数、类、模块等内容。此外,还可以记录一些常见的错误和解决方法,以便日后遇到类似问题时能够快速找到解决方案。 Python笔记.md 还可以用来记录自己的思考和理解。在学习过程中,我们常常会思考某个概念或代码背后的原理,这时候可以将自己的思考记录在笔记中,以便后续复习和回顾。 使用Python笔记.md 还可以方便与他人分享学习心得。可以在文档中加入注释或标题,使得文档更加易读和友好。同时,也可以将Python笔记.md 推送到版本控制系统中,与他人共享和共同编辑。 总之,Python笔记.md 是一个非常有用的工具,可以帮助学习者系统地记录、整理和复习Python编程相关的知识和经验。无论是初学者还是有经验的开发者,都可以从中受益,并提高自己的编程技能。 ### 回答2: Python笔记.md是一个使用Markdown语法编写的Python笔记文档。Markdown语法是一种轻量级的标记语言,可以快速地编辑和排版文档。 在Python笔记.md中,可以记录Python程序设计的相关知识、概念和技巧。通过使用Markdown语法,可以方便地插入代码块、链接、图片以及其他强调和排版格式,使得笔记更加直观和易读。 Python笔记.md可以按照不同的章节和主题组织内容,方便快速查找和阅读。在每个章节中,可以记录不同的Python编程概念,如数据类型、控制结构、函数、类等。可以通过示例代码和解释说明来详细解释这些概念的用法和特点。 在笔记中,还可以记录一些Python的常见问题和解决方案,例如常见错误、调试技巧等。这些内容可以帮助初学者更好地理解和掌握Python语言。 此外,Python笔记.md还可以连接到其他的Python资源,如官方文档、教程、在线代码编辑器等。这样可以提供更多的学习和参考资料。 总之,Python笔记.md是一个有条理、易读和方便编辑的Python学习笔记文档,可以帮助人们更好地学习和理解Python编程语言。 ### 回答3: Python笔记md是一种用来记录Python编程语言相关内容的文本文件格式。它使用Markdown语法来快速、简洁地编写和格式化笔记Python笔记md的优点是: 1. 简单易懂:Markdown语法简洁明了,使用起来非常简单,即便没有编程背景的人也能快速上手。 2. 跨平台兼容:无论是在Windows、Mac还是Linux系统中,Python笔记md都可以轻松使用。 3. 可读性强:Python笔记md的文本格式使得代码和说明可以同时显示,方便读者理解和学习。 4. 方便分享和发布:Python笔记md可以导出为HTML或PDF格式,方便分享给其他人或者发布到网络上。 5. 与开发工具兼容:大多数集成开发环境(IDE)和文本编辑器都支持Markdown语法,可以实时预览和编辑笔记。 使用Python笔记md可以帮助程序员记录代码和相关的解释和说明,方便复习和查看。它还可以用于编写技术博客、文档和教育材料等。而且由于其文本格式的特点,Python笔记md也非常适合使用版本控制系统进行版本管理。 总而言之,Python笔记md是一种简单、灵活且易于分享的笔记格式,可以有效提高编程学习和开发的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值