首页 > 解决方案 > 是否可以在 Python 中使用连字符/破折号作为变量

问题描述

我对 python 非常陌生,并且编写了一个简单的脚本来通过 SMTP 发送普通的 txt 电子邮件(参考:https ://realpython.com/python-send-email/ )。我想知道我是否能够以某种方式将连字符作为变量名包含在内,但我没有运气看看是否有可能。我的理解是您不能在 python 中使用连字符,但有解决方法吗?

这个想法是能够应用一个区域作为 smtp 主机的附加参数,但是,aws 区域中的区域可能会很长,因此缩写会很好。

例如。email-smtp.ap-southeast-2.amazonaws.com是 AWS 中的区域之一,可以直接使用ap-southeast-2吗?

python3 send-email.py -username -password --region ap-southeast-2

我已经完成了所有工作,但仅此而已..也对想法持开放态度!

标签: python

解决方案


遗憾的是,您不能在变量或参数名称中使用连字符。您受限于以下规则

第一个字符

'_a-zA-Z' 您可以使用任何字母或下划线开始变量名

所有其他字符

'[_a-zA-Z0-9]*' 与第一个字符相同,加上数字。

为什么?

连字符是减法运算符。想象一下你试图创建一个函数is-even(foo)

def is-even(foo):
    return('bar')

对于 python 解释器,看起来您正在尝试使用 param定义关键字is减去一些函数的函数。这种类型的响应几乎是无法避免的,因此几乎所有语言中的变量和函数名称都不允许使用连字符。evenfoo


推荐阅读