定义函数

普通函数定义

通过def关键字定义函数,之后跟函数名称和小括号包裹的参数列表,之后跟一个冒号,在其后编写函数体。

函数体的第一行内容 ,可以直接是一个字符串,此字符串不影响函数体的内容,相当于是该方法的文档声明,用来描述函数的功能,可以在后续查看。

函数内容需要缩进。

通过return关键字在函数内部返回,并可以选择性返回一个返回值,如果return后没有明确的返回值,则默认返回的是一个None。

def functionname( parameters ):

        "函数_文档字符串"

        function_suite

        return [expression]

 

示例:

#定义函数

def sumx(n1,n2):

    "两数求和函数"

    return n1 + n2

函数直接量定义函数

通过lambda表达式来声明一个函数,lambda关键字之后跟参数列表,再跟冒号,之后是函数的体,这种方式声明的函数函数体只能是一个表达式,如果函数体有多条语句,则无法通过此方式定义。

funcx = lambda arg1, arg2: arg1 + arg2;

 

案例:

#函数直接量定义函数

sumx = lambda n1,n2:n1+n2;

print(sumx(2,3))

函数的调用

通过函数名之后跟小括号传入参数值就可以用调用函数了

函数调用过程中,也可以在实参列表中明确的指定实参要赋值给哪一个形参,从而实参 列表的顺序可以和形参列表不同

#调用函数

r = sumx(2,3)

print(r)

r = sumx(n2 = 2,n3 = 3)

 

缺省参数

在定义函数的过程中,可以为全部或部分函数参数指定默认值,则在调用函数的过程中可以 选择性的不传入这些参数,则这些参数采用默认值执行函数。

#缺省参数

def sumx2(n1,n2=10):

    return n1 + n2

print(sumx2(2,3))

print(sumx2(2))

 

不定长参数

类似于java中的可变参数,python中的函数也可以具有不定长的参数,未来再调用时可以传入0个或多个实参,而在函数的内部可以按照使用数组的方式使用该不定长参数。

可以通过在形参名称之前加*号,将参数设定为不定长参数。

一个函数中,不定长参数最多只能有一个,且必须出现在函数参数列表的最后一位。

#不定长参数

def sumx4(*nums):

    sum = 0

    for n in nums:

        sum += n

    return sum

r = sumx4(2,3,4)

print(r)

r = sumx4(2,3,4,5,6)

print(r)

函数是一等公民

在python中函数是一等公民,具有完整的能力,属性能做的函数都可以做。

赋值给引用

def sumx1(n1,n2):

return n1 + n2;

sumx2 = lambda n1,n2:n1+n2;

sumx3 = sumx2

sumx4 = sumx1

sumx1 = None

sumx2 = None

作为类的成员

#函数作为类的成员

class Person:

    name="zs"

    age=19

    def eat(self,food):

        print("吃。。。"+food)

    def sleep(self):

        print("睡。。。")

作为局部成员

#函数作为局部成员

def eat(food):

    zl = "孜然"

    def cook(food):

        return "做熟"+food +"加" + zl

    print("吃"+cook(food))

高阶函数作为方法参数

#高阶函数  将函数作为方法参数传递

def eatx(food,how2Cook):

    food2 = how2Cook(food)

    print("吃。。"+food2)

def cookYRC(food):

    return "烤熟"+food

eatx("羊肉串",cookYRC)

eatx("涮羊肉",lambda food:"煮熟"+food)

高阶函数作为方法返回值

#高阶函数  将函数作为另一个函数 的返回值返回

def lookUpCaiPu(cai):

    if cai == "羊肉串":

        def cookYRC(food):

            return "烤熟"+food

        return cookYRC

    elif cai == "涮羊肉":

        return lambda food:"煮熟"+food;

    else:

        return lambda food:"做熟"+food;

cookFunc= lookUpCaiPu("涮羊肉")

print(cookFunc("羊肉"))

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部