这是PyCharm 2017.2.2重构限制还是编码错误?

时间:2017-09-02 03:00:15

标签: python refactoring pycharm automated-refactoring

我是JetBrains IntelliJ的粉丝,现在享受PyCharm为Python提供的支持。但是我在使用PyCharm 2017.2.2正确地重构一些python代码时遇到了麻烦。我可以用两种情况来证明这个问题,第一种情况有效但第二种情况不适用。

工作片段:

import pandas as pd

def main():
    c = 2
    a = pd.Series([1,2,3])
    b = a.apply(lambda x:
        x+1
    )
    print (b)

main()

我可以选择三行

    b = a.apply(lambda x:
        x+1
    )

当我重构>提取物>方法,我提供了一个对话框,建议a作为参数,b作为返回值。当我接受时,结果是:

import pandas as pd

def main():
    c = 2
    a = pd.Series([1,2,3])
    b = method_name(a)
    print (b)


def method_name(a):
    b = a.apply(lambda x:
                x + 1
                )
    return b


main()

现在,我做了一个改变。我使用x+1而不是lambda中的x+c。我希望c将被识别为新函数的参数,但事实并非如此。结果,我最终得到了这段代码,但这不起作用:

import pandas as pd

def main():
    c = 2
    a = pd.Series([1,2,3])
    b = method_name(a)
    print (b)


def method_name(a):
    b = a.apply(lambda x:
                x + c
                )
    return b


main()

我有什么问题吗?

1 个答案:

答案 0 :(得分:0)

你只将一个值传递给method_name,所以c代表什么都没有。