gpt4 book ai didi

python - 在python中进行多次调度的简单方法? (没有外部库或类构建?)

转载 作者:行者123 更新时间:2023-12-05 01:13:46 24 4
gpt4 key购买 nike

我正在编写一个一次性脚本来为我正在运行的一些模拟计算一些分析解决方案。

我想以一种基于其输入计算正确答案的方式实现一个函数。例如,假设我有以下数学方程式:

tmax = (s1 - s2) / 2 = q * (a^2 / (a^2 - b^2))

我应该能够做类似的事情,这对我来说似乎很简单:

def tmax(s1, s2):
return (s1 - s2) / 2

def tmax(a, b, q):
return q * (a**2 / (a**2 - b**2))

我可能已经习惯了用 julia 编写,但我真的不想让这个脚本变得比我需要的更复杂。

最佳答案

在像 C++ 这样的静态类型语言中,您可以根据输入参数类型(和数量)重载函数,但这在 Python 中是不可能的。任何给定名称只能有一个函数。

可以做的是使用默认参数功能来选择该函数的两个路径之一,例如:

def tmax(p1, p2, p3 = None):
# Two-argument variant has p3 as None.

if p3 is None:
return (p1 - p2) / 2

# Otherwise, we have three arguments.

return (p1 * p1 / (p1 * p1 - p2 * p2)) * p3

如果您想知道为什么我将平方运算从 n ** 2 更改为 n * n,那是因为后者更快(或者它 < em>是,在过去的某个时候,至少对于像 2 这样的小整数幂来说是这样 - 可能仍然是这种情况,但你可能想确认一下).

一种可能的情况是g1 ** 2g1 * g1 更快,其中g1 是全局的而不是本地的(Python VM LOAD_GLOBAL 而不是 LOAD_FAST 需要更长的时间)。发布的代码不是这种情况,因为参数本质上是非全局的。

关于python - 在python中进行多次调度的简单方法? (没有外部库或类构建?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59761539/

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