Pandas中能否通过函数形参调用DataFrame实例的drop方法?
解答
你的写法完全符合Python语法规范,核心逻辑可以拆成两点说明:
- Python的函数形参本质就是指向传入实参对象的变量别名,没有特殊的使用限制:你往函数里传入什么类型的实例,形参就会绑定到这个实例上,自然可以调用该实例所属类定义的所有方法,和你在函数外部用普通变量调用方法的逻辑完全一致。
- 对应到你的代码场景:
pd.read_csv()执行后返回的是Pandas DataFrame实例,你把这个实例作为实参传给transform_data时,形参data就指向了这个DataFrame对象,此时写data.drop("column_name", axis=1)和你在函数外部直接对read_csv返回的对象调用drop方法没有任何区别,是完全正确的写法。
我们可以用更简单的示例验证这个逻辑:
def process_text(input_str): # 形参input_str绑定传入的字符串实例,直接调用字符串自带的upper()、split()方法 upper_text = input_str.upper() split_text = upper_text.split() return split_text # 传入字符串实参,可正常运行 print(process_text("hello world"))
唯一需要留意的是Python作为动态类型语言,不会在函数定义阶段检查形参的类型:如果你误把整数、列表这类没有匹配drop方法签名的对象传入transform_data,运行到方法调用这一行时才会抛出属性错误,日常开发如果需要做类型约束可以加上类型提示提升可读性。
内容的提问来源于stack exchange,提问作者brian
相关产品推荐
相关产品推荐

