【问题标题】:using python reserved keyword as variable name [duplicate]使用python保留关键字作为变量名[重复]
【发布时间】:2017-01-15 10:43:45
【问题描述】:

我正在尝试使用网络服务发送短信,这是网络服务文档的建议:

response = client.service.SendSMS(  fromNum = '09999999' ,
                toNum = '0666666666666',
                messageContent = 'test',
                messageType = 'normal',
                user = 'myusername',
                pass = '123456' ,
           )

公平地说,他们没有仅适用于 python 的 php/asp 文档,所以我已经从他们的 php 示例中转换了它,但与我不同,有些人可能知道 pass 是 python 的保留关键字

所以我不能有变量名pass 因为我得到语法错误!

有没有办法解决这个问题,或者我应该切换到另一个网络服务?我希望我们可以将变量名放在引号之类的地方

【问题讨论】:

  • 也许参数应该是字典,而不是单独的参数?
  • 他们有一个 Python API,但是没有关于如何使用它的详细文档?
  • 来自文档docs.python.org/3/reference/lexical_analysis.html#keywords。保留字不能用作普通标识符
  • @Barmar no python 在我所在的地方不是很受欢迎,所以他们根本没有文档!

标签: python django web-services python-3.x


【解决方案1】:

也许可以这样尝试:

sms_kwargs = {
    'toNum': '0666666666666',
    'messageContent': 'test',
    'messageType': 'normal',
    'user': 'myusername',
    'pass': '123456'
}
response = client.service.SendSMS(**sms_kwargs)

【讨论】:

    【解决方案2】:

    您可以使用**dictionary 调用语法将任意字符串作为关键字参数传递:

    response = client.service.SendSMS(  fromNum = '09999999' ,
                    toNum = '0666666666666',
                    messageContent = 'test',
                    messageType = 'normal',
                    user = 'myusername',
                    **{'pass': '123456'}
               )
    

    如果需要,您可以将所有关键字参数移动到字典中,并在应用之前将该字典分配给变量。

    【讨论】:

      猜你喜欢
      • 2017-12-05
      • 1970-01-01
      • 2016-12-03
      • 2020-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-03
      相关资源
      最近更新 更多