调用函数时加括号与不加括号的区别:
一、不带括号时,调用的是这个函数本身 ,是整个函数体,是一个函数对象,不须等该函数执行完成
二、带括号(参数或者无参),调用的是函数的执行结果,须等该函数执行完成的结果
# -*- coding:utf-8 -*-
def bracket(data):
return data
if __name__ == '__main__':
# 不带括号调用的结果:<function bracket at 0x0000000004DD0B38>, a是整个函数体,是一个函数对象,不须等该函数执行完成
a = bracket
print a
# 带括号调用的结果:6, b是函数执行后返回的值6, 须等该函数执行完成的结果
b = bracket(6)
print b
解决了自己的一个基础问题:
from pandas.api.types import is_object_dtype
# categoricals列表将用于记录所有的非数值属性名
categoricals = []
# 将非数值列的列名添加到列表categoricals中,并且将这些非数值列的列名都打印出来
# print(attrition.columns.tolist);
name_of_columns = attrition.columns.values.tolist; #未加()
# type(name_of_columns)
print(name_of_columns)
#结果:
<built-in method tolist of numpy.ndarray object at 0x0000024A38ABA440>
一开始无法使用 type()来查看 name_of_columns 的数据类型,因为name_of_columns 是一个函数对象
后来加上括号之后,可以正常使用 for 遍历和使用 type()来查看数据类型
name_of_columns = attrition.columns.values.tolist();
type(name_of_columns)
#结果:
list