python学习&函数

函数

现在来学习一下函数,函数是什么,可以理解为是一个代码块,这个代码块构成了一个部件,类似arcgis的工具箱里面的工具,而我们只需要调用这个代码块,就可以为我们做重复的工作。在python中,函数的定义为

def 函数名():

     逻辑语句

    返回值(如果有,没有就不返回)

比如我们在做加法计算的时候,有很多组数据需要计算,那么我们就可以定义一个这样的代码块,来执行执行计算,只要传入数组a,b,然后执行a+b的操作,再返回即可。而我们如果需要对字符a、b拼接后然后执行打印操作,现在有很多这样的字符对,也是可以写代码块,即写函数。

def myAdd2(a,b=8):
    return a+b
def keyMerge(strA,strB):
    
    print strA+strB

函数调用

写完了函数之后,我们不能让函数放在那里,不起作用。那么现在我们就来调用函数了。函数的调用,可以理解为将一下重复的操作,放到函数中执行。函数的调用实施,只要传入参数即可,即我们数据。

def myAdd(a ,b):
    return a+b

def keyMerge(strA,strB):

    print strA+strB
    print strB
print myAdd(3,4)
print myAdd(5,11)

keyMerge("this is strA","this is strB")
keyMerge("ArcGIS","MapGIS")
print "finished"

那么控制台就我们打印出了结果。如下所示。

函数参数

有时候我们想传入到函数的数据是固定的,这种固定可以理解为某个特定值,也可以理解为是空的。比如上面的keyMerge函数,有时候,我们只需要打印一个数据,那么函数中却有两个参数,怎么办呢。其实python是允许我们只输入某些参数,而另外某些参数可以不用输入。这时候默认参数就派上用场了。在python中,除了默认参数外,必选参数、可变参数、关键字参数。在arcpy中使用得比较多的就是关键参数和默认参数。我们这里将学习必选参数、默认参数

必选参数,比如下面的a、b就是必选参数。必选传入相应的值,也就是说有几个参数就必须传如几个值。

def myAdd(a ,b):
    return a+b

我们在调用的时候,假如如下面的方式。第一个myAdd里面传入的是两个数据,而第二个myAdd是一个数据。

he_1=myAdd(3,4)
print he_1
he_2=myAdd(3)
print he_2

我们来看一下执行结果。可以看得出,第一能够正确返回了结果,3+4等于7,而第二个我们只传入到的是一个参数,因此报错中,说只传入一个参数。

我们注意到上面传入到的参数是a=3,b=4,也就是说,在myAdd(3,4)函数里面默认,a=3,b=4。而我们如果写成myAdd(4,3)这样,a=4,b=3,说了这么多,想要表达的是,传入的数据有一定的顺序,如果传入的数据不按照顺序,那么就有可能报错,比如下面的代码。参数p是居住在房子里面的人数,而fzArea为房子的面积,现在我们这样调用dataClss(5,120),我们传入的第一参数是120,第二参数是5,那么说明我们的120是人数,而5就是面积,显然5平方米里面居住了120人,显然不太可能。也就是说我们在函数的调用时候要注意函数参数的顺序。

其实数据可以按照前面的dataClss(120,5)顺序来调用的,这时候就要注意一下函数的指定名称,写成这样就可以了dataClss(fzArea=120,p=5)即可。

#p的单位为一,表示人数,而fzArea单位为平方米,表示房子的面积
def dataClss(p,fzArea):
    if (p>=0 and p<=4) and fzArea==100:
       print "房子面积勉勉强强居住"
    elif (p>=0 and p<=5) and fzArea==120:
       print "房子面积适合"
    elif (p >4 ) and fzArea == 100:
        print "房子面积有点小了,有点挤"
    else:
        print "其他情况自行判断"

调用方式。

dataClss(fzArea=120,p=5)
print "finished"

运行结果如下所示。

默认参数

好了,现在我们来学习一下使用默认参数。该参数应该是常见的,特别是arcpy中。比如搜索游标,在返回记录时,如果不想设置条件sql语句,那么可以不用设置。

下面我们来定义一个有默认参数的函数。其中参数strB为一个默认值"stringB",接下来我们来一下应用。就是调用了。

def printStr(strA,strB="stringB"):

    strT=strA+strB
    print strT

printStr("ArcGIS","-->MapGIS")
printStr("python--")

最后来看一下输出结果。显然在第二次使用printStr时候,只用一个参数,这是时候就使用到了默认值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yGIS

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值