python之eval函数的应用实例

您所在的位置:网站首页 eval函数的用法 python之eval函数的应用实例

python之eval函数的应用实例

2023-02-21 22:50| 来源: 网络整理| 查看: 265

众所周知,eval() 函数是用来执行一个字符串表达式,并返回表达式的值。

语法:eval(expression[, globals[, locals]])

eval函数有很强大的用法,但也有一定的风险性。这里主要记录项目中用到的eval函数的两种用法。

一、将字符串转换为相应的对象

如:将string转换为list、tuple、dict

例:将string转换为dict

data = "{'username':'admin','pwd':'123456'}" print(data,type(data)) data = eval(data) print(data, type(data))

 如上代码输出为:

{'username':'admin','pwd':'123456'} {'username': 'admin', 'pwd': '123456'}

 可以看到,eval函数转换后,就将原来string类型的data转换为dict了。

实际上,转换前的data也是一个json字符串,也就是实现了json->dict。

实战:

在接口自动化框架中,我们通常把测试数据存放在excel中,利用openpyxl从excel中读取测试数据用于测试。

直接从excel中读出来的都是string类型,一般我们的请求参数是dict类型,这就需要把读取的string类型的数据转换为dict。

从excel中读取某sheet第二行第五列的数据:{'username':'admin','pwd':'123456'}

from openpyxl import load_workbook sheet = load_workbook(bookname)[sheetname] data = sheet.cell(2, 5).value

 直接读取出来的data类型是string,相当于:”{'username':'admin','pwd':'123456'}“

   使用data = eval(data) ,转换为dict类型,就可以传到请求参数里啦。

二、将字符串转成表达式并执行

先看一个简单的例子:

eval('print("我是test语句")')

 如上代码实际上会执行  print("我是test语句")  这段代码。也就是eval将  ‘print("我是test语句")’  这段字符串转成了可执行的python语句,并执行它。

实战:

测试几个webservice接口:

from suds.client import Client def ws(url,data,method): client = Client(url) if method == 'sendMCode': result = client.service.sendMCode(data) return result

 webservice接口是如上这样的调用方式,如上代码调用了senMCode的接口。如果我们有很多个接口,可能就需要写很多个if语句,会很繁琐,这是不可取的。

这时候eval就派上用场了:

from suds.client import Client def ws(url,data,method): client = Client(url) result = eval('client.service.{0}({1})'.format(method, data)) return result

 让eval函数把 'client.service.{0}({1})'.format(method, data) 转成可执行的python语句,就可以把method也参数化,不需要那么多if语句了。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3