python学习笔记(1-6)

《python核心编程》学习笔记

if __name__ == ‘__main__‘:

一、二、三

获得键盘输入
  1、raw_input(‘‘)
  2、sys.stdin.readline()

strip()取出2边的空格。

3<5>4 等同于 (3<5)and(4<5),这个可是当初C语言入门的时候经常叮嘱的经典错误呀!想不到在这里被实现了,再也不是错误了,呵呵。

print 和c里面的printf基本一致。
  print "str %s , int %d"%(‘str1‘,456)

对字符串构造也可以使用,类似sprintf,或者CString.format
  str2 = "int %d"%(123)
  str2 = ‘int 123‘

列表(list) 中括号[] 可以改元素
  表列(tuple)小括号() 不可以改元素,相当于常量
  字典(disk)大括号{} 第二项可改

a=[1,2,3,4]
  >>>a[2:]
  [3,4]
  >>>a[:3]
  [1,2,3]

dist1={}
  dist1.keys()

>>> range(9)
  [0, 1, 2, 3, 4, 5, 6, 7, 8]
  for i in range(9):
  等同于
  while i<9:
   i++

>>>print 1,2,3
  1 2 3
  逗号可以连接字符串,但是添加一个空格

# 注释
  \n 换行
  \ 续行
  ; 同行2语句
  : 分割标题行和后续语句
  ‘‘‘ ‘‘‘ 文档,可以随意换行

del 删除引用,如果是把内置函数给重新设置了引用,del后回归默认。不能删除内置函数。
  比如 dir=‘123‘那么dir就失去了原来的作用,当del dir后,回归原始作用。

id(x)显示某个对象的引用id
  dir(x)显示某个对象的信息
  dir()无参使用,显示当前的全局对象和局部对象
  type(x)显示对象的类型,没有赋过值的是NoneType

import sys 获得模块
  from sys import exit 获得模块的某个函数

0为假1为真

字符串可以类似char[]
  mysting = ‘123‘
  mystring[0]//为1
  mystring[-1]//为最后一个值3

类似C,如果定义几个同意内容字符常量,那么内存地址都一致
  mystr1=‘123‘
  mystr2=‘123‘
  id(mystr1)==id(mystr2)

else if 为elif表示

没有switch case

打开文件为open(filename,mode),不需要包含库。

**表示乘方。

交换2个值很简单,(x,y)=(y,x)就可以了

-------------------------------------------------------------------------------------
四、对象

a1=a2=111
  a1和a2的引用id相同,即id(a1)==id(a2)或a1 is a2
  这里如果a3=111,那么a3和a1,a2的id相同,估计是查了全部对象。
  如果a1=110或者a1+=1,那么a1的id就改变了。
  如果是复杂一点的,比如列表,就不能配对了。c1=[1,2,3] c2=[1,2,3],2者id不相同。
  列表某项改变,不影响列表的id,但是该项的id就变了。
  c1[1]=4 那么c1[1]的id变了,但是c1的id没变。

对于id的比较,可以直接用is:a=1;c=a;a is c >>True
  常量也同样有id:a=1;id(a)==id(1) >>True 
  a is 1 >>True 
  1 is a>>True
  但是2个常数之间不能用is比较,但是2个字符串可以用is。

cmp 比较2个id的大小,id相同不一样数值相同(如列表),id不同也不代表值不同。
  repr和str的作用在表面基本一致,但是具体差别就是repr还可以用eval恢复,没看明白,存疑。

python没有bool、byte、指针。
  int就是32位,没有short。
  float就是双精度,没有单精度了。

-------------------------------------------------------------------------------------
五、数字

没有i++

整数都是32位。
  长整型无限长度。后加L
  浮点可以用e,如4.3e25
  复数可以用64.1+1.5j 实数real,虚数imag,全部conjugate()

5.51节有个错误,就算是999999*999999,也不会出错,自动转换成了长整型。

~取反 为-(num+1)
  <<左移 >>右移 ^异或

int,long,float,complex用来转换,对复数取2个值的平方和。
  abs绝对值 coerce协调2个数字为同一类型coerce1(1,2L) (1L,2L)
  divmod除法和取余 divmod(10,3) (3,1)
  pow 和**一样,是乘方运算。
  round 把浮点型变成最接近的整数,四舍五入 round(3) 3.0 round(3.49) 3.0 round(3.49,1) 3.5 round(-.5) -1
  math.floor 退一法

整数才能用的函数:hex oct 转换16、8进制 ord 字母转数字 chr 数字转字母

random 随机函数的模块:
  ranint(a,b) a到b的整数,包括a、b,即a<=x<=b
  uniform(a,b) a<=x<b //这个是浮点数
  random()返回[0,1)之间的浮点数
  randrange(1,10)返回1到9的值。
  randrange(1,12,2) 返回从1(1+2*0)到9(1+2*4)的值。
  choice(‘asd\n‘)返回一个随机字符
  choice([‘abc‘,‘dfg‘,‘123‘])返回其中一个字符串
  sample(‘asd\n‘,2)用list返回2个随机字符,顺序可颠倒。不过同样位置上的值不会出现2次,因此第二个参数不能大于字符串的长度。所以有什么允许重复的时候会比较麻烦,但是可以给的第一参数里面带有重复的字符串来解决这个问题。
  如果要随机组成字符串,需要使用string。string.join(random.sample(‘1234567890asdf‘,5)).replace(‘ ‘,‘‘)
shuffle(list)可以打乱list里的元素顺序。

-------------------------------------------------------------------------------------

六、序列

in,not in
  a + b
  a * 4
  a[3]

a=[1,2,3,4] 则 a[0]~a[3]或a[-4]~a[-1]
  len 显示长度
  list 转换seq为列表
  tuple 转换seq为表列
  min,max 返回最大最小
  str 转换为字符串

for循环有个else,如果是循环结束而不是break则执行这个else

%c 字符
  %s 字符串
  %i %d 带符号的十进制
  %u 不带符号的十进制
  %o 八进制
  %x 小写16进制
  %X 大写16进制
  %e %E 乘方记号
  %f 浮点
  %g %G 浮点和乘方比较短的格式

string.find(‘1231‘,‘1‘) 查找字符返回位置 0

python的字符串不以\0结束。
  >>>str1=‘\0\0\01‘
  >>>str1
  ‘\x00\x00\x01‘
  不过实际长度还是3个元素。
  len(str1)//3
  str1[2]//0x01
  str1.find(‘1‘)//-1
  str1.find(‘\01‘)//2
  str1.find(‘\x01‘)//2

列表list通过append添加新元素
  通过remove以元素的值做参数删除元素,如果有2个一样的值,则删除前一个。如果参数是位置而不是元素的值,按照位置删除用del a[1]
  通过pop弹出最后一个值并删除之。(pop(0)则抛出第一个值并删除之)
  通过extend合并其他列表。
  通过*倍增元素。
  长度可以len([1,2])【书上有误,不可以[1,2].__len__】
  reverse颠倒列表,注意这个不是输出一个颠倒的列表,而是真正把列表颠倒。
  sort排序列表,从小到大。默认是快速排序。
  count一个元素的值,返回在list里有多少个同样的值。
  index比较复杂些,index(4,1,5),查找元素值为4的元素的第一个位置,这个位置必须在[1,5)之间。否则出错,所以使用这个函数当需要try与except包含才可以用,因为它不返回-1。就算只使用第一个参数,如果没有这项,同样是抛出异常,而不是返回-1 。

表列tuple可以添加【tuple1+=(1,1,)】,倍增,但是不能删除和替换。
  但是这里不能加只有一个元素的表列,因为一个元素的表列的属性不是表列,如果要建设单元素的表列,就加个逗号。,如(1,)。
  如:type((1))为int,但是列表不是,如:type([1])为list。
  另,表列中如果有子列表,那么这个子列表是可以修改的,如t=([1,2],3,4) t[0][1]=22 这个是允许的。

str(x) list(x) tuple(x)可以将3者相互转化,不过str(list或tuple),list(tuple),tuple(list)都比较正常,但是将字符串转换为list或者tuple就很麻烦了,因为每个括号、逗号、引号都变成了单独的元素。

list之间可以使用==判断是否相同,这样比较的是具体的值,而不是id。list的id不用,但是具体的值相同,==结果为真。但是用is则为假。

子函数可以返回多个参数,如:
  def foo1():
   return a1,a2,a3
  那么接受就可以写作 x1,x2,x3=foo1() 分别进行接受。感觉这个很不错哦,方便很多呀。

copy模块:一般操作的赋值,都是浅copy,只是把引用ID设置成同一个值。copy.copy()也是浅copy,copy.deepcopy()是深copy,真正的2个对象。

没有字符变量,只有长度为1的字符串。其实字符串就是tuple,不可替换成员。
  对于判断是不是大写字母,数字等,可以import string
  string.uppercase string.lowercase string.letters string.digits
  用not in 和in来判断。
  string里有用的很多,最常用的就是join(把列表变成字符串,第二个参数决定间隔字符),split(返回一个list,为分割后的字符串)。具体见P122

如果在引号前面加上r,则可以取消\开始的特殊效果。
  print ‘\x66‘ //f
  print r‘\x66‘ //\x66
  如果是unicode,则使用ur

其他的一些模块:re(匹配字符串),struct(构造发包报文时最常用),c/StringIO(字符串缓冲区对象,行为类似文件),crypt(单向加密编码功能,仅linux使用),rotor(多平台编码解码服务)

时间: 2024-11-05 02:19:06

python学习笔记(1-6)的相关文章

OpenCV之Python学习笔记

OpenCV之Python学习笔记 直都在用Python+OpenCV做一些算法的原型.本来想留下发布一些文章的,可是整理一下就有点无奈了,都是写零散不成系统的小片段.现在看 到一本国外的新书<OpenCV Computer Vision with Python>,于是就看一遍,顺便把自己掌握的东西整合一下,写成学习笔记了.更需要的朋友参考. 阅读须知: 本文不是纯粹的译文,只是比较贴近原文的笔记:         请设法购买到出版社出版的书,支持正版. 从书名就能看出来本书是介绍在Pytho

python学习笔记12-模块使用

python学习笔记12-模块使用 模块os,sys 什么是模块? 模块os,sys 模块是Python组织代码的一种基本方式 一个Python脚本可以单独运行,也可以导入到另外一个脚本运行,用import hello语句来导入,不用加入.py 什么是Python的 包? Python的模块可以按照目录组织为包 创建一个包的步骤: 创建一个名字为包名的目录 在改目录下创建一个__init__.py文件 根据需要,在该目录下存放脚本文件或已编译的扩展及子包 import pack.m1,pack.

python学习笔记2—python文件类型、变量、数值、字符串、元组、列表、字典

python学习笔记2--python文件类型.变量.数值.字符串.元组.列表.字典 一.Python文件类型 1.源代码 python源代码文件以.py为扩展名,由pyton程序解释,不需要编译 [[email protected] day01]# vim 1.py #!/usr/bin/python        print 'hello world!' [[email protected] day01]# python 1.py hello world! 2.字节代码 Python源码文件

Python学习笔记--未经排版

Python 学习笔记 Python中如何做到Print() 不换行 答:Print("输出内容",end='不换行的分隔内容'),其中end=后面为2个单引号 注:在Python 2.x中,Print "输出内容", 即在输出内容后加一逗号 Python中 is 和 == 的区别 答:Python中的对象包含三要素:id.type.value 其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值 is判断的是a对象是否就是b对象,是通过id来

Python学习笔记_Python对象

Python学习笔记_Python对象 Python对象 标准类型 其他内建类型 类型对象和type类型对象 Python的Null对象None 标准类型操作符 对象值的比较 对象身份比较 布尔类型 标准类型的内建函数 typeObj cmpobj1 obj2 strobj reprobj typeobj isinstanceobj 标准类型的分类 存储模型 更新模型 访问模型 不支持的类型 Python学习笔记_Python对象 首先来理解一个通俗的含义,什么是对象?其实对象无论在什么语言里面

OpenCV for Python 学习笔记 三

给源图像增加边界 cv2.copyMakeBorder(src,top, bottom, left, right ,borderType,value) src:源图像 top,bottem,left,right: 分别表示四个方向上边界的长度 borderType: 边界的类型 有以下几种: BORDER_REFLICATE # 直接用边界的颜色填充, aaaaaa | abcdefg | gggg BORDER_REFLECT # 倒映,abcdefg | gfedcbamn | nmabcd

python 学习笔记 14 -- 常用的时间模块之datetime

书接上文,前面我们讲到<常用的时间模块之time>,这次我们学习datetime -- 日期和时间值管理模块 使用apihelper 查看datetime 模块,我们可以看到简单的几项: date       ---  日期对象,结构为date(year, month, day) time       ---  时间值对象,结构为 time([hour[, minute[, second[, microsecond[, tzinfo]]]]]).时间对象所有的参数都是可选的.tzinfo 可以

python 学习笔记 6 -- 异常处理

当你的程序中出现某些 异常的 状况的时候,异常就发生了.例如,当你想要读某个文件的时候,而那个文件不存在.或者在程序运行的时候,你不小心把它删除了. 那么如果你是在IDE中运行,一个错误发生,异常会被打引出来,这便是未处理异常:当异常发生时,如果没有代码去关注和处理它,这些异常会传给置在Python中的缺省处理,他会输出一些调试信息并且终止运行.如果是在IDE中,这不是什么大事,但是如果是Python程序运行中的异常,它会导致整个程序终止,对于这些情况可以使用异常来处理. 1.try..exce

python 学习笔记 3 -- 数据结构篇上

数据结构是可以处理一些 数据 的 结构 .或者说,它们是用来存储一组相关数据的.在Python中有三种内建的数据结构--列表.元组和字典.本文主要对这三种数据类型以及相关的使用做介绍,以例子的形式演示更加容易理解! 1.列表(List) 列表是处理一组有序项目的数据结构,即你可以在一个列表中存储一个 序列 的项目.在Python中,你在每个项目之间用逗号分割. 列表中的项目应该包括在**方括号**中,这样Python就知道你是在指明一个列表.一旦你创建了一个列表,你可以添加.删除或是搜索列表中的

python 学习笔记 3 -- 数据结构篇下

5.引用 当你创建一个对象并给它赋一个变量的时候,这个变量仅仅 引用 那个对象,而不是表示这个对象本身!也就是说,变量名指向你计算机中存储那个对象的内存.这被称作名称到对象的绑定.eg. [python] view plaincopy # -*- coding: utf-8 -*- shoplist = ['apple', 'mango', 'carrot', 'banana'] print "we copy the shoplist to mylist directly \"with