第7章 函数

115 阅读3分钟

第7章 函数

使用函数的优点:

  • 减少程序中的代码重复量。(去重)
  • 把大而复杂的问题分解成小问题。(拆解)
  • 有助于提升代码的整洁度,使代码更易于理解。(干净)
  • 使一段代码可以重复使用多次。(复用)

根据函数所在作用域的不同分为:

  • ① 函数:在模块中但是类之外定义,作用域为当前模块。
  • ② 嵌套函数:在别的函数中定义的函数。
  • ③ 方法:在当前类中定义的函数。

7.1 定义函数

语法格式:

def 函数名 ([参数列表]):
    函数体
    #如果没有数据要返回,则可以省略return语句
    return 返回值

① 圆括号内是形参列表,如果有多个参数则使用逗号分隔开,即使该函数不需要接收任何参数,也必须保留一对空的圆括号。

② 圆括号后的“ : ”必不可少。

③ 函数体相对于def关键字必须保持缩进。

④ 函数体中可以使用return语句返回值。return语句可以多条,在这种情况下,一旦第一条return得到执行,函数立即终止。return可以出现在函数体的任何位置。

7.2 调用函数

语法格式:函数名 ([实参列表])

def cal(one,two):
    print("第一个数: ",one)
    print("第二个数: ",two)
    return one+two
​
#使用位置参数调用函数
print("sum:  ",cal(1,2))
​
​
#使用关键字参数调用函数
print("sum: ",cal(two=567,one=123))

使用位置参数调用函数: 实参列表传递参数的顺序必须与形参列表保持一致。

使用关键字参数调用函数: 关键字的名称就是定义函数时形参的名称,实参不再受形参的顺序限制(可读性高)

ps:函数在调用之前,必须先声明,再使用。(python解释型语言,没有预编译)

7.3 参数的默认值

在python中没有函数重载的概念,而是为函数的参数提供默认值实现。

调用该函数时,如果没有传入对应的实参值,则函数使用声明时指定的默认参数值。

默认值参数必须写在形参列表的右边

def eat(food="水果"):
    return "你喜欢吃{0}".format(food)
​
print(eat("薯条"))#你喜欢吃薯条
print(eat())#你喜欢吃水果

7.4 可变参数

Python中的函数可以定义接收不确定数量的参数,这种参数被称为可变参数。可变参数有两种,即在参数前***

基于元组的可变参数

def sum(*num):
    total=0
    for number in num:
        total+=number
    return total
#多个参数会被组装成元组num
print(sum(1,2,3,4,5))
print(sum(1,3,5,7,9,10))

基于字典的可变参数

def show_info(**info):
    print("--------show_info------")
    for k,v in info.items():
        print('{0}-{1}'.format(k,v))
show_info(name="toro",age=15,sex="man")        
show_info(stu_id="5220753",stu_no="1")

7.6 函数类型

过滤函数filter()

格式:filter(function,iterable)

  • function是一个提供过滤条件的函数,返回布尔值(判断)
  • iterable是容器类型的数据(序列)
def f1(x):
    return x>50#找出大于50的元素
data1=[23,41,56,4,75,57]
filtered=filter(f1,data1)
data2=list(filtered)#转换成列表
print(data2)

注意:filter()函数的返回值并不是一个列表,加果需要返列表类型的数据,则还需要通过list()函数进行转换

映射函数map()

格式:map(function,iterable)

  • function是一个提供变换规则的函数,返回变换之后的元素(变换规则)
  • iterable是容器类型的数据(序列)
def f1(x):
    return x*2#变换规则*2
data1=[23,41,56,4,75,57]
filtered=map(f1,data1)
data2=list(filtered)#转换成列表
print(data2)#[46, 82, 112, 8, 150, 114]

lambda()函数

格式:lambda 参数列表:lambda体

def f1(x):
    return x>50# lambda x:(x>50),等价于上面两行代码def f1(x):
    return x*2# lambda x:(x*2),等价于上面两行代码