我们先来复习一下列表的一些常用方法:
列表排序(数字元素)
默认:从小到大
1 | arr = [33, 43, 12, 18, 9, 40] |
从大到小
1 | arr = [33, 43, 12, 18, 9, 40] |
列表倒序(数字元素)
1 | arr = [33, 43, 12, 18, 9, 40] |
那么如果列表元素是不能直接自然排序的字典元素,要怎么办呢?
列表排序(字典元素)
1 | infors = [{"name" : "LaoWang", "age" : 12}, {"name" : "BanZhang", "age" : 10}, {"name" : "ChuShi", "age" : 13}] |
将匿名函数作为实参
1 | def test(a, b, func): |
字符串作为lambda函数
1 | def test(a, b, func): |
以上函数,如果没有eval()函数,在Python2当中可以运行,但是在Python3当中,会报出如下错误:
TypeError: ‘str’ object is not callable
原因是,Python3不允许直接把字符串作为函数表达式运行。
eval()函数:eval(expression, globals=None, locals=None)
— 官方文档中的解释是,将字符串str当成有效的表达式来求值并返回计算结果。
globals和locals参数是可选的,如果提供了globals参数,那么它必须是dictionary类型;如果提供了locals参数,那么它可以是任意的map对象。
eval()使用原因
1)在编译语言里要动态地产生代码,基本上是不可能的,但动态语言是可以。
意味着软件已经部署到服务器上了,但只要作很少的更改,只好直接修改这部分的代码,就可立即实现变化,不用整个软件重新加载。
2)在machin learning里根据用户使用这个软件频率,以及方式,可动态地修改代码,适应用户的变化。