python每日笔记
9.28
查看python包路径:
sys.path
9.4 sorted高级用法:
>>> class Student:
def __init__(self, name, grade, age):
self.name = name
self.grade = grade
self.age = age
def __repr__(self):
return repr((self.name, self.grade, self.age))
>>> student_objects = [
Student('john', 'A', 15),
Student('jane', 'B', 12),
Student('dave', 'B', 10),
]
>>> sorted(student_objects, key=lambda student: student.age) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
9.3 random的重要方法:
random.randint(1,10) 返回一个给定区间的整数
random.sample(seq, n) 随机返回序列中的N个值, 获取的值不重复!!
choice(seq) 从序列seq中返回随机的元素
random.random()函数是这个模块中最常用的方法了,它会生成一个随机的浮点数,范围是在0.0~1.0之间。
random.uniform()正好弥补了上面函数的不足,它可以设定浮点数的范围,一个是上限,一个是下限。
random.randint()随机生一个整数int类型,可以指定这个整数的范围,同样有上限和下限值,python random.randint。
random.choice()可以从任何序列,比如list列表中,选取一个随机的元素返回,可以用于字符串、列表、元组等。
random.shuffle()如果你想将一个序列中的元素,随机打乱的话可以用这个函数方法。
9.2 itertools
http://python.jobbole.com/84206/
定义了一系列的方法,能帮助我们创建能够进行高效遍历迭代的迭代器,里面包含不少有意思并且有用的方法,比如像chain
, izip/izip_longest
, combinations
, ifilter
等等。
https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001415616001996f6b32d80b6454caca3d33c965a07611f000
9.1 lambda
用法: f = lambda x:x+1, x为变量即调用的时候传入的参数值f(x), 结果为x+1
f = lambda : time.time(), 即生成一个函数,不需要传入参数, 返回time.time()
lambda x:x+2(3), 直接返回5
f = lambda x,y,z : x*y +z , 用f(1,2,3)来调用
8.31 python sorted的详细超好用用法:
http://www.jb51.net/article/57678.htm
http://www.cnblogs.com/sysu-blackbear/p/3283993.html
8.31 py2到py3的差别
http://blog.csdn.net/samxx8/article/details/21535901
8.31 python 代码对象/编译 complie!!!
http://blog.csdn.net/u010786109/article/details/51504139
py2 funcA.func_code
py3 funcA.__code__
~~~~~
是否可以调用:
callable(dir)
callable('a')
8.27继续:http://blog.csdn.net/orangleliu/article/details/8752058
8.26
经常看到 __all__
变量再各种 __init__.py
文件中,谁能解释为什么那么做呢?
解答
它是一个string元素组成的list变量,定义了当你使用 from <module> import *
导入某个模块的时候能导出的符号(这里代表变量,函数,类等)。
举个例子,下面的代码在 foo.py
中,明确的导出了符号 bar
, baz
__all__ = ['bar', 'baz']
waz = 5
bar = 10
def baz(): return 'baz'
8.26
py2打印不换行 print x,
py3打印不换行,print(x,end='')
8.26
Python strip()函数: 只要s的开头或者结尾有RM里面的任何一个字母,就会一直删除下去,直到下一个字母不包含在RM中
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
注意:
1. 当rm为空时,默认删除空白符(包括'\n', '\r', '\t', ' ')
2.
>>> a='123123ab1234123'
>>> a.strip('312')
'ab1234'
8.26
闭包: 如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure).
def get1(a):
print(a)
def get2(b):
print('this is b: ', b)
return get2
s=get1(1) ##返回的是一个函数
s(22)
详解:
http://www.jb51.net/article/54498.htm
装饰器也是类似闭包的实现, 即通过返回一个函数来操作这个函数的签名