-
sorted高阶函数中传入自定义排序函数, 实现忽略大小写排序。请用functools.partial把这个复杂调用变成一个简单的函数
查看全部 -
带参数的@decorator,@functools.wraps应该放置位置
查看全部 -
import time
def performance(unit):
def performance_decorator(f):
def fn(*args, **kw):
t1 = time.time()
r = f(*args, **kw)
t2 = time.time()
if unit == "ms":
print('call %s() in %fs ms' % (f.__name__, (t2 - t1)*1000))
else:
print('call %s() in %fs s' % (f.__name__, (t2 - t1)))
return r
return fn
return performance_decorator
@performance('ms')
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
查看全部 -
import time
def performance(f):
def fn(*args, **kw):
t1 = time.time()
r = f(*args, **kw)
t2 = time.time()
print 'call %s() in %fs' % (f.__name__, (t2 - t1))
return r
return fn
@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
查看全部 -
str.upper()把字符串 str 任意字符变成大写 str.lower()把字符串str任意字符变成小写 str.capitalize()返回一个首字符大写其他字符小写的str的副本 map(f,L)把L相应数据均通过f()函数转换为一个新的list map(func_name,list_obj)高阶函数:返回list_obj中每个元素分别经过func_name作用过的新的list,例子如下: def formate_name(s): return str.capitalize(s) print map(formate_name,['adam','LINDA','jany']) 输出结果为:['Adam','Linda','Jany']
map()函数不改变原有的 list,而是返回一个新的 list。
s.capitalize()第一个大写,其他全部小写
print(str.upper()) # 把所有字符中的小写字母转换成大写字母 print(str.lower()) # 把所有字符中的大写字母转换成小写字母 print(str.capitalize()) # 把第一个字母转化为大写字母,其余小写 print(str.title()) # 把每个单词的第一个字母转化为大写,其余小写
查看全部 -
def add(x, y, f) :
return f(x) + f(y)
这里的f指函数的的定义,abs是绝对值函数,开根号函数math是包含各种函数或方法的模块,若前面是import math, 引用模块中的函数就要用格式math.sqrt()。
查看全部 -
(lambda 参数:条件/运算方式,列表、元组等)
查看全部 -
任务需要过滤一些不符合的字符,所以用filter,用于对列表每一元素做运算时,用map
查看全部 -
本身符合则返回-1
不符合自己所要求的的顺序 反而返回的是1逻辑相反
查看全部 -
在定义 Person 类时,可以为Person类添加一个特殊的__init__()方法,当创建实例时,__init__()方法被自动调用,我们就能在此为每个实例都统一加上以下属性:
class Person(object): def __init__(self, name, gender, birth): self.name = name self.gender = gender self.birth = birth
__init__() 方法的第一个参数必须是 self(也可以用别的名字,但建议使用习惯用法),后续参数则可以自由指定,和定义函数没有任何区别。
items函数,将一个字典以列表的形式返回,因为字典是无序的,所以返回的列表也是无序的。iteritems()返回一个迭代器。
setattr() 函数对应函数 getattr(),用于设置属性值,该属性不一定是存在的。语法:
setattr(object, name, value)
查看全部 -
sorted() 是高阶函数,接受一个比较函数。
cmp(x,y) 函数用于比较2个对象,如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。
查看全部 -
在Python中,类通过 class 关键字定义。以 Person 为例,定义一个Person类如下:
class Person(object): pass
按照 Python 的编程习惯,类名以大写字母开头,紧接着是(object),表示该类是从哪个类继承下来的。类的继承将在后面的章节讲解,现在我们只需要简单地从object类继承。
有了Person类的定义,就可以创建出具体的xiaoming、xiaohong等实例。创建实例使用 类名+(),类似函数调用的形式创建:
xiaoming = Person() xiaohong = Person()
查看全部 -
如果导入的模块不存在,Python解释器会报 ImportError 错误:
>>> import something Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named something
有的时候,两个不同的模块提供了相同的功能,比如 StringIO 和 cStringIO 都提供了StringIO这个功能。
这是因为Python是动态语言,解释执行,因此Python代码运行速度慢。
如果要提高Python代码的运行速度,最简单的方法是把某些关键函数用 C 语言重写,这样就能大大提高执行速度。
同样的功能,StringIO 是纯Python代码编写的,而 cStringIO 部分函数是 C 写的,因此 cStringIO 运行速度更快。
利用ImportError错误,我们经常在Python中动态导入模块:
try: from cStringIO import StringIO except ImportError: from StringIO import StringIO
上述代码先尝试从cStringIO导入,如果失败了(比如cStringIO没有被安装),再尝试从StringIO导入。这样,如果cStringIO模块存在,则我们将获得更快的运行速度,如果cStringIO不存在,则顶多代码运行速度会变慢,但不会影响代码的正常执行。
try 的作用是捕获错误,并在捕获到指定错误时执行 except 语句。
查看全部 -
分别赋值 f1,f2,f3=count()
查看全部
举报