如何仅禁用flake8对Python指定代码块的语法检查?
解决flake8 E501错误:仅禁用特定代码块的检查
这里有两个实用方案,既能解决行过长的E501问题,又不用禁用整个文件或给每行加注释:
方案1:修复代码格式(推荐)
把每个过长的字符串拆分成多行,用括号包裹——Python会自动拼接相邻字符串,完全不影响功能,还符合PEP8规范:
def test_constructor_for_legacy_json(): """Test if constructor works for a legacy JSON in an old database""" a = A(**{ 'field1': ( 'BIG TEXT WITH MORE THAN 500 CHARACTERS....' '(...)' ), 'field2': ( 'BIG TEXT WITH MORE THAN 500 CHARACTERS....' '(...)' ), # 其他field同理处理 'field1000': ( 'BIG TEXT WITH MORE THAN 500 CHARACTERS....' '(...)' ), }) assert type(a) == A
这样拆分后,每行长度都能控制在flake8的限制内,不需要禁用任何检查。
方案2:块级临时禁用E501检查
如果不想修改代码结构,可以用flake8的注释语法,在目标代码块前后添加注释,仅禁用这段代码的E501检查:
def test_constructor_for_legacy_json(): """Test if constructor works for a legacy JSON in an old database""" # flake8: noqa=E501 a = A(**{ 'field1': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)', 'field2': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)', 'field3': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)', # (...) 'field1000': 'BIG TEXT WITH MORE THAN 500 CHARACTERS....(...)', }) # flake8: noqa=E501 assert type(a) == A
这段注释会让flake8跳过中间代码块的所有E501行过长检查,文件其他部分的检查不受影响。
内容的提问来源于stack exchange,提问作者Rui Martins
相关产品推荐
相关产品推荐

