如何让PyCharm在Extract Method时自动识别方法参数?
PyCharm提取方法重构的参数识别问题
问题场景
当使用PyCharm的Extract Method功能提取代码时,比如原始代码:
a = 2 b = a**2
选中a**2执行提取后,得到的代码会直接引用外部变量a:
a = 2 def method_name(): return a ** 2 b = method_name()
但期望生成带参数的方法:
a = 2 def method_name(a): # a作为参数传入 return a ** 2 b = method_name(a)
解决方法
PyCharm的Extract Method本身支持自动识别并设置参数,只是需要在提取过程中手动配置:
- 选中要提取的代码后,按
Ctrl+Alt+M(Windows/Linux)或Cmd+Alt+M(Mac)触发Extract Method - 在弹出的重构对话框中,找到Parameters区域,里面会列出当前代码引用的外部变量(这里就是
a) - 勾选
a对应的选项,PyCharm就会自动将其设为方法参数,同时在调用处传入该变量 - 确认后生成的代码就是你期望的带参数版本
如果希望默认就把外部变量设为参数,也可以在对话框右上角点击齿轮图标,调整重构的默认设置,将“Use existing parameters”相关选项改为优先将外部变量转为参数。
补充说明
这个功能并非本身设计成不识别参数,而是PyCharm默认会尽量保留外部变量的引用,避免不必要的参数传入,所以需要用户手动选择要转为参数的变量。如果不想用Extract Method,也可以手动改写代码,但重构工具显然更高效。
内容的提问来源于stack exchange,提问作者algebruh
相关产品推荐
相关产品推荐

