gpt4 book ai didi

python - 如何将函数作为参数? (Python)

转载 作者:太空宇宙 更新时间:2023-11-03 13:05:25 25 4
gpt4 key购买 nike

我正在编写一个程序来计算旋转体的体积。第一步是计算积分。我正在为此使用 scipy.integrate,但我想不出最好的方程式(例如 x=x**2 在命令中输入行。我最初计划添加一个参数“关于:x|y”,然后将函数作为 lambda。不幸的是,argparse 不会将 lambda 作为参数类型,并尝试使用字符串构造 lambda (f = lambda x: args.equation) 只是返回一个字符串(可以理解,真的)。

这是我到目前为止所得到的:

import sys
import argparse
import math
from scipy import integrate

parser = argparse.ArgumentParser(description='Find the volume of the solid of rotation defined')
parser.add_argument('equation', help='continous function')
parser.add_argument('a', type=float, help='bound \'a\'')
parser.add_argument('b', type=float, help='bound \'b\'')
parser.add_argument('-axis', metavar='x|y', help='axis of revolution')
args = parser.parse_args()

def volume(func, a, b, axis=None):
integral = integrate.quad(func, a, b)
return scipy.py * integral

print volume(args.equation, args.a, args.b)

任何建议将不胜感激谢谢

最佳答案

如果完全不担心让用户运行任意 Python 代码的安全风险,那么您可以使用 eval 创建一个可调用对象:

volume(eval('lambda x: %s' % args.equation), args.a, args.b)

关于python - 如何将函数作为参数? (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com