(一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数

一:lambda表达式和匿名函数

  lambda表达式可以用来声明匿名函数。lambda 函数是一种简单的、在同一行中定义函数 的方法。lambda函数实际生成了一个函数对象。

  lambda表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数 的返回值。

  lambda表达式的基本语法如下:

    lambda arg1,arg2,arg3... : <表达式>

    arg1/arg2/arg3为函数的参数。<表达式>相当于函数体。运算结果是:表达式的运算结果。

#lambda表达式测试,lambda创建匿名函数

f = lambda a,b,c,d:a+b+c+d
def f1(a,b,c,d):     #此函数同lambda表达式f
    return a+b+c+d

g = [lambda a:a*2,lambda b:b*3,lambda c:c*4]
h = [f1,f1,f1]     #函数也是对象,此方式类似lambda表达式g

print(f(1,2,3,4))
print(f1(1,2,3,4))

print(g[0](1),g[1](2),g[2](3))
print(h[0](1,2,3,4),h[1](1,2,3,4))

运行结果:

  10
  10
  2 6 12
  10 10

二:eval()函数

  功能:将字符串str当成有效的表达式来求值并返回计算结果。
  语法: eval(source[, globals[, locals]]) -> value
  参数:

    source:一个 Python表达式或函数 compile()返回的代码对象

    globals:可选。必须是dictionary

    locals:可选。任意映射对象

  eval 函数会将字符串当做语句来执行,因此会被注入安全隐患。比如:字符串中含有删除文 件的语句。那就麻烦大了。因此,使用时要慎重!!!

#测试eval()函数

s = "print(‘abcdefg‘)"
eval(s)

a,b = 10,20
c = eval("a+b")
print(c)
eval("print(c)")

dict1 = dict(a=100,b=200)
d = eval("a+b",dict1)   #声明此时调用的a+b中的a,b是dict中的a,b
print(d)

运行结果:

  abcdefg
  30
  30
  300

原文地址:https://www.cnblogs.com/jack-zh/p/10840753.html

时间: 2024-08-01 05:07:12

(一)Python入门-5函数:07lambda表达式和匿名函数-eval()函数的相关文章

Python入门-生成器和生成器表达式

昨天我们说了迭代器,那么和今天说的生成器是什么关系呢? 一.生成器 什么是生成器?说白了生成器的本质就是迭代器. 在Python中中有三种方式来获取生成器. 1.通过生成器函数 2.通过各种推导式来实现生成器 3.通过数据的转换也可以获取生成器 首先,让我们看一个很简单的函数: def func(): print(111) return 222 ret = func() print(ret) 结果: 111 222 将函数中的return换成yield就是生成器 def func(): prin

Web开发中前台与后台技术小结--关于EL表达式,JSTL,eval()函数

在我们日常Web开发中,常常用到EL表达式,JSTL标签,还有可能用到JavaScript中的eval().下面就这样技术和函数小小说明一下. EL(Expression Language),全称表达式语言,既然是开发语言,那么就像Java等语言一样是用来写语句的,通常是用在JSP页面中,我们为了获取JSP提供的内置对象的属性值, 我们通常会使用到EL表达式,比如开发中常见的一个需求就是获取项目的根目录,如果项目的名值变化了,我们在指定路径时,如果把项目的根目录用一个变量来表示的话,那么就不 需

Ajax中的eval函数的用法

eval的定义和使用: Eval它是用来计算某个字符串,并且执行其中的JavaScript代码. 语法: 1) eval函数接受一个string这个参数,并且这个参数是必须的,这个参数就是要计算的这个字符串.它里面可以函数含有JavaScript的表达式,或者要执行的语句. eval(string). 2) 那,这个既然是函数,就有可能有返回值.它的返回值是:如果这个string参数有返回值的话,那这个函数就原样返回这个string执行完毕的结果. 3) 有一个地方值得注意,这个eval函数只接

JavaScript中Eval()函数的作用

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->首先来个最简单的理解 eval可以将字符串生成语句执行,和SQL的exec()类似. eval的使用场合是什么呢?有时候我们预先不知道要执行什么语句,只有当条件和参数给时才知道执行什么语句,这时候eval就派上用场了.举个例子: 我们要做一个function(),功能是输入网页中两个个对象的名称,然后程

[Effective JavaScript 笔记]第17条:间接调用eval函数优于直接调用

eval函数不仅仅是一个函数.大多数函数只访问定义它们所在的作用域,而不能访问除此之外的作用域(词法作用域).eval函数具有访问调用它时的整个作用域的能力.编译器编写者首次设法优化js时,eval函数很难高效地调用任何一个函数,因为一旦调用的函数是eval函数,那么每个函数调用都需要确保在运行时整个作用域对eval函数是可访问的.语言标准演化出辨别两种不同的调用eval的方法.第一种方式:函数调用涉及eval标识符,被认为是一种“直接”调用eval函数的方式.编译器需要确保被执行的程序具有完全

272 函数的理解和使用:回调函数,匿名函数自调用IIFE,**函数中的this**

什么是函数? 用来实现特定功能的, n条语句的封装体 只有函数类型的数据是可以执行的, 其它的都不可以 为什么要用函数? 提高复用性 便于阅读交流 函数也是对象 instanceof Object===true 函数有属性: prototype 函数有方法: call()/apply() 可以添加新的属性/方法 函数的3种不同角色 一般函数 : 直接调用 构造函数 : 通过new调用 对象 : 通过.调用内部的属性/方法 函数中的this 显式指定谁: obj.xxx() 通过call/appl

对setTimeout()第一个参数是字串的深入理解以及eval函数的理解

1 <script language="javascript" type="text/javascript"> 2 var a=1; 3 setTimeout('var a=2;alert(a)', 1000); 4 alert(a); 5 setTimeout('alert(a)',1000); 6 </script>//1 2 1; setTimeout的异步我这里就不做过多的解释(异步回调加入事件队列相关知识),主要写一下对一个参数是字

python入门基础-三元表达式、命名空间、作用域、函数名本质、闭包

1.三元表达式(三目运算式) #1 三元表达式(三目运算法) #格式为: 为真时的结果 if 判定条件 else 为假时的结果 #另外三元表达式只适合较为简洁的条件判定,较为复杂的判定建议不要用这种方式写代码,因为比较让他人难以理解. a = 10 b = 15 compare = a if a > b else b #谁大返回谁 print(compare) 2.命名空间(namespace) #2 命名空间(namespace) #命名空间是名称和对象的印象,也可以将命名空间理解成一个字典,

python入门系列:函数

引言 将一段代码集中到一块,起一个名字,下次可以根据这个名字再次使用这个代码块.作用:方便代码重用分解任务,简化程序逻辑使代码更加模块化函数的参数 所有的传参方式都是传引用,注意列表做参数和数值做参数容易出现的问题. 单个参数 多个参数 定义方式 def funName(arg1, arg2, arg3...):pass 调用方法 funName(arg1, arg2, arg3...) # 形参和实参一一对应funName(arg2=v2, arg3=v3, arg1=v1) # 指明形参的名