Python调用py代码字符串

Python调用py代码字符串

已知py代码字符串:

script = """
def hello(msg1, msg2, msg3):
    print(f"msg1: {msg1}, msg2: {msg2}, msg3:{msg3}")
    return 'success'
"""

如何在Python中直接调用?

方法一:使用 runpy

import runpy

# 定义一个Python脚本字符串
script = """
def hello(msg1, msg2, msg3):
    print(f"msg1: {msg1}, msg2: {msg2}, msg3:{msg3}")
    return 'success'
"""

# 将脚本字符串写入一个临时文件
with open('temp_script.py', 'w') as file:
    file.write(script)

# 使用 runpy 运行这个脚本
script_module = runpy.run_path('temp_script.py')
result = script_module['hello']('hhh',222,3.33)
print(result)

输出结果:

msg1: {msg1}, msg2: {msg2}, msg3:{msg3}
success

方法二:使用 exec

# 定义一个Python脚本字符串
script = """
def hello(msg1, msg2, msg3):
    print(f"msg1: {msg1}, msg2: {msg2}, msg3:{msg3}")
    return 'success'
"""

# 执行脚本字符串
exec(script)

# 调用 hello 方法并传入参数 "hhh"
result = hello('hhh',222,3.33)
print(result)

输出结果:

msg1: hhh, msg2: 222, msg3:3.33
success

方法三:使用 exec,并使方法名提参

def execute_script(script, func_name, **kwargs):
    # 创建一个新的字典来作为脚本的命名空间
    namespace = {}
    # 在新的命名空间中执行脚本字符串
    exec(script, namespace)
    # 获取命名空间中的目标函数
    func = namespace.get(func_name)
    if not func:
        raise ValueError(f"Function '{func_name}' not found in the script")
    # 调用目标函数并传入参数,返回结果
    result = func(**kwargs)
    return result

# 定义一个Python脚本字符串
script = """
def hello(msg1, msg2, msg3):
    print(f"msg1: {msg1}, msg2: {msg2}, msg3:{msg3}")
    return 'success'
"""

# 调用函数并传入参数
result = execute_script(script, 'hello', msg1='aaa', msg2=222, msg3=3.33)

# 打印返回结果
print(result)

输出结果:

msg1: aaa, msg2: 222, msg3:3.33
success

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值