如何更改预定义的评论字符'#'在Python解释器?

时间:2017-11-22 05:06:53

标签: python

我正在制作一个音乐信息处理工具包。我不能使用'#'对于任何变量标识符的一部分,因为它是用于注释的,并且这是该语言的一部分。但是'#'符号在音乐学中有不同但非常重要的用途,例如C#4意味着中间的C锐利。在我的计划中,用户应该能够使用音乐术语在python控制台中操作,例如:

if key.tonic is C#4:

所以,我想知道有没有办法绕过这个限制?任何建议都会受到赞赏。

3 个答案:

答案 0 :(得分:1)

您无法在python(或任何其他语言)中重新定义语言结构。

可能能够在你下载python源代码并重新编译没有评论支持或其他东西的版本时 - 但这可能超出了你想要实现的范围(并且需要要运行的python版本,所以它不可移植)。

相反,请考虑使用s或其他内容而不是#符号。我见过很多人用b代替,所以这并不罕见。我想大多数读者会发现Cs4非常直观,如果你没有,那么你可以随时在旁边发表评论:)

取决于您如何使用它的替代解决方案可能涉及python字典。您可以将所有笔记存储在其中,并像这样引用它;

notes["C#4"]

但这取决于你的用例。

答案 1 :(得分:1)

如果您绝对必须在显示的名称中包含带#的对象,则可以使用命名约定(例如c_sharp_4)在代码中使用但覆盖打印& repr 成员将其打印为C#4。

在python 3中你可以,如果你的终端设置了utf-8字体,实际上使用的是Unicode锐利,扁平和自然的字符\ u266f,\ u266d& \ u266e:

url = http://localhost/Casual?product_id=83983

对于纯粹的音乐理论家来说,大概是优选的,因为哈希字符#与尖锐的相同。

但是,您不能将这些修饰符中的任何一个用作变量或对象名称的一部分,因为规则是第一个字符必须是下划线或字母,后续的必须是其中之一或数字。

答案 2 :(得分:0)

您是否考虑过将其设置为字符串? IE浏览器。 如果key.tonic是" C#4":