python常用函数年头大总结

1.常用内置函数:(不必import就能够直接运用)  

   help(obj) 在线协助, obj但是任何类型

   callable(obj) 检查一个obj是不是能够像函数相同调用

   repr(obj) 得到obj的表明字符串,能够运用这个字符串eval重建该目标的一个复制

   eval_r(str) 表明合法的python表达式,回来这个表达式

   dir(obj) 检查obj的name space中可见的name

   hasattr(obj,name) 检查一个obj的name space中是否有name

   getattr(obj,name) 得到一个obj的name space中的一个name

   setattr(obj,name,value) 为一个obj的name space中的一个name指向vale这个object

   delattr(obj,name) 从obj的name space中删去一个name

   vars(obj) 回来一个object的name space。用dictionary表明

   locals() 回来一个部分name space,用dictionary表明

   globals() 回来一个大局name space,用dictionary表明

   type(obj) 检查一个obj的类型

   isinstance(obj,cls) 检查obj是不是cls的instance

   issubclass(subcls,supcls) 检查subcls是不是supcls的子类

   

 类型转化函数

   chr(i) 把一个ASCII数值,变成字符

   ord(i) 把一个字符或许unicode字符,变成ASCII数值

   oct(x) 把整数x变成八进制表明的字符串

   hex(x) 把整数x变成十六进制表明的字符串

   str(obj) 得到obj的字符串描绘

   list(seq) 把一个sequence转化成一个list

   tuple(seq) 把一个sequence转化成一个tuple

   dict(),dict(list) 转化成一个dictionary

   int(x) 转化成一个integer

   long(x) 转化成一个long interger

   float(x) 转化成一个浮点数

   complex(x) 转化成复数

   max(...) 求最大值

   min(...) 求最小值

 用于履行程序的内置函数

   complie 假如一段代码常常要运用,那么先编译,再运转会更快。

   

2.和操作体系相关的调用

 体系相关的信息模块 import sys

   sys.argv是一个list,包含一切的指令行参数.

   sys.stdout sys.stdin sys.stderr 别离表明规范输入输出,过错输出的文件目标.

   sys.stdin.readline() 从规范输入读一行 sys.stdout.write("a") 屏幕输出a

   sys.exit(exit_code) 退出程序

   sys.modules 是一个dictionary,表明体系中一切可用的module

   sys.platform 得到运转的操作体系环境

   sys.path 是一个list,指明一切查找module,package的途径.

   

 操作体系相关的调用和操作 import os

   os.environ 一个dictionary 包含环境变量的映射联系 os.environ["HOME"] 能够得到环境变量HOME的值

   os.chdir(dir) 改动当时目录 os.chdir('d:\\outlook') 留意windows下用到转义

   os.getcwd() 得到当时目录

   os.getegid() 得到有用组id  os.getgid() 得到组id

   os.getuid() 得到用户id  os.geteuid() 得到有用用户id

   os.setegid os.setegid() os.seteuid() os.setuid()

   os.getgruops() 得到用户组称号列表

   os.getlogin() 得到用户登录称号

   os.getenv 得到环境变量

   os.putenv 设置环境变量

   os.umask 设置umask

   os.system(cmd) 运用体系调用,运转cmd指令

   操作举例:

     os.mkdir('/tmp/xx') os.system("echo 'hello' > /tmp/xx/a.txt") os.listdir('/tmp/xx')

     os.rename('/tmp/xx/a.txt','/tmp/xx/b.txt') os.remove('/tmp/xx/b.txt') os.rmdir('/tmp/xx')

     用python编写一个简略的shell

       #!/usr/bin/python

       import os, sys

       cmd = sys.stdin.readline()

       while cmd:

           os.system(cmd)

           cmd = sys.stdin.readline()

           

 用os.path编写渠道无关的程序

   os.path.abspath("1.txt") == os.path.join(os.getcwd(), "1.txt")

   os.path.split(os.getcwd()) 用于分隔一个目录称号中的目录部分和文件称号部分。

   os.path.join(os.getcwd(), os.pardir, 'a', 'a.doc') 全成途径称号.

     os.pardir 表明当时渠道下上一级目录的字符 ..

   os.path.getctime("/root/1.txt")  回来1.txt的ctime(创立时刻)时刻戳

   os.path.exists(os.getcwd()) 判别文件是否存在

   os.path.expanduser('~/dir') 把~扩展成用户根目录

   os.path.expandvars('$PATH') 扩展环境变量PATH

   os.path.isfile(os.getcwd()) 判别是否是文件名,1是0否

   os.path.isdir('c:\Python26\temp') 判别是否是目录,1是0否

   os.path.islink('/home/huaying/111.sql') 是否是符号衔接 windows下不可用

   os.path.ismout(os.getcwd()) 是否是文件体系安点缀 windows下不可用

   os.path.samefile(os.getcwd(), '/home/huaying') 看看两个文件名是不是指的是同一个文件

   os.path.walk('/home/huaying', test_fun, "a.c")  

     遍历/home/huaying下一切子目录包含本目录,关于每个目录都会调用函数test_fun.

     例:在某个目录中,和他一切的子目录中查找称号是a.c的文件或目录。

       def test_fun(filename, dirname, names): //filename便是walk中的a.c dirname是拜访的目录称号

           if filename in names: //names是一个list,包含dirname目录下的一切内容

               print os.path.join(dirname, filename)

       os.path.walk('/home/huaying', test_fun, "a.c")

       

 文件操作

   翻开文件

     f = open("filename", "r") r只读 w写 rw读写 rb读二进制 wb写二进制 w+写追加

   读写文件

     f.write("a") f.write(str) 写一字符串 f.writeline() f.readlines() 与下read类同

     f.read() 全读出来 f.read(size) 表明从文件中读取size个字符

     f.readline() 读一行,到文件完毕,回来空串. f.readlines() 读取悉数,回来一个list. list每个元素表明一行,包含"\n"\

     f.tell() 回来当时文件读取方位

     f.seek(off, where) 定位文件读写方位. off表明偏移量,正数向文件尾移动,负数表明向最初移动。

       where为0表明从开端算起,1表明从当时方位算,2表明从完毕算.

     f.flush() 改写缓存

   封闭文件

     f.close()

     

 regular expression 正则表达式 import re

   简略的regexp

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

     上例中首要生成一个pattern(形式),假如和某个字符串匹配,就回来一个match object

     除某些特别字符metacharacter元字符,大多数字符都和自身匹配。

     这些特别字符是 。^ $ * + ? { [ ] \ | ( )

   字符调集(用[]表明)

     列出字符,如[abc]表明匹配a或b或c,大多数metacharacter在[]中只表明和自身匹配。例:

       a = ".^$*+?{\\|()"  大多数metachar在[]中都和自身匹配,但"^[]\"不同

       p = re.compile("["+a+"]")

       for i in a:

           if p.match(i):

               print "[%s] is match" %i

           else:

               print "[%s] is not match" %i

       在[]中包含[]自身,表明"["或许"]"匹配.用\[和\]表明.

       ^呈现在[]的最初,表明取反.[^abc]表明除了a,b,c之外的一切字符。^没有呈现在最初,即于身身匹配。

       -可表明规模.[a-zA-Z]匹配任何一个英文字母。[0-9]匹配任何数字。

       \在[]中的妙用。

         \d [0-9]

         \D [^0-9]

         \s [ \t\n\r\f\v]

         \S [^ \t\n\r\f\v]

         \w [a-zA-Z0-9_]

         \W [^a-zA-Z0-9_]

         \t 表明和tab匹配, 其他的都和字符串的表明法共同

         \x20 表明和十六进制ascii 0x20匹配

         有了\,能够在[]中表明任何字符。注:独自的一个"."假如没有呈现[]中,表明出了换行\n以外的匹配任何字符,相似[^\n].

     regexp的重复          

       {m,n}表明呈现m个以上(含m个),n个以下(含n个).  如ab{1,3}c和abc,abbc,abbbc匹配,不会与ac,abbbc匹配。

       m是下界,n是上界。m省掉表下界是0,n省掉,表上界无限大。

       *表明{,} +表明{1,} ?表明{0,1}

       最大匹配和最小匹配 python都是最大匹配,假如要最小匹配,在*,+,?,{m,n}后边加一个?.

       match object的end能够得到匹配的最终一个字符的方位。

         re.compile("a*").match('aaaa').end()     4  最大匹配

         re.compile("a*?").match('aaaa').end()    0  最小匹配

     运用原始字符串

       字符串表明办法顶用\\表明字符\.很多运用影响可读性。

       解决办法:在字符串前面加一个r表明raw格局。

       a = r"\a" print a 结果是\a

       a = r"\"a" print a 结果是\"a

     运用re模块

       先用re.compile得到一个RegexObject 表明一个regexp

       后用pattern的match,search的办法,得到MatchObject

       再用match object得到匹配的方位,匹配的字符串等信息

       RegxObject常用函数:

         >>> re.compile("a").match("abab") 假如abab的最初和re.compile("a")匹配,得到MatchObject

         <_sre.SRE_Match object at 0x81d43c8>

         >>> print re.compile("a").match("bbab")

         None 注:从str的最初开端匹配          

         >>> re.compile("a").search("abab") 在abab中查找榜首个和re_obj匹配的部分

         <_sre.SRE_Match object at 0x81d43c8>

         >>> print re.compile("a").search("bbab")

         <_sre.SRE_Match object at 0x8184e18> 和match()不同,不必从最初匹配          

         re_obj.findall(str) 回来str中查找一切和re_obj匹配的部分.

           回来一个tuple,其间元素是匹配的字符串.

       MatchObject的常用函数

         m.start() 回来开始方位,m.end()回来完毕方位(不包含该方位的字符).

         m.span() 回来一个tuple表明(m.start(), m.end())

         m.pos(), m.endpos(), m.re(), m.string()

           m.re().search(m.string(), m.pos(), m.endpos()) 会得到m自身

         m.finditer()能够回来一个iterator,用来遍历一切找到的MatchObject.

           for m in re.compile("[ab]").finditer("tatbxaxb"):

           print m.span()

     高档regexp

       | 表明联合多个regexp. A B两个regexp,A|B表明和A匹配或许跟B匹配.

       ^ 表明只匹配一行的开端行首,^只要在最初才有此特别含义。

       $ 表明只匹配一行的完毕

       \A 表明只匹配榜首行字符串的最初 ^匹配每一行的行首

       \Z 表明只匹配行一行字符串的完毕 $匹配榜首行的行尾

       \b 只匹配词的鸿沟 例:\binfo\b 只会匹配"info" 不会匹配information

       \B 表明匹配非单词鸿沟

       示例如下:

         >>> print re.compile(r"\binfo\b").match("info ") #运用raw格局 \b表明单词鸿沟

         <_sre.SRE_Match object at 0x817aa98>

         >>> print re.compile("\binfo\b").match("info ") #没有运用raw \b表明退格符号

         None

         >>> print re.compile("\binfo\b").match("\binfo\b ")

         <_sre.SRE_Match object at 0x8174948>

     分组(Group) 示例:re.compile("(a(b)c)d").match("abcd").groups()   ('abc', 'b')        

       #!/usr/local/bin/python        

       import re        

       x = """

       name: Charles

       Address: BUPT

       

       name: Ann

       Address: BUPT

       """        

       #p = re.compile(r"^name:(.*)\n^Address:(.*)\n", re.M)

       p = re.compile(r"^name:(?P<name>.*)\n^Address:(?P<address>.*)\n", re.M)

       for m in p.finditer(x):

               print m.span()

               print "here is your friends list"

               print "%s, %s"%m.groups()

     Compile Flag

       用re.compile得到RegxObject时,能够有一些flag用来调整RegxObject的具体特征.

         DOTALL, S 让.匹配恣意字符,包含换行符\n

         IGNORECASE, I 疏忽大小写

         LOCALES, L 让\w \W \b \B和当时的locale共同

         MULTILINE, M 多行形式,只影响^和$(拜见上例)

         VERBOSE, X verbose形式


上一篇:进步python履行功率的办法
下一篇:总结python 元组和列表的差异

PythonTab微信大众号:

Python技能交流合作群 ( 请勿加多个群 ):

群1: 87464755

群2: 333646237

群3: 318130924

群4: 385100854