【问题标题】:Ignore flake8 check for the code with backslash忽略 flake8 检查带有反斜杠的代码
【发布时间】:2018-08-06 02:18:59
【问题描述】:

有没有办法忽略 flake8 检查带有\ 的部分代码?我无法在\ 之后添加#noqa

例如,这是我的代码。 .config('spark.driver.maxResultSize', os.getenv('spark_driver_max_result_size')) \ 超过 79 个字符

session = SparkSession \
    .builder \
    .appName(os.getenv('app_name')) \
    .config('spark.yarn.queue', os.getenv('spark_yarn_queue')) \
    .config('spark.driver.memory', os.getenv('spark_driver_memory')) \
    .config('spark.executor.memory', os.getenv('spark_executor_memory')) \
    .config('spark.driver.maxResultSize', os.getenv('spark_driver_max_result_size')) \
    .enableHiveSupport() \
    .getOrCreate()

这行不通。

session = SparkSession \
    .builder \
    .appName(os.getenv('app_name')) \
    .config('spark.yarn.queue', os.getenv('spark_yarn_queue')) \
    .config('spark.driver.memory', os.getenv('spark_driver_memory')) \
    .config('spark.executor.memory', os.getenv('spark_executor_memory')) \
    .config('spark.driver.maxResultSize', os.getenv('spark_driver_max_result_size')) \  # noqa: E501
    .enableHiveSupport() \
    .getOrCreate()

【问题讨论】:

  • 如果你把#noqa放在.getOrCreate()之后?
  • 通过将#noqa 放在.getOrCreate() 之后仍然可以得到test.py:7:80: E501 line too long (86 > 79 characters)
  • 如果您对默认行长不满意:--max-line-length=n

标签: python pep8 flake8


【解决方案1】:

您可以将表达式括在括号中,然后在这些括号中正常使用换行符

session = (SparkSession 
    .builder 
    .appName(os.getenv('app_name')) 
    .config('spark.yarn.queue', os.getenv('spark_yarn_queue')) 
    .config('spark.driver.memory', os.getenv('spark_driver_memory')) 
    .config('spark.executor.memory', os.getenv('spark_executor_memory')) 
    .config('spark.driver.maxResultSize', os.getenv('spark_driver_max_result_size')) # noqa: E501
    .enableHiveSupport()
    .getOrCreate())

【讨论】:

    【解决方案2】:

    我建议不要试图停止抱怨,而是用以下方式打破界限:

    session = (SparkSession
        .builder
        .appName(os.getenv('app_name'))
        .config('spark.yarn.queue', os.getenv('spark_yarn_queue'))
        .config('spark.driver.memory', os.getenv('spark_driver_memory'))
        .config('spark.executor.memory', os.getenv('spark_executor_memory'))
        .config('spark.driver.maxResultSize', 
                os.getenv('spark_driver_max_result_size'))
        .enableHiveSupport()
        .getOrCreate()
    )
    

    PEP8 says:

    包装长行的首选方法是在圆括号、方括号和大括号内使用 Python 的隐含续行。通过将表达式括在括号中,可以将长行分成多行。应该优先使用这些,而不是使用反斜杠来续行。

    反斜杠有时可能仍然合适。例如,长的、多个 with 语句不能使用隐式延续,所以反斜杠是可以接受的:

    【讨论】:

    • 知道如何在 Python2 中无法使用隐式延续和多个 with 语句的情况下使用 noqa 注释吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-25
    • 2015-05-26
    • 2021-08-17
    • 2018-05-19
    • 2013-07-29
    • 1970-01-01
    • 2023-04-09
    相关资源
    最近更新 更多