python基础技巧

python内置函数

查看所有内置函数

dir(__builtin__)

异常和警告:都是BaseException子类

ArithmeticError,AssertionError,AttributeError,Exception,BaseException,BufferError,BytesWarning,DeprecationWarning,EOFError,EnvironmentError,FloatingPointError,FutureWarning

IOError,ImportError,ImportWarning,IndentationError,IndexError,KeyError,LookupError,MemoryError,NameError,NotImplementedError,OSError

OverflowError,PendingDeprecationWarning,ReferenceError,RuntimeError,RuntimeWarning,StandardError,SyntaxError

SyntaxWarning,SystemError,TabError,TypeError,GeneratorExit,KeyboardInterrupt,StopIteration,SystemExit

UnboundLocalError,UnicodeDecodeError,UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,UserWarning,ValueError,Warning,ZeroDivisionError


abs:取绝对值

In [162]: abs(-1)
Out[162]: 1

all:参数list全部为真 返回True

In [163]: all([1,2,3])
Out[163]: True
In [164]: all([1,2,0])
Out[164]: False

any:参数list有一个为真 返回True

In [165]: any([1, 0, False])
Out[165]: True
In [166]: any([0, False])
Out[166]: False

basestring:字符串父类 str unicode 确定某一个对象是否是一个字符串的时候 用它来比较 参考isinstance

callable:判断某个对象 是否可以当作函数调用

In [172]: callable(True)
Out[172]: False
In [173]: callable(abs)
Out[173]: True

classmethod:装饰器 将类名 作为第一个参数隐式传递

class Hello(object):
    @classmethod
    def print_hello(cls):
        print "Hello World"


In [175]: Hello.print_hello()
Out[175]: Hello World

cmp:比较函数

In [176]: cmp(1,1)
Out[176]: 0
In [177]: cmp(1,2)
Out[177]: -1
In [178]: cmp(2,1)
Out[178]: 1

delattr:删除属性

dir:查看对象的属性方法

divmod:除法取值和余数

In [179]: divmod(5,2)
Out[179]: (2, 1)

eval:把字符串当代码执行 危险

In [197]: eval('2+3')
Out[197]: 5
In [198]: exec 'a=1'
In [199]: a
Out[199]: 1

file:同open

filter:对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple

In [202]: filter(lambda x: x != 2, [1, 2, 3])
Out[202]: [1, 3]

getattr:调用对象的某个属性

hasattr:判断对象是否有某个属性

hash:哈希函数

help:查看对象的帮助信息

id:查看对象的内存地址

isinstance:比较对象类型相同

In [206]: isinstance('a', unicode)
Out[206]: False
In [207]: isinstance('a', str)
Out[207]: True
In [208]: isinstance('a', basestring)
Out[208]: True
In [209]: isinstance(u'a', basestring)
Out[209]: True

map:对sequence中的item依次执行function(item),见执行结果组成一个List返回

In [210]: map(lambda x: x*2, [1,2,3])
Out[210]: [2, 4, 6]

max:获取最大值

In [211]: max([5,2,3])
Out[211]: 5

min:获取最小值

In [212]: min([5,2,3])
Out[212]: 2

object:基类

open:打开本地文件

pow:计算整形的N次方

In [213]: pow(3,2)
Out[213]: 9

range:获取一段有序整形列表

reduce:对sequence中的item顺序迭代调用function,如果有starting_value,还可以作为初始值调用

In [215]: reduce(lambda x,y: x * y, [2,3,4])
Out[215]: 24

reload:重新加载一个已经导入过的包

repr:把某个对象显示成字符串 

reversed:排序 倒叙

In [220]: list(reversed([1,3,2]))
Out[220]: [2, 3, 1]

round:取小数点后几位

In [224]: round(2.1234, 3)
Out[224]: 2.123

set:集合 去重

In [225]: set([1,2,1,3])
Out[225]: {1, 2, 3}
In [226]: list(set([1,2,1,3]))
Out[226]: [1, 2, 3]

setattr:给某个对象的属性赋值

sorted:排序

In [234]: sorted([1,4,3,])
Out[234]: [1, 3, 4]

staticmethod:静态装饰器 不传递类名 参考classmethod

sum:求和

In [236]: sum([3,4,5,6])
Out[236]: 18

super:调用父类

xrange:同range 区别调用的时候才生成对应的值

zip:把两个数据合并到一起 通常转成字典使用

In [238]: zip([1,2], [3,4], [5,6])
Out[238]: [(1, 3, 5), (2, 4, 6)]
In [239]: zip(['a','b'], [3,4])
Out[239]: [('a', 3), ('b', 4)]
In [240]: dict(zip(['a','b'], [3,4]))
Out[240]: {'a': 3, 'b': 4}

execfile:执行文件中的python代码

iter:创建一个迭代对象




下面为不常用的 或者 一眼就能看出来对象 谁有功夫谁整理吧

这是网上找到的链接 http://jianfeihit.iteye.com/blog/1835272 供参考

apply:当函数的参数已经存在列表或者元组中 apple(tset, (1,2)) 等同于 test(1,2)

Ellipsis:省略 没啥用 自行baidu

False

None

NotImplemented:未现实的函数使用 reutrn NotImplemented 变量可以和整形字符串比较均为False

True

tuple

type

unicode

vars

str

slice:切片

raw_input

print

property

oct

next

bin:整形2进制

bool

buffer

bytearray

bytes

issubclass

len

license

list

locals:局域变量

long

chr:0-255整数 返回对应的字符

unichr:同chr返回unicode类型

ord:chr配对函数

coerce:把两个参数 转成同类型 小对象往大对象转 例如 整形转浮点数

compile:

complex:将source编译为代码或者AST对象。代码对象能够通过exec语句来执行或者eval()进行求值。

input

int

intern

dict

enumerate

float

format

frozenset

globals:全局变量

memoryview

hex


python技巧

1.格式化字符串

因为python中所有类型都可以转成字符串 所以可以只使用%s

格式 描述
%% 百分号标记
%c 字符及其ASCII码
%s 字符串
%d 有符号整数(十进制)
%u 无符号整数(十进制)
%o 无符号整数(八进制)
%x 无符号整数(十六进制)
%X 无符号整数(十六进制大写字符)
%e 浮点数字(科学计数法)
%E 浮点数字(科学计数法,用E代替e)
%f 浮点数字(用小数点符号)
%g 浮点数字(根据值的大小采用%e或%f)
%G 浮点数字(类似于%g)
%p 指针(用十六进制打印值的内存地址)
%n 存储输出字符的数量放进参数列表的下一个变量中


代码例子

In [244]: "%s:%s" % ('name', 'age', )
Out[244]: 'name:age'

In [245]: "%(name)s: %(age)s" % {'name': 'xiaoming', 'age': 18}
Out[245]: 'xiaoming: 18'

2.ipython和断点

ipython为交互式解释器

断点方式

from IPython import embed
embed()

import pdb
pdb.set_trace()

3.python切片

In [255]: st
Out[255]: 'abcdefg'
In [256]: st[:2]
Out[256]: 'ab'
In [257]: st[::2]
Out[257]: 'aceg'
In [258]: li
Out[258]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [259]: li[:5]
Out[259]: [0, 1, 2, 3, 4]
In [260]: li[:5:3]
Out[260]: [0, 3]
In [261]: li[::-1]
Out[261]: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]
In [262]: li[::-2]
Out[262]: [9, 7, 5, 3, 1]

4.列表推倒

In [264]: li
Out[264]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
In [265]: [x*3 for x in li]
Out[265]: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]

In [267]: [x*3 for x in li if x%2 == 0]
Out[267]: [0, 6, 12, 18, 24]

5.正则表达式

详情见链接

6.三元表达式

In [269]: 1 if True else 2
Out[269]: 1

In [270]: 1 if False else 2
Out[270]: 2

7.lambda匿名函数

In [271]: lambda x,y : x + y
Out[271]: <function __main__.<lambda>>
In [272]: def test(x,y):
   .....:     return x + y
   .....: 
In [273]: test
Out[273]: <function __main__.test>
In [275]: (lambda x,y : x + y)(1,2)
Out[275]: 3
In [276]: test(1,2)
Out[276]: 3

8.变量和字典key

  1. 空类型 None
  2. 布尔类型 Boolean
  3. 整型 Int
  4. 浮点型 Float
  5. 字符串 String
  6. 元组 Tuple
  7. 列表 List
  8. 字典 Dict
  9. 集合 Set

其中7,8,9因为值可变 不可以作为字典类型的key

9.变量布尔类型的判断

In [284]: bool(1),bool(0),bool(-1)
Out[284]: (True, False, True)
In [285]: bool(1.1),bool(0.0),bool(-1.1)
Out[285]: (True, False, True)
In [286]: bool(None)
Out[286]: False
In [287]: bool(''),bool('a')
Out[287]: (False, True)
In [288]: bool(()),bool((1, ))
Out[288]: (False, True)
In [289]: bool([]),bool([1, ])
Out[289]: (False, True)
In [290]: bool({}),bool({'name': 'xiaoming'})
Out[290]: (False, True)
In [291]: bool(set([])),bool(set([1]))
Out[291]: (False, True)



python类内置函数详解

函数 解释
__init__(self, *args, **kwargs) 初始化对象时执行
__del__(self) 删除对象执行
__new__(self, *args, *kwargs) 实例的生成操作 必须返回实例 必须继承object 单例模式(同一个类)
__str__(self) 字符串转换或print执行调用
__getitem__(self, key) 通过索引对应得值
__setitem__(self, key, value) 增加索引和对应得值
__len__(self) len()调用
__cmp__(src, dst) 比较src和dst
__gt__(self,other) 大于
__lt__(self,other) 小于
__ge__(self,other) 大于等于
__le__(self,other) 小于等于
__eq__(self,other) 等于
__call__(self, **args) 对象作为函数调用
__iter__(self) 迭代对象调用
__getattr__(self, key) 获取属性
__setattr__(self, key, value) 增加属性
__delattr__(self, key) 删除属性
__getattribute__ 类似__getattr__


代码实例

# -*- coding: utf-8 -*-
class classGetSet(object):
    kk = {}
    def __init__(self):
        print '__init__'
    def __getitem__(self, key):
        print '__getitem__'
        return self.kk[key]
    def __setitem__(self, key, value):
        print '__setitem__'
        self.kk[key] = value
    def __del__(self):
        print '__del__'
    def __str__(self):
        print '__str__'
        return '__str__'
    def __len__(self):
        print '__len__'
        return len(self.kk.keys())
    def __cmp__(src, src2):
        return True
    def __iter__(self):
        print "__iter__ called"
        for x in range(10):
            yield x

if __name__ == '__main__':
    # 实例化 调用__init__
    cla = classGetSet()
    # 调用 __setitem__
    cla[0] = 'key1'
    cla['second'] = 'key2'
    # 调用 __getitem__
    print cla[0]
    # 调用 __iter__
    for c in cla:
        print c
    # 调用 __str__
    print str(cla)
    # 调用 __len__
    print len(cla)
    # 调用 __cmp__
    print 2 > cla
    # 如果查询 无饮用后 调用 __del__
    del cla


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值