locals()获取本地变量 和 exec()执行字符串中的代码

locals()获取本地变量 和 exec()执行字符串中的代码

#!/user/bin/env python3
# -*- coding: utf-8 -*-
#-------------------------------------------------------------------------------
# @File : exec()执行字符串中的代码.py
# @Time : 2022-08-11 11:43
# @Author : mojin
# @Email : 397135766@qq.com
# @Software : PyCharm
#-------------------------------------------------------------------------------
#locals()获取本地变量  exec()执行字符串中的代码

x = 10
y = 20
z = 30
def sum():
    sum = x + y + z
    return (sum)

说明='示例定义变量“说明”,,在locals(),可查看到'

###locals()获取本地变量

#将locals()获取的值赋值给loc
loc = locals()#获取本地变量数据,数据为字典类型

'''
locals()返回一个字典类型,里面包含我们定义的变量和函数
{
	'__name__': '__main__',
	'__doc__': None,
	'__package__': None,
	'__loader__': < _frozen_importlib_external.SourceFileLoader object at 0x00000223556CFE88 > ,
	'__spec__': None,
	'__annotations__': {},
	'__builtins__': < module 'builtins' (built - in ) > ,
	'__file__': 'D:/Python/python3/ui2_app/pytest_allure_request_jsonpath_excle/te_001/exec()执行字符串中的代码.py',
	'__cached__': None,
	'x': 10,  #定义的变量
	'y': 20,  #定义的变量
	'z': 30,  #定义的变量
	'sum': < function sum at 0x0000022355BA9558 > ,  #定义的函数
	'说明': '示例定义变量“说明”,,在locals(),可查看到',  #定义的变量
	'loc': { ...
	}
}
'''

#取值方法:字典取值方法
print(loc['说明'])  #示例定义变量“说明”,,在locals(),可查看到
print(loc['z'])    # 30

sum_func=sum()    #给sum()函数赋值给变量sum_func

print(loc['sum_func'])    # 同理通过变量sum_func,获取sum()函数值,为60



###exec()执行字符串中的代码

# 我们要定义一个num 变量值34234
# 代码中的写法 num = 34234
num = 34234
print(loc['num'])

# 假如我们有个需求,代码是写死的封装好的,不能定义变量,但允许读取文本类容,那么我们如何通过文本定义变量?
# 使用exec()函数
read_text="num = 34234"#假如我们从文本中读出来的"num = 34234",赋值给了read_text
exec(read_text)#  ==exec("num = 34234")  就等同于 代码中写了 num = 34234
print(loc['num'])


# 执行函数
read_text="sum()"#假如我们从文本中读出来的"sum()",赋值给了read_text
exec(read_text)#  ==exec("sum()")  就等同于 代码中写了 sum(),在该脚本中找sum()函数执行函数,
#sum()
# exec(read_text)这样执行完成后,我们没有拿到他的值 所以我们给他赋值才能拿到他的值
sum_result=sum()#等同于exec("sum_result=sum()")


exec("sum_result=%s"%read_text)  # 等同于exec("sum_result=sum()")
print(loc['sum_result'])






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值