python functools - partial(偏函数)
摘要:# partial函数# 偏函数,把函数的部分参数固定下来,相当于为部分参数添加了一个固定的默认值,形成一个新的函数并返回# 从partial生成的新函数,是对原函数的封装import functoolsdef add(x, y) -> int: return x + ynewadd = funct
阅读全文
posted @
2018-09-24 18:03
栗子测试
阅读(268)
推荐(0)
python 参数注解inspect
摘要:# 静态语言:编译过程中会检查,会发下问题# 动态语言:只有在运行时才会发现问题# 1 由于编译期间不做任何检查,直到运行期间我呢提才会暴露# 2 函数使用者并不知道参数类型的时候,容易传错参数类型# 函数注解:给函数的形参一个类型,并有指向的return值# python3.5开始引入# 可以用于
阅读全文
posted @
2018-09-16 23:04
栗子测试
阅读(1550)
推荐(0)
python 堆排序
摘要:# 二叉树的遍历# 对二叉树中的所有元素不重复的访问一遍# 广度优先遍历# 层序遍历# 从第一层开始,没一层从左至右遍历元素# 深度优先遍历# 假设树的根节点为D,左子树为L,右子树为R,且要求L一定在R之前,则有以下遍历方式:# 前序遍历:也叫先序遍历,也叫先根遍历,DLR# 中序遍历:也叫中根遍
阅读全文
posted @
2018-09-16 11:05
栗子测试
阅读(438)
推荐(0)
python functools
摘要:# 作用:消除装饰器副作用 # functools模块# update_wrapper(wapper, wrapped, assigned=WRAPPER_ASSIGNMENTS, updated=WRAPPER_UPDATES)# 类似copy_properties功能# wrapper包装函数,
阅读全文
posted @
2018-09-15 15:33
栗子测试
阅读(278)
推荐(0)
python 装饰器
摘要:# 装饰器 - @ - 拿到内层函数的引用 - 直接使用内层函数# 增强加法函数,输出被调用过及调用的参数def add(x, y): print("call fun {}, {}+{}".format(add.__name__, x, y)) # 输出到控制台 return x + yprint(
阅读全文
posted @
2018-09-09 18:27
栗子测试
阅读(220)
推荐(0)
python 柯里化
摘要:# 柯里化# 将原来接收两个参数的函数 变成 接收一个参数的新的函数的过程# 新的函数返回一个以原有第二个参数为参数的函数# z = f(x, y) 变成 z = f(x)(y)def add(x, y): return x + y# 通过嵌套函数可以实现柯里化def add(x): def _ad
阅读全文
posted @
2018-09-09 11:27
栗子测试
阅读(165)
推荐(0)
python 高阶函数
摘要:# 高阶函数# 数学概念 y = g(f(x))# 高阶函数必须满足至少一个条件# 1 接受一个或多个函数作为参数(如:f(x))# 2 返回一个函数对象def counter(base): def inner(step = 1): # 当成本地变量来理解 nonlocal base base =
阅读全文
posted @
2018-09-09 11:07
栗子测试
阅读(225)
推荐(0)
python 树
摘要:# 树# 非线性结构,每个元素可以有多个前驱和后继# 树是n个元素的集合(n>=0)# n=0时,称为空树# 树只有一个特殊的没有前驱的元素,叫做根root# 树中除了根节点外,其他元素只能有一个前驱,可以有多个后继# 递归# 树T是n个元素的集合(n>=0)。n=0时,称为空树# 有且只有一个特殊
阅读全文
posted @
2018-09-09 11:04
栗子测试
阅读(168)
推荐(0)
python 函数销毁
摘要:# 函数销毁# 全局函数销毁# 重新定义同名函数# del语句删除函数对象# 程序结束时def foo(xyz=[], u='abc', z=123): xyz.append(1) return xyzprint(id(foo))def foo(xyz=[]): xyz.append(1) retu
阅读全文
posted @
2018-09-08 10:36
栗子测试
阅读(1235)
推荐(0)
python datetime
摘要:import datetimeimport time# 模块.类.方法()datetime.datetime.now()# datetime类today = datetime.datetime.today()now = datetime.datetime.now()utcnow = datetime
阅读全文
posted @
2018-08-29 13:01
栗子测试
阅读(370)
推荐(0)
python 选择排序
摘要:# 选择排序:选择极大或极小值,跟第一个进行交换lst = [1, 3, 9, 8, 5, 2, 7, 4, 6]length = len(lst)for i in range(length): maxValueIndex = i # 先假定第一个为最大值 for j in range(i+1, l
阅读全文
posted @
2018-08-29 13:00
栗子测试
阅读(159)
推荐(0)
python 冒泡排序
摘要:# 冒泡排序:基础冒泡排序,每趟比较次数减1次 lst = [1, 9, 8, 5, 6, 7, 4, 3, 2]length = len(lst)for i in range(length): for j in range(length-i-1): if lst[j] > lst[i]: tmp
阅读全文
posted @
2018-08-29 12:58
栗子测试
阅读(242)
推荐(0)
python 返回值和作用域
摘要:# 函数返回值# return [1, 3, 5] 返回一个列表# return 1, 3, 5 看似返回一个值,其实是被隐式的封装成一个元组# x, y, z, = XX() 用来接收返回值# 函数嵌套 - 引出作用域的概念def outer(): def inner(): print('inne
阅读全文
posted @
2018-08-29 12:56
栗子测试
阅读(401)
推荐(0)
python 插入排序
摘要:# 插入排序# 在未排序的序列中,构建一个子序列排序,直到全部数据排序完成# 将待排序的数据,插入到已经排序的序列中# 适用于小规模数据排序# 直接插入排序nums = [1,9, 8, 5, 6, 7, 4, 3, 2]nums = [0] + nums # 增加一个哨兵位,待比较数字0lenth
阅读全文
posted @
2018-08-29 12:56
栗子测试
阅读(156)
推荐(0)
python 参数解构
摘要:# 参数解构:传参时,可以在集合类型前使用*或**把集合类型结构解开# 非字典类型,使用*# 字典类型,使用**# 注:提取出来的元素的个数要与形参个数相同def add(x, y): print(x + y)add(4, 5)t = (4, 8)print(*t)add(*t)lst = [1,
阅读全文
posted @
2018-08-29 12:55
栗子测试
阅读(923)
推荐(0)
python 函数
摘要:# 函数作用:封装;封装作用:复用# 加法def add(x, y): result = x + y return resultresult = add(4, 5)print(result)# 函数参数def f(x, y, z): pass# 位置参数调用*f(1, 2, 3) # 第一种方法#
阅读全文
posted @
2018-08-29 12:53
栗子测试
阅读(538)
推荐(0)
python 生成器
摘要:# 生成器表达式,生成可迭代对象,不能反复迭代(延迟求值,惰性求值)tmp = (x for x in range(9))print(type(tmp))print(next(tmp)) # 结果:0print(next(tmp)) # 结果:1for i in tmp: # 循环迭代不容易出现边界
阅读全文
posted @
2018-08-29 12:51
栗子测试
阅读(159)
推荐(0)
python 字典解析
摘要:# 字典解析式tmp = {x:(x, x+1) for x in range(10)}print(tmp)tmp = {x:[x, x+1] for x in range(10)}print(tmp)
阅读全文
posted @
2018-08-29 12:50
栗子测试
阅读(2457)
推荐(0)
python 集合解析
摘要:# 生成元组集合tmp = {(x, x+1) for x in range(10)}print(type(tmp))print(tmp)# 生成列表集合tmp = {[x] for x in range(10)}print(tmp)
阅读全文
posted @
2018-08-29 12:49
栗子测试
阅读(135)
推荐(0)
python 列表解析
摘要:# 将0-9的列表生成一个新列表,新列表每个元素都在原列表基础上+1并平方newlist1 = [(i+1)**2 for i in range(10)]print(newlist1)print(type(newlist1))# 生成10个0的列表newlist2 = [0 for _ in ran
阅读全文
posted @
2018-08-29 12:48
栗子测试
阅读(2500)
推荐(1)