第一章 Python介绍

1.3 基本类型

操作符 +,-,*,/,%,**(幂),divmod(除法)
divmod(10,3)=(3,1)

None表示出错

表示假: None,0,0.0,"",[],(),{} (空)
逻辑运算: and,or
表达式:<cond> and <expr_true> or <expr_false>

cond expr_true expr_false reslut
true true all expr_true
false all all expr_false
true flase all expr_false

1.4 列表list[]

a=[1,2,3] 用[]声明即可
index范围(-len,len-1)
a[-3]=1 a[-2]=2 a[-1]=3 a[0]=1 a[1]=2 a[2]=3

子list,原list的copy,副本:a[1:3]=[2,3],默认0,len或者-1

L.append(var),追加在index为len的位置
L.count(var),计算var出现的次数
len(L),返回长度
L.extend(list),追加list在后面
L.index(var),返回var在L中的index位置,无则抛异常
L.insert(index,var),在index位置插入var,其余元素后退
L.pop(index),删除index元素并返回,没有index则为最后一个元素
L.remove(var),找到var删除,一次只能删一个,无则抛异常
L.reverse(),倒置
L.sort(),顺序排序

模拟栈stack,appen()压栈,pop()出栈
模拟队列queue,insert()入队,pop()出队
模拟树tree,root=[branch1,branch2],branch1=[left,right]....

list comprehension,语法:
[<expr1> for k in L if <expr2>]
例list整数元素加1,原list不变:[ k+1 for k in list type(k)==types.IntType]

1.5 字符串string

float(str) 变成浮点数
int(str,base) 按照base(默认10)进制变成10进制整数
long(str,base) 按照base进制变成长整数

str.capitalize() 首字母大写
str.lower() 变小写
str.ipper() 变大写
str.swapcase() 大小写互换
len(str) 获得长度
str[index:len] 获得子串,同list语法
判断字符
str.isalnum() 范围[A-Za-z0-9]
str.isalpha() 范围[A-Za-z]
str.isdigit() 范围[0-9]
str.islower() 范围[a-z]
str.isupper() 范围[A-Z]
str.istitle() 单词首字母大写
str.isspace() 空白字符,\n,\t,\r,’ ’

str.find(substring,[start [,end]]) 返回substring首次出现位置,无则为-1
str.rfind(substring,[start [,end]]) 同find(),反向查找
str.index(substring,[start [,end]]) 同find(),无则抛异常
str.rindex(substring,[start [,end]]) 同index(),反向查找
str.count(substring,[start [,end]]) 返回substring出现次数,无则为0

%s 字符串 (同print str(obj)打印效果)
%d 有符号十进制整数 %o 无符号八进制 %u 无符号十进制 %x 无符号十六进制(小写)
%e 科学表达式(小写) %E 科学表达式(大写)
%f 浮点数(小数点后6位) %g 浮点数(小于0.0001或者不够精度,科学表示法)
>>> "%f and %f"%(-0.00001,200.0)
’-0.000010 and 200.000000’
>>> "%g and %g"%(-0.00001,2000000.0)
’-1e-05 and 2e+06’
%c ASCII整数表示成字符 %r 表示为字符串(同print expr(obj)打印效果)

str.join(words),words是只含字符的tuple或list,用str作为分隔符将words中的字符串连接起来
str.split(words),words是分隔字符串,将str分解为list

1.6 元组tuple()

常量list,用()表示a=(1,2,3),只有一个元素用(1,)与变量区分

1.8 字典dictionary{}

可通过D[key]得到value
dict(L)可以构造一个dictionary,L是list每个元素都是tuple(key,value)
例: pricelist={"clock":12,"table":100,"xiao":100 }
pricelist=dict([(’clock’,12),("table",100),("xiao",100)])
对不存在的key进行赋值操作,即增加

D.clear() 清空
D.copy() copy,独立的
D.get(key) 返回value,无则为None,D[key]无则抛异常
D.get(key,default) 无则为default
D.has_key(key) 返回true或false
D.items() 得到list
D.keys() 得到全部key,返回list
D.values() 得到全部value,返回list
D.update(E) 从E中得到新数据
D.popitem() 删除

1.9 程序流程

if语句:
if <expr1>:
<statement-block>
elif <expr2>:
<statement-block>
elif <expr3>:
<statement-block>
...
else:
<statement-block>

for循环:
for x in <sequence>:
<statement-block>
else:
<else-block>

>>> a=[1, 2, 3, 4]
>>> for x in a:
... if x==100: break
... else:
... print "100 not found"
...
100 not found
循环未被break中断就执行else语句

while语句同for

1.10 函数def

函数可传递
参数个数可选,可选参数之后的参数都可选,否则报错
参数赋值顺序可通过%d...更改

>>> def printf(format,*arg):
... print format%arg
...
>>> printf ("%d is greater than %d",1,2)
1 is greater than 2
*arg必须是最后一个参数,*表示多个参数,作为一个tuple来传递,通过arg访问

>>> def printf(format,**keyword):
... for k in keyword.keys():
... print "keyword[%s] is %s"%(k,keyword[k])
...
>>> printf("ok",One=1,Two=2,Three=3)
keyword[Three] is 3
keyword[Two] is 2
keyword[One] is 1
用**按照dictionary的方式传递参数

两种方式结合使用:
>>> def testfun(fixed,optional=1,*arg,**keywords):
... print "fixed parameters is ",fixed
... print "optional parameter is ",optional
... print "Arbitrary parameter is ", arg
... print "keywords parameter is ",keywords
...
>>> testfun(1,2,"a","b","c",one=1,two=2,three=3)
fixed parameters is 1
optional parameter is 2
Arbitrary parameter is (’a’, ’b’, ’c’)
keywords parameter is {’three’: 3, ’two’: 2, ’one’: 1}

doc 函数描述 testfun.__doc__

lambda函数可以认为是一种匿名函数
>>> f = lambda a,b: a+b
>>> f(1,2)
3
返回一个lambda函数
>>> def incfun(a):
... return lambda x: x+a
...
>>> incfun(2)(12)
14

global语句修改变量的space,需调用函数之后才生效
嵌套函数,内部函数

函数改变外部参数的值,可更改所调用对象的值,[],{}...

1.11 模块module

可用import module导入
外部可直接访问元素modname.attribute或者函数modname.funname
也能导入后直接访问
>>> from testmodule import age, sayHello
>>> age
0
>>> sayHello
<function sayHello at 0x81631a4>

!!自己写的modname不要和系统一样

package是一组module的集合,解决名称冲突的问题,方便管理

1.12 命名空间name space

概念:name space是从名称(name)到对象(object)上的映射(map),当一个name映射到一个object上时,
我们说这个name和这个object有帮定关系(bind),或者说这个name指向这个object

常用的name space:build-in name space (内在命名空间),global name space (全局命名空间),
local name space(局部命名空间),不同的空间中name是互不关联的

有一个特殊的全局的唯一的 name space,module的 __name__ 是 __main__
每一个module都有一段这样的代码
if __name__ == "__main__":
sayHello() #测试代码

locals()和globals()分别返回global name space 和local name space,用dictionary来表示

LGB规则用scope作用域来解释,代码执行时至少有三个name space,L 指local,G指 global,
B指 buildin(buildin name space)

用del可删除一个name space中的name,指的是删除name和object之间的关系,与指针类似

1.13 类class

obj.__dict__表示obj的name space

>>> class SampleClass:
... def __init__(self):
... print "OK, I was born."
...
>>> a=SampleClass()
OK, I was born.

a就是SampleClass的别名alias,Python中没有构造函数,但是有初始化函数,
object创建后,会自动调用__init__,初始化数据

继承inherit
语法 class <name>(superclass1,superclass2,...):
可以多重继承

__init__(self) 创建
__del__(self) 删除
__repr__(self) 重建,eval(repr(obj)) 得到对象的拷贝
__str__(self) 字符串描述
__cmp__(self,other) 比较,-1 self小于other,0等,1大于
__hash__(self) 得到一个32位的hash值
__nozero__(self) 定义一个对象是否为逻辑假
__len__(self) 返回长度,未定义则报异常
__getitem__(self,key) 返回self[key]来模拟list,dict等结构
__setitem__(self,key,value) 模拟obj[key]=value
__delitem__(self,key) 模拟 del obj[key]
__contains__(self,other) 使object处理in语句
__call__(self,arg1,arg2,...) 像函数一样调用
__add__(self,other) self + other
__sub__(self,other) self - other
__mul__(self,other) self * other
__div__(self,other) self / other
__mod__(self,other) self % other
__divmod__(self,other) divmod(self,other)
__pow__(self,other) self ** other
_pow__(self,other,modulo) pow(self,other,modulo
__lshift__(self,other) self << other
__rshift__(self,other) self >> other

迭代器iterator
>>> s = ’abc’
>>> it = iter(s)
>>> it
<iterator object at 0x00A1DB50>
>>> it.next()
’a’
>>> it.next()
’b’
>>> it.next()
’c’
>>> it.next()
重载__iter__() 以支持迭代器

1.14 异常exception

一:
try :
... # statements 1
except ExceptionType :
... # statements 2
执行statements 1,如果发生exception,就把exception的类型和ExceptionType比较,一致就执行
statements 2,不一致就直接返回,错误向上抛,直到被捕获,如果未被捕获,程序异常终止
try :
... # statements 1
except (ExceptionType1,ExceptionType2) :
... # statements 2
except (ExceptionType3,ExceptionType4) :
... # statements 3
else:
... # statements 4

二:
try:
... # statements 1
finally:
... # statements 2
这种方式不能与第一种混用,无论是否发生exception,或是语句return,statements 2都执行
用于释放资源,同Java finally语句

抛出异常raise
>>> try:
... raise KeyError, "hello"
... except KeyError, arg:
... print arg
...
hello

第三章

3.2 文件操作

f=open("filename","r")
r表示只读,w表示写,rw表示读写,rb读二进制,wb写二进制

>>> f=open("/tmp/x.txt","w")
>>> f.write("a")
>>> f.close()
>>> f=open("/tmp/x.txt","r")
>>> f.read()
’a’
>>> f.read()
’’

打开文件写,写入一个字符,关闭,打开文件只读,读出字符
f.read(size)表示从文件读取size个字符,忽略则读取所有内容,到结尾返回空字符串
从文件中一个字符的读取
f.open("/tmp/x.txt","r")
c=f.read(1)
while c:
print c
c=f.read(1)

f.readline()读取一行,f.readlines() 读取所有,返回list,每个元素表示一行,包括\n
对应的写有writeline,write,writelines

f.write(str)字符串写入到文件中
f.tell() 返回当前读取位置
f.seek(off,where) 定位文件读取位置

f.close()关闭文件

3.3 正则表达式regular expression(regexp)

>>> p=re.compile("abc")
>>> if p.match("abc") : print "match"
...
match
>>>

\用来表示无法打印的部分

为增加可读性,在字符串前面加r来表示raw格式
>>> a=r"\a"
>>> print a
\a

3.4 struct

struct模块处理二进制

Python基础整理的更多相关文章

  1. python基础整理----基本概念和知识

    整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅".& ...

  2. python基础整理笔记(九)

    一. socket过程中注意的点 1. 黏包问题 所谓的黏包就是指,在TCP传输中,因为发送出来的信息,在接受者都是从系统的缓冲区里拿到的,如果多条消息积压在一起没有被读取,则后面读取时可能无法分辨消 ...

  3. python基础整理笔记(五)

    一. python中正则表达式的一些查漏补缺 1.  给括号里分组的表达式加上别名:以便之后通过groupdict方法来方便地获取. 2.  将之前取名为"name"的分组所获得的 ...

  4. python基础整理笔记(四)

    一. python 打开文件的方法 1. python中使用open函数打开文件,需要设定的参数包括文件的路径和打开的模式.示例如下: f = open('a.txt', 'r+') 2. f为打开文 ...

  5. python基础整理笔记(一)

    一. 编码 1. 在python2里,加载py文件会对字符进行编码,需要在文件头上的注释里注明编码类型(不加则默认是ascII). # -*- coding: utf-8 -*- print 'hel ...

  6. python基础整理4——面向对象装饰器惰性器及高级模块

    面向对象编程 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减少了重复代码的重写过程 面向对象编程(Object Oriented Pro ...

  7. python基础整理1

    基础知识 名字与对象,类与类型 变量:在Python中,存储一个数据,需要一个叫做变量的东西   num2 = 87 #num2是一个变量 变量的类型: 程序中为了更充分的利用内存空间以及更有效率的管 ...

  8. python基础整理笔记(八)

    一. python反射的方式来调用方法属性 反射主要指的就是hasattr.getattr.setattr.delattr这四个函数,作用分别是检查是否含有某成员.获取成员.设置成员.删除成员. 此外 ...

  9. python基础整理笔记(七)

    一. python的类属性与实例属性的注意点 class TestAtt(): aaa = 10 def main(): # case 1 obj1 = TestAtt() obj2 = TestAt ...

  10. python基础整理笔记(三)

    一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...

随机推荐

  1. sitemesh使用

    参考文章: https://my.oschina.net/heroShane/blog/199177 http://blog.csdn.net/u013019926/article/details/1 ...

  2. 转载--无弹窗APT渗透实验

    转载--无弹窗APT渗透实验 文章作者:亚信安全,转载自 FreeBuf.COM APT攻击方式花样繁多,我研究最近的流行的APT攻击方式,在本地搭建环境模拟一次简单的APT攻击,在模拟攻击过程中发现 ...

  3. eclipse中svn切换用户

    如果永久保存svn用户账号及密码,再更换svn用户时需要先删除C:\Users\Administrator\AppData\Roaming下的Subversion文件,然后在刷新eclipse中的sv ...

  4. cxf+spring+soap简单接口开发

    最近学了cxf框架开发webservice,简单搭了个接口,方便后续翻阅,本人才疏学浅,若有不足,请多多谅解! 一.服务端: 1.所用到的jar包: maven的pom.xml配置: <proj ...

  5. Github使用笔记——创建远程库

    系统:CentOS7 一.yum install git 二.配置 git config --global user.name "XXX" git config -global u ...

  6. 尚硅谷springboot学习33-整合mybatis

    引入mybatis依赖(还要引入mysql和jdbc依赖) <dependency> <groupId>org.mybatis.spring.boot</groupId& ...

  7. JS 正则表达式基本语法(精粹)

    1.正则表达式基本语法 两个特殊的符号'^'和'$'.他们的作用是分别指出一个字符串的开始和结束. 例子如下: "^The":表示所有以"The"开始的字符串( ...

  8. 计算机系统的通信PPT版本

    通信方式 并行传送:一次8位,需要保持各路信号同时到达,距离和速度受限制,成本较高 串行传送:一次1位,距离较远.速率更高,成本较低. {在单片机的通信中,使用的是串行传送,但是数据寄存器里面的是8位 ...

  9. Object.assign()解释整理

    链接:https://blog.csdn.net/wang252949/article/details/79106160 语法 Object.assign(target, ...sources) 参数 ...

  10. Demo002 IDEA中Junit单元测试的使用(初级篇)

    推荐JUnit视频教程:JUnit-Java单元测试必备工具. 1.基本理论 1.1 单元测试 单元测试又称模块测试,属于白盒测试,是最小单位的测试.模块分为程序模块和功能模块.功能模块指实现了一个完 ...