A=[1,2,3,4,5]r=sum(A)B=[[1,2],[3,4]]import numpy as npr2=np.array(B)
sum()、array()----函数(系统内置的函数),A、B作为参数,是可以修改的。函数的特点是拓展性好,重用高。r,r2作为函数返回的结果,比如可以更改A或B参数值,调用函数就能重新获得返回的结果。但是,目前sum()和array()内部是如何定义是未知的,我们目前只是使用它们。
2.函数(自定义)
举例:计算圆的面积s(跟半径r有关)
或者
改变半径r,面积s随之改变。函数定义的基本结构如下:
def 函数名(形式参数1,形式参数2,……): 函数体 return 返回值
'''计算圆的面积,只有一个参数'''def area(r): import math pi=math.pi s=pi*r*r return ss1=area(15)s2=area(10)r=100s3=area(r)
'''计算矩阵的周长,两个参数'''def cal(length,width): p=2*(length+width) return pp1=cal(8,2)p2=cal(9,10)length=100width=50p3=cal(length,width)
3.函数(自定义):课堂练习和讲解
函数功能要求:查询某个站点编号、某天的进站人数和出站人数,定义一个函数来实现,其中数据存在"Data.xlsx"文件中,字段名称依次为:站点编号、日期、时刻、进站人数、出站人数,第一条记录如:121,2025-10-01,7,1121,125。
定义函数,一般先探索实现逻辑是否正确,计算结果是否正确,可以通过脚本程序来调试,等到确认无误了,再修改为函数。一般从调试脚本到函数定义,修改一下程序结构和参数即可,其实现逻辑是相同的。下面是其探索调试程序。
import pandas as pddata=pd.read_excel('Data.xlsx')tf1=data.iloc[:,0].values==155#tf2=data.iloc[:,1].values=='2015-10-01'tf2=data['日期'].values=='2015-10-01'tf=tf1&tf2#data_sx=data.iloc[tf,:]data_sx=data.iloc[tf,3]s1=sum(data_sx) #进站人数data_sx=data.iloc[tf,4]s2=sum(data_sx) #出站人数
其中第4、7行是注消程序,主要是介绍获取数据框的某列,有多种方法,这里介绍了两种。另外就是筛选后的数据查看和提取,方便查看其调试过程及痕迹。从探索调试程序,到函数定义,是一个非常有意义的探索。最终函数定义及调用如下:
import pandas as pddef comput(code,day): data=pd.read_excel('Data.xlsx') tf1=data.iloc[:,0].values==code #tf2=data.iloc[:,1].values=='2015-10-01' tf2=data['日期'].values==day tf=tf1&tf2 #data_sx=data.iloc[tf,:] data_sx=data.iloc[tf,3] s1=sum(data_sx) #进站人数 data_sx=data.iloc[tf,4] s2=sum(data_sx) #出站人数 return (s1,s2) s=comput(155,'2015-10-01')s1=s[0]s2=s[1]
从探索调试脚本,到函数定义,其实就是把写在程序中的具体值,修改为参数变量,这个变量赋值可以在函数外部定义,并传递到函数中使用。这样就极大拓展了程序的灵活性,修改变量的值,执行这个函数,就可获得新的结果。这就是函数高重用性的显著特点,它是通过变量代替了具体的值,通过修改变量的赋值来实现重复逻辑的运算。