python基础

核心编程的笔记:

print 'hello world!'

print "%s is hello world %d" % ("Python",1)

logfile = open('/tmp/mylog.txt','a')

print >> logfile, 'Fatal error: invalid input!'

logfile.close()

raw_input()函数

操作符:+ - *  /  //(地板除)  % **(幂运算)

比较操作符:<   <=  >  >=  ==  !=  <>(不推荐)

逻辑操作符:and or  not

基本数字类型: int  long:10000000000L  bool  float:3.14159  complex:6.2 + 1.5j

for 和 range()

列表解析:

[x ** 2 for x in range(4)]

>>>0 1 4 9

文件内建函数:open(filename ,access_mode=<?>),file()

access_mode参数选择:r,r+,w,w+,a,a+,rb,r+b,wb,wb+,ab,ab+

r 打开只读文件,该文件必须存在。
r+ 打开可读写的文件,该文件必须存在。
w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。

异常:

try:

  代码块

except  错误类型,e:

  print e

函数:

def name(参数):

  代码块

类:

class name():

  ver = 1

  def __init__(self,n = 'a'):

    self.name = n

  def haha(self):

    return 'haha'

self:必须,指向类实例.

ver:静态属性

__init__:构造方法,类实例创建完成后执行,可以完成初始化工作。

haha:自定义方法.

模块

使用函数:

int(obj):转换成int

len(obj):对象长度

type(obj):返回类型(元类)

str(obj):对人友好的转换成string

help(obj):文档

dir(obj):有obj:obj属性,无obj:全局变量名字

#!/usr/bin/env python   为了可以直接用名字运行文件。可加这句话

特殊符号:#  (继续,换行代码)   ;(把多个语句写在同一行) 

理解变量赋值:

python变量赋值是地址赋值

x = 1
y = (x = x+1)

出错,赋值语句不是合法表达式,没有返回值,c语言中完全ok,然而python不行

y = x = x+1

完全没问题.

'hello'*2

'hellohello'

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

<<=   >>=  &=  ^=  |=

多元赋值:

x=y=z=1

x,y,z = 1, 1, 1

下划线:

_xxx:私有

__xx__:系统的

#/usr/bin/env python       #开始

“test module”   #模块文档


import sys    #模块导入

debug = Ture  #全局变量

class A(object):   #
    pass

def b():   #函数
    pass
       
if __main__ == '__main__'
        #主程序

引用计数:

x = 1

1对象被引用。

y = x

1对象又被引用

x = 2

1对象引用减少

y = x

1对象引用减少

1对象被回收。

del 删除引用。

以上是python的垃圾回收

os.lineseq:根据平台不同得到不同结束符

python对象:三个特征,可更改或不可更改。

1。唯一标示符,身份证

2。类型

3.值

标准类型:整型,布尔型,长整,浮点,复数,字符串,列表list,元祖tuple,dictionary

Null,文件,集合,函数,模块,类。

内部类型:代码对象(源代码),帧对象(不懂),跟踪记录,切片,省略,Xrange

对象比较:

字符串按照序列值比较

3<4<5

相当于

3<4 and 4<5

a is b       :       对象身份比较,地址是否相同

a == b     :       对象值比较,值是否相同

id(a)     :     获得身份证

有时候能用对象比较就不用值比较了,这样可能更快更好

*对于一些对象,python会缓存

例如:a =1

b =1

可能一看会以为指向不同的1

但是python,会把这种常见的1缓存,故你用id(a),id(b)会获得相同的地址,这种机制不稳定。实际没啥用。

内建函数:

cmp(a,b)

比较a,b大小,小返回负数,大正数,等于  0

str()和repr()(``操作符)

str面向玩家的友好转换。

repr()面向机器的友好转换。``(应该抛弃)和repr等价

type()和isinstance(a,b)

type过于复杂,返回一个类型的type类型类

type.IntType 可以得到一个相同的int 的type对象,这意味着,所有int类型会公用这一个对象,既然如此,尽量减少函数调用可以提高效率

同时,用 type(a) is type.IntType比较效率也会比,type(a) == type.IntType更高。

对这些类型类做一个总结就是:

标准类型类:基本,内建,数据(数据存储),对象(对数据和功能的高度抽象),原始(颗粒),类型(是一种类型)

按存储模型分类:原子类型(数值,字符串),容器类型(列表,元祖,字典)

按更新类型分类:可变(列表,字典)不可变(数字,字符串,元祖)

按访问类型分类:直接访问(数值)顺序访问(字符串,列表,元祖)映射访问(字典)

这样分类可以帮助理解,不可变理解是,里面对象占用了地址,他是不会离开的。直到被回收,所以一般我们觉得我们赋值,好像改变了,实际不过是变量换了一个地址罢了。

类型转换:

复数,浮点,长整,整。(这个顺序是默认类型转换,系统会把右边的转换成左边的)

地板除://   把小数去掉

import __future__ import division会实现真正的除法,默认是传统的除法。

 位操作符:~ (非)  <<(左移) >>(右移)  &  |   ^(异或)

五个内建数值运算函数:

abs():求绝对值(复数取模)

coerce(a,b):类型转换函数,返回一个元组,转换规则按默认规则

divmod(a,b);返回地板除和取余的结果,元组

pow(a,b):和a**b相同,若有第三个参数,则a**b%c

round():四舍五入

整型特有的函数:

hex():转十六进制

oct():转八进制

chr():将一个ascii码转成字符

ord():将一个ascii或unicode字符转成对应数值

unichr():将Unicode字符转成对应值

序列:字符串,列表,元祖

序列关系操作符:in , not in

内建类型转换函数:

list():必须是可迭代对象,转成一个列表。

tuple():变成元祖66

str(obj):对象-》字符串,对用户友好。

unicode(obj):对象-》unicode字符串。

这里转换的函数传进的是一个地址,而非一个拷贝对象,前者为浅拷贝,后者为深拷贝,并且返回的是一个新的对象。

 内建操作函数:

enumerate():必须是可迭代对象,返回一个index和value的元祖。例如((0,1)(1,'hello'))

len(seq):返回seq的长

max()和min()

revesed()

sort()

sum()

zip():

字符串:

单引双引皆ok

如前面所说,改变字符串会更新一整个字符串。

从性能角度来说,是不支持while i<len(a):这样的写法,原因是在循环中调用函数,len的实现会在每一次循环都执行一次,你可以想象,这是一个数据结构的实现,很大程度上影响了速度。

+号也是。

字符串格式化操作符:

%+(c,r,s,d,i,u,o,x,e,f,g,%)辅助操作符:*,-,+,<sp>,#,0,%,(var),m.n

原始操作符:r/R

在字符串前面加,将会忽略所有以上的格式化符号。

string内建函数:

capitalize():第一个字符大写

swapcase():转换大小写

title():标题化,所有字符开头大写

center(width):居中,空格填充

ljust(width):左对齐,空格填充

rjust(width):右对齐,空格填充

count(str,beg=0,end=len(str)):beg-end中str出现的次数

decode(encoding='utf-8') 和 encode(encoding='utf-8'):编码解码

startswith(obj,beg=0,end=len(str)):检查beg-end里面是否以obj开头

endswith(同上):同上相反

expandtabs(tab=8):默认是8,把tab换成空格

rfind(),find(str,beg=0,end=len)和 rindex(),index(...):index没找到会报错.

isalnum(),是否数字和字母,bool

isalpha(),是否纯字母字符,bool

isdecimal(),是纯否十进制数字。

isdigit(),是否纯数字

islower(),字母部分是否都小写

isupper(),大写

isnumeric(),只包含数字字符。

isspace(),只有空格

istitle(),是否标题化

join():连接(推荐)

lstrip(),strip(),rstrip(),去粗空格

replace(str1,str2,num=string,count(str1)):用str2替换str1,num次。

partition(str),rpartition(),:分成三部分,中间部分是shr。rpartition反过来切

split(str="",num=string.count(str)):以str分割,str出现的次数

splitlines():行分割

translate(str,de='')

zfill()右对齐,零填充。

列表:

append()

pop()

extend(),推荐

index()

count()

insert()

remove(obj)

reverse()

sort():不返回,在原基础上做

reversed():返回一个新对象。

sorted()

sort用的是归并排序算法。

原文地址:https://www.cnblogs.com/wuweixin/p/4924520.html