Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 命名参数在具有条件逻辑的字符串中不起作用_Python - Fatal编程技术网

Python 命名参数在具有条件逻辑的字符串中不起作用

Python 命名参数在具有条件逻辑的字符串中不起作用,python,Python,我有一个多行字符串,带有一个内嵌if条件,如下所示: my_string= """ Hello my name is """ + ('John' if client == "j123" else 'Mary') + """ Good bye. """ 但是,当我插入一个命名参数时,它似乎没有正确地处理它。通过一些测试,我发现从字符串中删除IF将允许命名参数工作 my_string= """ Hello my name is """ + ('

我有一个多行字符串,带有一个内嵌if条件,如下所示:

my_string=  """
        Hello my name is """ + ('John' if client == "j123" else 'Mary') + """

        Good bye. """
但是,当我插入一个命名参数时,它似乎没有正确地处理它。通过一些测试,我发现从字符串中删除IF将允许命名参数工作

my_string=  """
        Hello my name is """ + ('John' if client == "j123" else 'Mary') + """

        %(msg_key)s

        Good bye. """ % {"msg_key" : "Additional msg"}
这不起作用有什么具体原因吗?

你的意思是:

my_string=”“”
您好,我的名字是“”+['John'如果客户=='j123'或者'Mary'][0]+“””
再见

使用f字串会更有效:

my_string=f”“”
你好,我的名字是{'John'如果客户=='j123'或者'Mary'}
{msg_key}
再见。格式(msg_key=“附加msg”)

msg_key不是变量,它只是标识字符串中的占位符

这项工作:

my_string=  """
        Hello my name is """ + ('John' if client == "j123" else 'Mary') + """

        %(msg_key)s

        Good bye. """ % {"msg_key" : "Additional msg"}

解决方案是选择一种更干净的方法,如下所示,将任何逻辑转移到命名参数,而不是让它们保持一致

my_string=  """
    Hello my name is {name}

    {something_else}

    Good bye. """.format(
      name=("John" if client_code == "j" else "Mary"),
      something_else="Additional Message"
    )

thnx这是一个打字错误。我不知道你可以用花括号写if条件。这种技术有特别的名称吗?许多的thanks@test,这是一个普通的python内联if语句,您可以将结果组合在任何f字符串的花括号中。