我正在制作一个音乐信息处理工具包。我不能使用'#'对于任何变量标识符的一部分,因为它是用于注释的,并且这是该语言的一部分。但是'#'符号在音乐学中有不同但非常重要的用途,例如C#4意味着中间的C锐利。在我的计划中,用户应该能够使用音乐术语在python控制台中操作,例如:
if key.tonic is C#4:
所以,我想知道有没有办法绕过这个限制?任何建议都会受到赞赏。
答案 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":