Python超级简单入门学习之基本语法三 函数

本文深入解析Python函数的定义与使用,包括普通函数、函数直接量、缺省参数、不定长参数等概念,同时介绍了如何将函数作为类成员、局部成员及高阶函数的应用。

函数

1.定义函数

a.普通函数定义
   通过def关键字定义函数,之后跟函数名称和小括号包裹的参数列表,之后跟一个冒号,在其后编写函数体。
函数体的第一行内容 ,可以直接是一个字符串,此字符串不影响函数体的内容,相当于是该方法的文档声明,用来描述函数的功能,可以在后续查看。
函数内容需要缩进。
  通过return关键字在函数内部返回,并可以选择性返回一个返回值,如果return后没有明确的返回值,则默认返回的是一个None。
def functionname( parameters ):
“函数_文档字符串”
function_suite
return [expression]
示例:

#定义函数
def sumx(n1,n2):
    "两数求和函数"
    return n1 + n2

b.函数直接量定义函数
   通过lambda表达式来声明一个函数,lambda关键字之后跟参数列表,再跟冒号,之后是函数的体,这种方式声明的函数函数体只能是一个表达式,如果函数体有多条语句,则无法通过此方式定义。
funcx = lambda arg1, arg2: arg1 + arg2;
案例:

#函数直接量定义函数
sumx = lambda n1,n2:n1+n2;
print(sumx(2,3))

2.函数的调用

` 通过函数名之后跟小括号传入参数值就可以用调用函数了
函数调用过程中,也可以在实参列表中明确的指定实参要赋值给哪一个形参,从而实参 列表的顺序可以和形参列表不同

#调用函数
r = sumx(2,3)
print(r)
r = sumx(n2 = 2,n3 = 3)	

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

#缺省参数
def sumx2(n1,n2=10):
    return n1 + n2
print(sumx2(2,3))
print(sumx2(2))	 

4.不定长参数
  类似于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)

5.函数是一等公民
  在python中函数是一等公民,可以将函数理解为一种特殊的对象,函数名指向该对象的引用。具有完整的能力,属性能做的函数都可以做。

a.作为类的成员

#函数作为类的成员
class Person:
    name="zs"
    age=19
    def eat(self,food):
        print("吃。。。"+food)
    def sleep(self):
        print("睡。。。")
b.作为局部成员
#函数作为局部成员
def eat(food):
    zl = "孜然"
    def cook(food):
        return "做熟"+food +"加" + zl
    print("吃"+cook(food))

c.高阶函数作为方法参数

#高阶函数  将函数作为方法参数传递
def eatx(food,how2Cook):
    food2 = how2Cook(food)
    print("吃。。"+food2)
def cookYRC(food):
    return "烤熟"+food
eatx("羊肉串",cookYRC)
eatx("涮羊肉",lambda food:"煮熟"+food)
d.高阶函数作为方法返回值
#高阶函数  将函数作为另一个函数 的返回值返回
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("羊肉"))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值