【问题标题】:How to use reserved keyword as the name of variable in python?如何在python中使用保留关键字作为变量的名称?
【发布时间】:2017-12-05 04:18:26
【问题描述】:

我想使用保留关键字“from”作为变量名。

我的参数解析器中有它:

parser.add_argument("--from")
args = parser.parse_args()
print(args.from)

但这不起作用,因为“from”是保留的。拥有这个变量名很重要,我不想要像“from_”这样的答案。

有什么选择吗?

【问题讨论】:

  • 您可能想要解释为什么您认为拥有该变量名称很重要。如果变量命名为 from_,您的代码将不会执行任何不同的操作,但您可以更轻松地阅读代码,而无需所需的变通方法。
  • 免责声明:鼓励以下方法,我只是指出可能性。在您的情况下,我肯定会使用 from_ 作为变量名。与this answers 类似,您可以修改Python 源代码(编译器的源代码),以便将保留关键字from 更改为其他内容(例如from_)。然后,您可以重建源代码以获得您可以使用from 作为变量名的自定义 Python 编译器。请注意,出于多种原因,这是一个可怕的想法。

标签: python python-3.x variables naming-conventions command-line-arguments


【解决方案1】:

您可以使用getattr() 访问该属性:

print(getattr(args, 'from'))

但是,在argparse 中,您可以使用命令行选项--from 而不必通过使用dest option 来获得from属性指定要使用的替代名称:

parser.add_argument('--from', dest='from_')

# ...
args = parser.parse_args()
print(args.from_)

【讨论】:

  • 你好@Martijn Pieters。我知道保留字不能用作常规标识符,但如果您愿意解释,我想知道以下内容的内部情况。为什么通过getattrsetattr 获取和设置保留字有效,但不能使用普通的. 点语法(抛出SyntaxError)。我也有一个full-blown question,我想在其中获得您的意见。提前谢谢!
  • @George:存储在实例字典中的属性名称只是字符串,因为字符串不受更严格的标识符规则的约束。使用.表示法时,只能使用标识符,标识符不能与关键字相同。因此,getattr() 的属性名称可以以数字开头,也可以使用空格:setattr(args, "3 foo bar baz", 42) 可以正常工作。
猜你喜欢
  • 2017-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-03
相关资源
最近更新 更多