Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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_Python 3.x_String_String Formatting_F String - Fatal编程技术网

使用变量构造长Python字符串

使用变量构造长Python字符串,python,python-3.x,string,string-formatting,f-string,Python,Python 3.x,String,String Formatting,F String,我有一个python字符串,它基本上是由3个变量串联而成的。我正在使用f字符串使它成为一个字符串。现在看起来是这样的: my_string = f'{getattr(RequestMethodVerbMapping, self.request_method).value} {self.serializer.Meta.model.__name__} {self.request_data['name']}' 这给了我输出: Create IPGroup test-create-demo-098

我有一个python字符串,它基本上是由3个变量串联而成的。我正在使用f字符串使它成为一个字符串。现在看起来是这样的:

my_string = f'{getattr(RequestMethodVerbMapping, self.request_method).value} {self.serializer.Meta.model.__name__} {self.request_data['name']}'
这给了我输出:

Create IPGroup test-create-demo-098
正是我想要的输出。但是,很明显,该行太长,现在Pylint开始抱怨,因此我尝试使用多行f字符串将该行拆分,如下所示:

my_string = f'''{getattr(RequestMethodVerbMapping, self.request_method).value} 
                {self.serializer.Meta.model.__name__} {self.request_data['name']}'''
派林现在很高兴,但我的字符串如下所示:

Create 
                  IPGroup test-create-demo-098

这样做的最佳方法是什么,这样我就可以将字符串放在一行中,并且对于长度超过120个字符的行,也可以使Pylint静音?

这本身就是一条长行,我不会试图将很多内容放在一行中,而是将其分解并应用重构方法以提高可读性:

request_method_name = getattr(RequestMethodVerbMapping, self.request_method).value
model_name = self.serializer.Meta.model.__name__
name = self.request_data['name']

my_string = f'{request_method_name} {model_name} {name}'
我认为以下几点智慧非常适合我们的问题:

稀疏比密集好

可读性很重要


这本身就是一条很长的线,我不想把很多东西放在一行中,而是将其分解并应用重构方法以提高可读性:

request_method_name = getattr(RequestMethodVerbMapping, self.request_method).value
model_name = self.serializer.Meta.model.__name__
name = self.request_data['name']

my_string = f'{request_method_name} {model_name} {name}'
我认为以下几点智慧非常适合我们的问题:

稀疏比密集好

可读性很重要


可以像普通字符串一样,在f字符串之间加上空格。把整件事都插进去

my_string = (f'{getattr(RequestMethodVerbMapping, self.request_method).value}' 
             f' {self.serializer.Meta.model.__name__}
             f' {self.request_data["name"]}')
它将编译成与单行字符串完全相同的代码

甚至可以交错f字符串和非f字符串:

>>> print(f"'foo'" '"{bar}"' f'{1 + 42}')
'foo'"{bar}"43

可以像普通字符串一样,在f字符串之间加上空格。把整件事都插进去

my_string = (f'{getattr(RequestMethodVerbMapping, self.request_method).value}' 
             f' {self.serializer.Meta.model.__name__}
             f' {self.request_data["name"]}')
它将编译成与单行字符串完全相同的代码

甚至可以交错f字符串和非f字符串:

>>> print(f"'foo'" '"{bar}"' f'{1 + 42}')
'foo'"{bar}"43