Crossin的编程教室今天看完了,最后几节课看的比较乱,接下来开始迷茫了,感觉学的很认真了,可是想想之前不知道学了点什么呢?又想不出个所以然来,接下来,明天不知道该怎么开始了?
random.random()
生成一个0到1之间的随机浮点数,包括0但不包括1,也就是[0.0, 1.0)。
random.uniform(a, b)
生成a、b之间的随机浮点数。不过与randint不同的是,a、b无需是整数,也不用考虑大小
random.choice(seq)
从序列中随机选取一个元素。seq需要是一个序列,比如list、元组、字符串。
random.randrange(start, stop, step)
生成一个从start到stop(不包括stop),间隔为step的一个随机数。start、stop、step都要为整数,且start<stop。
random.sample(population, k)
从population序列中,随机获取k个元素,生成一个新序列。sample不改变原来序列。
random.shuffle(x)
把序列x中的元素顺序打乱。shuffle直接改变原有的序列。
在计算机领域有一个特殊的时间,叫做epoch,它表示的时间是1970-01-01 00:00:00 UTC。
Python中time模块的一个方法
time.time()
返回的就是从epoch到当前的秒数(不考虑闰秒)。这个值被称为unix时间戳。
time.sleep(secs)
它可以让程序暂停secs秒。例如:
import time
print 1
time.sleep(3)
print 2
pickle。它可以把任何 Python 对象存储在文件中,再把它原样取出来
list_1 = [1, 2, 3, 5, 8, 13, 22]
list_2 = [i for i in list_1 if i % 2 == 0]
print list_2
提取偶数组成新列表
当你没有提供足够的参数时,会用默认值作为参数的值。
例如:
定义
def func(arg1=1, arg2=2, arg3=3):
print arg1, arg2, arg3
调用
func(2, 3, 4)
func(5, 6)
func(7)
输出为
2 3 4
5 6 3
7 2 3
调用都是错误的:
func(arg1=13, 14)
func(15, arg1=16)
func(*args) 方式是把参数作为 tuple 传入函数内部。而 func(**kargs) 则是把参数以键值对字典的形式传入。字典是无序的
带有默认值的形参(arg=)须在无默认值的形参(arg)之后;
元组参数(*args)须在带有默认值的形参(arg=)之后;
字典参数(**kargs)须在元组参数(*args)之后
而在函数被调用时,参数的传递过程为:
1.按顺序把无指定参数的实参赋值给形参;
2.把指定参数名称(arg=v)的实参赋值给对应的形参;
3.将多余的无指定参数的实参打包成一个 tuple 传递给元组参数(*args);
4.将多余的指定参数名的实参打包成一个 dict 传递给字典参数(**kargs)
lambda 参数列表: 表达式
sum = lambda a, b, c: a + b + c
print sum(1, 2, 3)
“全局变量” 给变量名前加上 global 关键字,这样其作用域就不再局限在函数块中,而是全局的作用域。
from functools import reduce
lst = xrange(1, 101)
def add(x, y):
return x + y
print reduce(add, lst)
如果把刚才的 lst 换成 [1,2,3,4,5],那 reduce(add, lst) 就相当于 ((((1+2)+3)+4)+5)
reduce((lambda x, y: x + y), xrange(1, 101))
lst_1 = (1,2,3,4,5,6) lst_2 = list(map(lambda x: x * 2, lst_1)) #比Python2中多了个list() print (lst_2)
python 里有一个 thread 模块,其中提供了一个函数:
start_new_thread(function, args[, kwargs])
function 是开发者定义的线程函数,
args 是传递给线程函数的参数,必须是tuple类型,
kwargs 是可选参数