目录

一、函数定义

二、函数调用

1.打印Hello World

2.判断最大值

3.计算矩形面积

4.help说明文档

三、参数传递

(一)位置参数

(二)关键字参数

(三)默认参数(缺省参数)

(四)可变参数(收集参数)

1.位置可变参数(接收所有的位置参数,返回一个元组)

2.关键字可变参数(接收所有关键字,返回一个字典)

(五)变量

1.局部变量

2.全局变量

3.在函数内部修改全局变量(global)

四、多函数程序

(一)多函数程序执行流程

(二)代码示例

五、函数返回值

(一)return

(二)多函数返回值做参数传递

六、拆包

(一)元组拆包

1.代码示例:

2.元组拆包:

(二)字典拆包

七、递归函数

八、Lambda表达式

(一)Lambda表达式概述

1.什么时候用lambda表达式?

2.lambda表达式语法

3.注意事项

(二)lambda表达式参数形式

1.无参数:

2.一个参数:

3.多个参数:

4.默认参数:

5.可变位置参数:

6.带条件的lambda表达式:

7.列表中的字典数据排序:

九、Lambda表达式之——高阶函数

(一)filter(函数名,可迭代对象)

1.查找[1,10]中的偶数:

(二)map(函数名,迭代对象)

1.计算[1,4]中每个元素的平方:

(三) reduce(函数名(x,y),可迭代对象)

1.求列表内值的累加和:

2.计算[1,100]累加和:


一、函数定义

        函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。python中的函数相当于java中的方法。

python如何连续调用函数 python函数调用3次_全局变量

Python 定义函数使用 def 关键字,一般格式如下:

def 函数名(参数列表):

        函数体

默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。

注意:函数名要小写,函数一定要调用,不调用不会执行,有形参要传入参数

二、函数调用

1.打印Hello World

def helloworld():
    print('Hello World!!!')


helloworld()  # Hello World!!!

2.判断最大值

def nummax(a, b):
    if b > a:
        return b
    else:
        return a


a = 10
b = 8
print(nummax(a, b))   # 10

3.计算矩形面积

# 计算面积函数(长*宽)
def area(height, width):
    return height * width


i = area(height=10, width=2)
print('面积为:', i)   # 面积为: 20

4.help说明文档

注意:help的内容一定要写在函数名下方才可以打印出来,否则无效,支持换行

def test01(a, b):  # a,b是形参
    """最大值
    函数"""  # 说明文档可以换行
    if a >= b:
        return a
    else:
        return b


# 调用函数
print('最大值为:', test01(4, 8))
help(test01)

运行结果:

python如何连续调用函数 python函数调用3次_python_02

三、参数传递

(一)位置参数

定义:在定义函数时,参数的名字和位置已被确定。

def 函数名(姓名,年龄,性别):

        print(f'您的姓名是{姓名},性别是{性别},年龄是{年龄}')



函数名(‘张三’,20,男)


注意:形参与实参位置对应才能够生效

def abc(姓名, 年龄, 性别):
    print(f'您的姓名是{姓名},性别是{性别},年龄是{年龄}岁')


abc('张三', 20, '男')    # 您的姓名是张三,性别是男,年龄是20岁

(二)关键字参数

        定义:传入实参时,明确参数的变量名,参数之间不存在先后顺序。函数调用时,通过“键-值”的形式加以指定,清除了参数的顺序问题。

def test02(姓名, 年龄, 性别):
    print(f'您的姓名是{姓名},性别是{性别},年龄是{年龄}岁')


test02('张三', 性别='男', 年龄=20)    # 您的姓名是张三,性别是男,年龄是20岁

注意:调用函数时,如果有位置参数,位置参数必须在关键字参数的前面,否则会报错。

(三)默认参数(缺省参数)

        定义:参数指定默认值,调用时不传实参,就用默认值。

def test03(姓名, 年龄, 性别='男'):
    print(f'您的姓名是{姓名},性别是{性别},年龄是{年龄}岁')

test03('张三', 20)    # 您的姓名是张三,性别是男,年龄是20岁
test03('李四', 23, 性别='男')   # 您的姓名是李四,性别是男,年龄是23岁

注意:调用函数时,如果由位置参数,位置参数必须在默认参数的前面,否则会报错。

(四)可变参数(收集参数)

1.位置可变参数(接收所有的位置参数,返回一个元组)

def 函数名(*args):

print(args)

def test04(*args):
    print(args)


test04(20, 80)  # (20, 80)

2.关键字可变参数(接收所有关键字,返回一个字典)

def test05(**kwargs):
    print(kwargs)


test05(name='王五', age=17, gender='男')

# {'name': '王五', 'age': 17, 'gender': '男'}

(五)变量

1.局部变量

        定义在函数内部的变量,即只在函数内部生效。

def test06():
    a = 45  # 定义局部变量
    print(a)  # 函数体内部(定义函数下方缩进代码)访问,能访问到a这个变量


test06()  # 调用函数
print(a)  # 报错!!!  a是内部变量,作用域在函数内部,外部无法访问

2.全局变量

        定义在函数外部的变量,即只在函数内部和外部都生效。

a = 78


def test07():
    print(a)


test07()    # 调用函数    78
print(a)    # 78

3.在函数内部修改全局变量(global)

注意:不要轻易修改全局变量,除非万不得已!!!

a = 78


def test07():
    global a  # 声明a为全局变量(外部变量)
    a = 10  # 对变量a重新赋值
    print(a)


test07()  # 调用函数  10

四、多函数程序

(一)多函数程序执行流程

        一般在实际开发过程中,一个程序往往由多个函数组成,并且多个函数共享某些数据。

多函数公用全局变量的流程:

1.声明全局变量

2.定义两个函数

3.函数1修改全局变量,函数2访问全局变量

4.先调用函数1(函数1修改了全局变量),再调用函数2时就可以使用修改后的全局变量了。

(二)代码示例

a = 999


def test08():
    global a  # 声明a是一个全局变量,就是外部变量
    a = 20  # 修改变量a的值
    print(a)


def test09():
    print(a)


test09()  # 999
test08()  # 20

五、函数返回值

(一)return

        原理与java中的return一样。

python如何连续调用函数 python函数调用3次_全局变量_03

1.如果函数中有多个return只返回符合条件的那一句,遇到return退出当前函数。

2.多个返回值携程return a,b 返回为一个元组。

3.return后面可以连接列表、元组或字典,也能返回多个返回值。

代码示例:

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


i = test10(4, -9)
print(i)  # -5

(二)多函数返回值做参数传递

编写步骤:

1.定义函数1,return返回一个值。

2.定义带形参的函数2,打印形参。

3.将调用函数1的返回值,赋值给一个变量。例如:变量名=函数名1()。

4.调用函数2,用刚才的变量做参数。例如:函数名2(变量名)。

代码示例:

def test11():
    return 11


def test12(a):
    return a


b = test11()
print(b)  # 11
c = test12(b)
print(c)  # 11

六、拆包

(一)元组拆包

元组拆包——return后面有多个变量,用","号分割会返回一个元组。

如果不显示元组,而是分开显示后面的变量值就要用到元组拆包。

1.代码示例:

def test13(a, b, c):
    return a, b, c


i = test13(7, 8, 9)
print(i)  # (7, 8, 9)

2.元组拆包:

def test14():
    return 11, 45


a, b = test14()
print(a)  # 11
print(b)  # 45

(二)字典拆包

        对字典拆包取来的是字典的“键”。

代码示例:

# 新建一个字典
sites = {'name': '张三', 'age': 18}


def test14():
    return sites


a, b = test14()
print(a)  # 返回键
print(b)

print(sites[a])  # 返回键对应的值
print(sites[b])

print(a, '-->', sites[a])  # 返回键和值
print(b, '-->', sites[b])

运行结果:

python如何连续调用函数 python函数调用3次_全局变量_04

七、递归函数

函数内部自己调用自己,必须留有出口。

经典案例:计算1~100的和

递归只能计算[1,998]以内的累加和,>=999就会报RecursionError错误。

# 计算1~100的和
def test15(a):
    if a == 1:
        return 1  # 如果是1,直接返回1--设置的出口
    num = a + test15(a - 1)  # 如果不是1,重复执行累加
    return num  # 返回累加的结果


i = test15(100)
print(i)  # 5050

八、Lambda表达式

(一)Lambda表达式概述

1.什么时候用lambda表达式?

当函数有一个返回值,且只有一句代码,可以用lambda简写。

2.lambda表达式语法

lambda 形参:表达式

3.注意事项

1.形参可以省略,函数的参数在lambda中也适用。

2.lambda函数能接收任何数量的参数但只能返回一个表达式的值。

(二)lambda表达式参数形式

1.无参数:

def test16():
    return 16


print(test16())  # 16

# 使用lambda改进后:
test17 = lambda: 100
print(test17())    # 100

# 更简洁的写法:
print((lambda: 100)())    # 100

2.一个参数:

def test18(a):
    return a


print(test18(100))  # 100

# lambda写法
print((lambda a: a)(100))  # 100

3.多个参数:

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


print(test19(10, -1))  # 9

# lambda写法:
print((lambda a, b: a + b)(10, -1))  # 9

4.默认参数:

def test20(name, age, gender='男'):
    return name, age, gender


print(test20('张三', 10))  # ('张三', 10, '男')

# lambda写法:
print((lambda a, b, c=5: a + b + c)(1, 3))  # 9

5.可变位置参数:

def test21(*args):
    return args


print(test21(1, 2, 3))  # (1, 2, 3)


# 返回元组
print((lambda *args: args)(1, 2, 3))  # (1, 2, 3)

# 返回字典
print((lambda **kwargs: kwargs)(name='张三', age=20))  # {'name': '张三', 'age': 20}

6.带条件的lambda表达式:

条件语句(三目运算):条件成立执行的表达式if条件else条件不成立执行的表达式。

print((lambda a, b: a if a > b else b)(1, 4))  # 4

7.列表中的字典数据排序:

sites = [{'name': '张三', 'age': 48}, 
         {'name': '李四', 'age': 28}, 
         {'name': '王五', 'age': 38}]
sites.sort(key=lambda x: x['age'], reverse=False)
print(sites)
# [{'name': '李四', 'age': 28}, {'name': '王五', 'age': 38}, {'name': '张三', 'age': 48}]

九、Lambda表达式之——高阶函数

高阶函数就是基于已有的函数定义新函数,以函数作为参数,返回也是函数。

python如何连续调用函数 python函数调用3次_python_05

(一)filter(函数名,可迭代对象)

python如何连续调用函数 python函数调用3次_python_06

1.查找[1,10]中的偶数:

print(list(filter(lambda x: x % 2 == 0, range(1, 11))))
# [2, 4, 6, 8, 10]

(二)map(函数名,迭代对象)

python如何连续调用函数 python函数调用3次_开发语言_07

1.计算[1,4]中每个元素的平方:

print(list(map(lambda x: x ** 2, range(1, 5))))  # [1, 4, 9, 16]

(三) reduce(函数名(x,y),可迭代对象)

python如何连续调用函数 python函数调用3次_全局变量_08

1.求列表内值的累加和:

import functools  # 导入模块

sites = [1, 2, 3, 4]


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


num = functools.reduce(test21, sites)
print(num)  # 10

2.计算[1,100]累加和:

import functools  # 导入模块
print(functools.reduce(lambda x, y: x + y, range(1, 101)))  # 5050