我想构建一个计算的Python函数,
并想命名我的求和函数Σ。以类似的方式,想用Π作产品,依此类推。我想知道是否有办法以这种方式命名python函数?
def Σ (..):
..
..
也就是说,Python是否支持unicode标识符,如果是这样,有人可以为它提供一个示例吗?
谢谢!
最初的动机是我今天看到的Clojure代码,看起来像,
(defn entropy [X]
(* -1 (Σ [i X] (* (p i) (log (p i))))))
其中Σ是定义为的宏,
(defmacro Σ
... )
我觉得这很酷。
φ(z) = ∫(N(x|0,1,1), -∞, z)
VS
Phi(z) = integral(N(x|0,1,1), -inf, z)
甚至只是lambda()的lambda字符!
答案 0 :(得分:43)
(我认为这也很酷,这可能意味着我们是极客。)
你可以使用上面在Python 3中的代码执行此操作。(至少在我的Python 3.1解释器中有效。)请参阅:
但在Python 2中,标识符只能是ASCII字母,数字和下划线。
答案 1 :(得分:16)
值得指出的是,Python 3 支持Unicode标识符,但只允许使用字母或数字符号(有关完整详细信息,请参阅http://docs.python.org/3.3/reference/lexical_analysis.html#identifiers)。这就是为什么Σ有效(记住它是一个希腊字母,而不仅仅是一个数学符号),但√没有。
答案 2 :(得分:14)
(这个答案是一个次要的附录而不是一个完整的答案)
unicode标识符的附加问题(当我认为这是一个很酷的线程并切换到一个终端来玩它时,@ mike-desimone提到我很快就发现了),每个字形的多个版本都不相同,关于如何到达每个平台上的每个字形。例如Σ(又名希腊大写字母sigma,又名U + 03A3,[找不到直接的mac输入法])很好,但不幸的是Σ(又名 N-ary Summation ,又名 U + 2211 ,又名 opt / alt-w ,使用Mac OS X)不是有效的标识符。
>>> Σ = 20
>>> Σ
20
但是
>>> ∑ = 20
File "<input>", line 1
∑ = 20
^
SyntaxError: invalid character in identifier
如果在多个平台上有多个开发人员为您的代码做出贡献,那么使用Σ专门(通常可能是unicode字符)作为标识符可能会产生一些非常难以诊断的错误,例如,可视化调试:
这两个字形在此页面上更容易区分,但根据使用的字体,可能不是这种情况。
除非在Σ
附近打印Σ,否则即使回溯也不太清楚 File "~/Dev/play_python33/identifiers.py", line 12
print(∑([2, 2, 2, 2, 2]))
^
SyntaxError: invalid character in identifier
答案 3 :(得分:13)
根据is it bad,您可以使用一些unicode字符,但不是全部:您只能使用标识为字母的字符。
>>> α = 3
>>> Σ = sum
>>> import math
>>> √ = math.sqrt
File "<stdin>", line 1
√ = 3
^
SyntaxError: invalid character in identifier
此外:我认为能够使用unicode作为标识符非常酷 - 我希望,我可以使用所有。
我使用neo keyboard layout,它在额外的图层上提供了希腊语和数学符号:
αβχδεφγψιθκλνοπφστ[&安培;ωξυζ
∀⇐ℂΔ∃ΦΓΨ∫Λ⇔Σ∈ℚℝ∂⊂√∩Ξ
答案 4 :(得分:6)
Python 2.x不支持unicode标识符,因此不支持Σ作为标识符。 Python 3.x 确实支持unicode标识符,但是如果他们必须使用例如标识符A和Α(拉丁语A和希腊语大写字母alpha)来编辑源文件,许多人将会交叉。足够可读,但仍然不像词 sigma那样可读,为什么还要麻烦?