Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/316.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 IDE自动重构重复代码 说我在编写一系列命令的中间,决定把它变成一个for循环。比如说我有 print('Jane','Bennet') print('Elizabeth','Bennet') print('Mary','Bennet')_Python_Ide_Abstraction_Code Duplication - Fatal编程技术网

Python IDE自动重构重复代码 说我在编写一系列命令的中间,决定把它变成一个for循环。比如说我有 print('Jane','Bennet') print('Elizabeth','Bennet') print('Mary','Bennet')

Python IDE自动重构重复代码 说我在编写一系列命令的中间,决定把它变成一个for循环。比如说我有 print('Jane','Bennet') print('Elizabeth','Bennet') print('Mary','Bennet'),python,ide,abstraction,code-duplication,Python,Ide,Abstraction,Code Duplication,首先,我决定将其转换为for循环: for s in ['Jane','Elizabeth','Mary']: print(s,'Bennet') 甚至可能是一个列表: [print(s,'Bennet') for s in ['Jane','Elizabeth','Mary']] 是否有一个Python IDE可以在这些表单之间自动转换?或者可能还有其他工具可以做到这一点?我不推荐列表理解重构。这将更难理解,因为列表理解严格地被用作迭代生成列表的简明符号。如果编辑器具有矩形选择功能,

首先,我决定将其转换为for循环:

for s in ['Jane','Elizabeth','Mary']:
   print(s,'Bennet')
甚至可能是一个列表:

[print(s,'Bennet') for s in ['Jane','Elizabeth','Mary']]

是否有一个Python IDE可以在这些表单之间自动转换?或者可能还有其他工具可以做到这一点?

我不推荐列表理解重构。这将更难理解,因为列表理解严格地被用作迭代生成列表的简明符号。如果编辑器具有矩形选择功能,则可以执行以下操作:

# First tab the sirnames out away from the given names. (They don't need to be neatly
# aligned like this, you can just copy paste a bunch of spaces.)
print('Jane',         'Bennet')
print('Elizabeth',    'Bennet')
print('Mary',         'Bennet')


作为另一方,此列表理解将构建一个
None
列表。您应该使用理解来构建列表,而不是为了内部调用的函数的副作用——这在普通循环中表现得更好。我相信您可以在大多数编辑器中找到这样做的方法,虽然它可能需要脚本/插件等。这真的是一个很大的问题吗?一个现有IDE的脚本或插件将是一个完美的适合我所寻找的。好的,所显示的列表理解是一个糟糕的例子。更好的方法是将[f('Jane','Bennet')、f('Elizabeth','Bennet')、f('Mary','Bennet')]转换成['Jane','Elizabeth','Mary']中s的
[f(s,'Bennet')]
# Use rectangular selection to get rid of the sir names and the print statements,
# leaving the commas. An editor like Geany will also allow you to get rid of the
# trailing whitespace, making your code easier to navigate.
'Jane',
'Elizabeth',
'Mary',
# Add a variable initialization followed by square brackets around the given names.
# You can also pretty it up by indenting or deleting newlines as you see fit.
givenNames = [
  'Jane',
  'Elizabeth',
  'Mary',
]
# Add your for loop.
givenNames = [
  'Jane',
  'Elizabeth',
  'Mary',
]
for name in givenNames:
    print(f"{name} bennet")