Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61929
  • 博文数量: 17
  • 博客积分: 25
  • 博客等级: 民兵
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2010-05-07 11:14
个人简介

。roth lower(substr(ename,2,length(ena)))

文章分类

全部博文(17)

文章存档

2017年(14)

2013年(3)

我的朋友

分类: Python/Ruby

2017-02-15 07:23:31

一点笔记

format 数字处理

点击(此处)折叠或打开

  1. d,digit f, float 突破6位浮点小数点的限制

  2.     '{:d}'.format(111)

  3.     '{:f}'.format(3.14159)

  4.     '{:12f}'format(3.141592123123)

  5.      '{:.^16d}'.format(123123123213) #居中对齐, . 填充

  6.     ‘..123123123213..'

  7.     #. 截断长度 15位小数

  8.     '{:^.15f}'.format(1.23123123213)

  9.     '1.231231232130000'

  10.     # 6表示总长度,4表示小数位置

  11.     '{:6.4f}'.format(1.23123123213)

  12.     '1.2312'

  13.     #6表示总长度,6表示小数位置,总长度小于实际位数时,总长度失效

  14.      '{:6.6f}'.format(1.23123123213)'1.231231'

  15.     #修改填充符

  16.     _ 为填充符,> 右对齐,不够12为,以 _ 填充

  17.     '{:_>12.6f}'.format(1.23123123213)

  18.     '1.231231'

  19.     #空格解决正负数对齐的问题

  20.     '{: d}'.format(+6)

  21.     ' 6'

  22.      '{: d}'.format(-6)

  23.     '-6'

  24. format格式化



  25.     '{:_>15.2f}'.format(121213.12312121212)
  26.     '______121213.12'



函数式编程

lambda表达式 匿名函数

点击(此处)折叠或打开


  1. f = lambda x,y,z:x+y+z 
    #lambda x,y,z为传入三个参数,以冒号分隔,执行x+y+z 
    print(f(3,4,5))
    print f(3,4,5)
    12
reduce*

点击(此处)折叠或打开

  1. lis = range(1,6)
  2.     [1,2,3,4,5]
  3.  print reduce((lambda x,y:x*y), range(1,6))
  4.  #reduce是对元素进行累加操作,比如每个数做同样的操作
  5.  120

filter  #对序列进行过滤,最终获得符合自己要求的序列
map #遍历序列,对每一个元素进行操作,最终获取一个新的序列
yield #对序列中的元素进行累积操作,直到最后一个元素结束,从而得到最终的结果

zip

点击(此处)折叠或打开

  1. #有两个列表,
  2. list1 = ['key1','key2','key3']
  3. list2 = ['1','2','3']
  4. #把他们转为这样的字典:{'key1':'1','key2':'2','key3':'3'}
  5. dict(zip(list1,list2))

  6. {'key1':'1','key2':'2','key3':'3'}

装饰器

内置装饰器:
  • staticmethod 是类静态方法,其跟成员方法的区别是没有 self 参数,并且可以在类不进行实例化的情况下调用
  • classmethod 与成员方法的区别在于所接收的第一个参数不是 self (类实例的指针),而是cls(当前类的具体类型)
  • property 是属性的意思,表示可以通过通过类实例直接访问的信息

点击(此处)折叠或打开

  1. class Rabbit(object):
  2.     @staticmethod #把类中定义的实例方法变成静态方法
  3.     def newRabbit(name):
  4.         return Rabbit(name)
  5.     @classmethod    #把类中定义的实例方法变成 类方法
  6.     def newRabbit2(cls):
  7.         return Rabbit('')
  8.      
  9.     @property        #把类中定义的实例方法变成 类属性,只读属性
  10.     def name(self):
  11.         return self._name
  12.     @name.setter    #把类中定义的实例方法变成 类属性,可读可写
  13.     def name(self, name):
  14.         self._name = name


点击(此处)折叠或打开

  1. #-*-coding:utf-8 -*-

  2. import math
  3. import time
  4. from functools import wraps



  5. def deco(func):
  6.     print "Enter deco"
  7.     #@wraps(func)
  8.     # def wrapper(*args, **kwargs):
  9.     # print "Enter deco wrapper"
  10.     # start = time.time()
  11.     # func(*args, **kwargs)
  12.     # end = time.time()
  13.     # msecs = (end - start)*1000
  14.     # print "-->:%s ms" % msecs
  15.     def wrapper(*args, **kwargs):
  16.         print "Enter deco wrapper"
  17.         start = time.time()
  18.         func(*args, **kwargs)
  19.         end = time.time()
  20.         msecs = (end - start)*1000
  21.         print "-->:%s ms" % msecs
  22.     return wrapper


  23. class MathFuc:

  24.     __X = 1

  25.     def jia(self,x,y):
  26.         return x + y

  27.     def cheng(self,x ,y):
  28.         return x * y

  29.     def testFuc(self,x, o ,y):
  30.         operate = {'+':self.jia,'*':self.cheng}

  31.         print operate.get(o)(x, y)
  32.         print 'operate[o](x, y):',operate[o](x, y)
  33.         print '__X is old', self.__X


  34.     @deco
  35.     def myfunc(self,a,b):
  36.         print "start func"
  37.         time.sleep(0.8)
  38.         print "end func"
  39.         print "rest is %s"%(a+b)


  40.     @classmethod
  41.     def tearDownClass(self):
  42.         MathFuc.__X = 10
  43.         print 'MathFuc Down X is ', MathFuc.__X

  44.     @staticmethod
  45.     def staticClass():
  46.         MathFuc.__X = 20
  47.         print 'static MathFuc X is ', MathFuc.__X


  48. if __name__ =='__main__':

  49.     fun = MathFuc()
  50.     
  51.     fun.myfunc(6, 7)
  52.     
  53.     print fun.myfunc.__name__




functools 模块 2.5以上版本支持


wraps(wrapped, assigned): 

   
函数是有几个特殊属性比如函数名,在被装饰后,上例中的函数名foo会变成包装函数的名字wrapper,如果你希望使用反射,可能会导致意外的结果。这个装饰器可以解决这个问题,它能将装饰过的函数的特殊属性保留。

点击(此处)折叠或打开

  1. import time
  2. import functools
  3.  
  4. def timeit(func):
  5.     @functools.wraps(func)
  6.     def wrapper():
  7.         start = time.clock()
  8.         func()
  9.         end =time.clock()
  10.         print 'used:', end - start
  11.     return wrapper
  12.  
  13.     @timeit
  14.     def foo():
  15.         print 'in foo()'
  16.  
  17.     foo()
  18.         print foo.__name__

首先注意第5行,如果注释这一行,foo.name将是'wrapper'。另外相信你也注意到了,这个装饰器竟然带有一个参数。实际上,他还有另外两个可选的参数,assigned中的属性名将使用赋值的方式替换,而updated中的属性名将使用update的方式合并,你可以通过查看functools的源代码获得它们的默认值。对于这个装饰器,相当于wrapper = functools.wraps(func)(wrapper)。

total_ordering(cls): 

它是在Python 2.7后新增的。它的作用是为实现了至少ltlegtge其中一个的类加上其他的比较方法,这是一个类装饰器





旧版取字符

点击(此处)折叠或打开

  1. 字符串格式化

  2. 旧版

  3.  左对齐,截取+填充空格

  4.      '%-17.8s' % ('Hangyuan Python')

  5.     'Hangyuan        '
  6. 右对齐,截取+填充空格
  7.      '%+10.8s' % ('Hangyuan Python:192.128.12.1|21.22.22.22|23.23.22.22')
    '  Hangyuan'

阅读(676) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~