设为首页 收藏本站
查看: 1572|回复: 0

[经验分享] python标准库学习3

[复制链接]

尚未签到

发表于 2015-4-26 09:28:24 | 显示全部楼层 |阅读模式
import operator
sequence = 1, 2, 4
print "add", "=>", reduce(operator.add, sequence)
print "sub", "=>", reduce(operator.sub, sequence)
print "mul", "=>", reduce(operator.mul, sequence)
print "concat", "=>", operator.concat("spam", "egg")
print "repeat", "=>", operator.repeat("spam", 5)
print "getitem", "=>", operator.getitem(sequence, 2)
print "indexOf", "=>", operator.indexOf(sequence, 2)
print "sequenceIncludes", "=>", operator.sequenceIncludes(sequence, 3)

  add => 7
  sub => -5
  mul => 8
  concat => spamegg
  repeat => spamspamspamspamspam
  getitem => 4
  indexOf => 1
  sequenceIncludes => False


注意copy中的一些问题:




import copy
a = [[1], [2], [3]]
b = copy.copy( a )
print "before", "=>"
print a
print b
# modify original
a[0][0] = 0
a[1] = None
print "after", "=>"
print a
print b

  输出的结果是:
  before =>
  [[1], [2], [3]]
  [[1], [2], [3]]
  after =>
  [[0], None, [3]]
  [[0], [2], [3]]
  测量算法的运行时间:



import time
def procedure():
time.sleep( 2.5 )
# measure process time
t0 = time.clock()
procedure()
print time.clock() - t0, "seconds process time"
# measure wall time
t0 = time.time()
procedure()
print time.time() - t0, "seconds wall time"

  循环读文本文件:



import fileinput
import sys
for line in fileinput.input( "../src/hello.xml" ):
sys.stdout.write( "-> " )
sys.stdout.write( line )



import fileinput
import glob
import string, sys
for line in fileinput.input( glob.glob( "../src/hello.xml" ) ):
if fileinput.isfirstline(): # first in a file?
sys.stderr.write( "-- reading %s --\n" % fileinput.filename() )
sys.stdout.write( str( fileinput.lineno() ) + " " + string.upper( line ) )

  复制文件的操作:



import os , shutil
print os.listdir( "../src" )
for file in os.listdir( "../src" ):
if os.path.splitext( file )[1] == ".py":
os.mkdir( "../src/back" )
print file
shutil.copy( file, os.path.join( "back", file ) )


  可以使用shutil开复制整个目录,然后删除目录



import os , shutil
print os.listdir( ".." )
shutil.copytree("../src", "../src1")
shutil.rmtree( "../src1" )

  想内存文件写入内容:



import StringIO
file = StringIO.StringIO()
file.write( "This man is no ordinary man. " )
file.write( "This is Mr. F. G. Superman." )
print file.getvalue()

  使用StringIO模块捕获输出:



import StringIO
import string, sys
stdout = sys.stdout
sys.stdout = file = StringIO.StringIO()
print """a"""
sys.stdout = stdout
print string.upper( file.getvalue() )

  结果输出A
  也可以使用cStringIO:



import cStringIO
file = cStringIO.StringIO( "asdaskdgaksdgkasdja" )
print file.getvalue()
print file.read()

  小技巧:由于cStringIO比StringIO的效率高一点,但是兼容性不行,所以可以使用下面的语句:



try:
import cStringIO
StringIO = cStringIO
except ImportError:
import StringIO
print StringIO

  类继承的时候构造函数的一点点问题:



class A:
def __init__( self ):
pass
class B( A ):
def __init__( self ):
#A.__init__( self )
super( B, self ).__init__( self )

  对字典使用“+”法



import UserDict
class Add( UserDict.UserDict ):
def __init__( self, dict = {}, **kwargs ):
UserDict.UserDict.__init__( self )
self.update( dict )
self.update( kwargs )
def __add__( self, other ):
dict = Add( self.data )
dict.update( other )
return dict
a = Add( a = 1 )
b = Add( b = 2 )
print a + b

  输出的结果为:{'a': 1, 'b': 2}
  实例类似一个普通的列表对象, 但它允许你通过赋值为列表添加项目.



import UserList
class AutoList( UserList.UserList ):
def __init__( self ):
super( AutoList, self ).__init__( self )
def __setitem__( self, i, item ):
if i == len( self.data ):
self.append( item )
else:
self.data = item
list = AutoList()
for i in range( 10 ):
list = i
print list        

  输出的结果为:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  随机数:



import random
for i in range(5):
# random float: 0.0

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-60765-1-1.html 上篇帖子: python 科学计算 下篇帖子: Python 2.7 Tutorial —— 浮点数
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表