gpt4 book ai didi

python - python中物理量的命名

转载 作者:行者123 更新时间:2023-11-28 23:07:03 25 4
gpt4 key购买 nike

我想为我的模拟代码中使用的物理/数学量建立一个好的命名方案。考虑以下示例:

from math import *

class GaussianBeamIntensity(object):
"""
Optical intensity profile of a Gaussian laser beam.
"""

def __init__(self, intensity_at_waist_center, waist_radius, wavelength):
"""
Arguments:

*intensity_at_waist_center*: The optical intensity of the beam at the
center of its waist in W/m^2 units.

*waist_radius*: The radius of the beam waist in meters.

*wavelength*: The wavelength of the laser beam in meters.

"""

self.intensity_at_waist_center = intensity_at_waist_center
self.waist_radius = waist_radius
self.wavelength = wavelength
self._calculate_auxiliary_quantities()

def _calculate_auxiliary_quantities(self):
# Shorthand notation
w_0, lambda_ = self.waist_radius, self.wavelength

self.rayleigh_range = pi * w_0**2 / lambda_
# Generally some more quantities could follow

def __call__(self, rho, z):
"""
Arguments:

*rho*, *z*: Cylindrical coordinates of a spatial point.
"""
# Shorthand notation
I_0, w_0 = self.intensity_at_waist_center, self.waist_radius
z_R = self.rayleigh_range

w_z = w_0 * sqrt(1.0 + (z / z_R)**2)
I = I_0 * (w_0 / w_z)**2 * exp(-2.0 * rho**2 / w_z**2)
return I

为了在可读性简洁的符号(公式保持相对短的)?你能改进上面的例子吗?或者提出更好的方案?

最好遵循 PEP8 的指导方针,记住“愚蠢的一致性是小脑袋的妖精”。在遵守传统的 80 个字符的行长度限制的同时,似乎很难坚持使用描述性名称。

提前致谢!

最佳答案

我认为您已经找到了良好的平衡。富有表现力的名称很重要,因此我完全同意使用 wavelenght 而不是 lambda 作为类属性。通过这种方式,界面保持清晰和富有表现力。

不过,在长公式中,lambda_ 是作为速记符号的不错选择,因为这是一种普遍接受并广泛使用的光学波长符号。我认为当你实现一个公式时,你想要做的是尽可能接近你在纸上写的方程式的形式(或者它们出现在文章等中的形式)。

简而言之:保持界面的表现力,公式简短。

关于python - python中物理量的命名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227503/

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