【问题标题】:Using non-ascii characters as variable names in python 2在 python 2 中使用非 ascii 字符作为变量名
【发布时间】:2017-07-12 18:09:45
【问题描述】:

以下代码在到达第三行时返回“Error: Invalid Syntax”:

# -*- coding: utf-8 -*-
print “åäö”
ÅÄÖ = 4

尽管包含非 ASCII 字符,但 print 语句工作正常。问题似乎是当非 ascii 字符用作变量名时。在 python 3 中这样做非常好,我理解这是因为 python 3 和 2 处理字符串的方式不同,但出于各种原因我需要使用 python 2。我真的觉得应该有一个非常简单的解决方案来解决这个问题,但是经过几个小时的谷歌搜索我还没有找到它。如果有人可以帮助我,我将不胜感激!

[ 注意:能够在 python 2.7 中写字母 åäö 对我来说非常有价值,部分原因是我对 python 编程相当陌生,并且非常喜欢用瑞典语命名我的变量和函数,因为这样更容易与 python 的内置函数分开。 ]

【问题讨论】:

  • 不支持。习惯它。这与习惯于不能在变量名中放置空格、.- 或其他标点符号没有根本区别。
  • 另外,请注意那些弯引号。
  • 可能值得努力迁移到 Python 3 - 如果您习惯瑞典语,我希望您会经常使用非 ASCII 字符串作为数据,而 Python 2 将是一个常量在这种情况下,至少是低水平的烦恼。是什么让你坚持 2?
  • @David Heyman 好吧,我正在尝试制作一个可用于 android 的 pygame 游戏,我在 Google 上搜索到的所有内容都表明您必须使用 Kivy 或 python 2.7 才能去做。有人告诉我这是一个糟糕的主意,我应该改用 java,但我看过的许多资料都声称完全可以用 python 制作 android 应用程序。
  • @gelbrekt 啊。我在那里没有经验。但是基于快速搜索 - 我认为 Kivy 在 Python 3 中工作。或者你可以尝试 Lua,也许 - 它比 Java 更接近 Python,并且 LÖVE 引擎几乎兼容所有东西。

标签: python ascii


【解决方案1】:

你不能这样做。语言语法规范根本不允许它用于 Python 2.x:

https://docs.python.org/2/reference/lexical_analysis.html#identifiers

正如您已经发现的那样,Python 3 对此进行了更改,其中语法允许某些类型的非 ascii 字符出现在标识符中

https://docs.python.org/3/reference/lexical_analysis.html#identifiers

(请注意,标识符完全是字符串文字!)

【讨论】:

    猜你喜欢
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-19
    • 2018-10-30
    • 2021-03-08
    • 1970-01-01
    相关资源
    最近更新 更多