我在python 2.7中有一个函数调用:
execute_cmd('/sbin/ip addr flush dev '
+ args.interface
+ ' && '
+ '/sbin/ifdown '
+ args.interface
+ ' ; '
+ '/sbin/ifup '
+ args.interface
+ ' && '
+ '/sbin/ifconfig | grep '
+ args.interface)
运行正常,但pylint
抱怨以下警告信息:
C:220, 0: Wrong continued indentation (remove 1 space).
+ args.interface
|^ (bad-continuation)
C:221, 0: Wrong continued indentation (remove 1 space).
+ ' && '
|^ (bad-continuation)
C:222, 0: Wrong continued indentation (remove 1 space).
+ '/sbin/ifconfig | grep '
|^ (bad-continuation)
.
.
.
使用跨越多行的字符串参数在python中调用函数的正确方法是什么?。
答案 0 :(得分:0)
Pylint告诉你到底要做什么,删除一个空格:
board = csv.reader(data.splitlines(), dialect="excel")
此外,您可以使用字符串格式,例如:
execute_cmd('/sbin/ip addr flush dev '
+ args.interface
+ ' && '
+ '/sbin/ifdown '
+ args.interface
+ ' ; '
+ '/sbin/ifup '
+ args.interface
+ ' && '
+ '/sbin/ifconfig | grep '
+ args.interface)
答案 1 :(得分:0)
PEP 8 states您还可以在下一行开始一个长参数列表(或括号内的任何内容),并添加一个额外的缩进级别:
execute_cmd(
'/sbin/ip addr flush dev ' +
args.interface +
' && ' +
'/sbin/ifdown ' +
args.interface +
' ; ' +
'/sbin/ifup ' +
args.interface +
' && ' +
'/sbin/ifconfig | grep ' +
args.interface
)
正如我在评论中所说,binary operators should be put at the end of a line break,而不是在新评论的开头。
您还可以使用fstring
(python> 3.6),然后删除+
:
execute_cmd(
f'/sbin/ip addr flush dev {args.interface} && /sbin/ifdown'
f' {args.interface} ; /sbin/ifup {args.interface} && '
f'/sbin/ifconfig | grep {args.interface}'
)
与.format
函数相同(从python 2.6开始,我认为?):
execute_cmd(
'/sbin/ip addr flush dev {0} && /sbin/ifdown' +
' {0} ; /sbin/ifup {0} && ' +
'/sbin/ifconfig | grep {0}'.format(args.interface)
)
答案 2 :(得分:-1)
您可以使用换行符执行以下操作:
execute_cmd('/sbin/ip addr flush dev ' \
+ args.interface \
+ ' && ' \
+ '/sbin/ifdown ' \
+ args.interface \
+ ' ; '\
+ '/sbin/ifup '\
+ args.interface\
+ ' && '\
+ '/sbin/ifconfig | grep '\
+ args.interface)