15 函数的定义和使用

本文介绍了Python中函数的定义和使用,包括函数定义的基本形式、参数类型、返回值处理,以及函数的调用规则。特别提到Python中一切皆对象,可以在函数内部定义函数,并讨论了lambda表达式的应用,如声明匿名函数和返回函数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.函数的定义

  • 在某些编程语言中,函数声明和函数定义是区分开的(例如c语言)。在这些编程语言中函数声明和函数定义可以出现在不同的文件中。
  • 但是在Python中,函数声明和函数定义是视为一体的。
  • 函数定义的基本形式如下:
def 函数名(函数参数):
    函数体
    return 表达式或者值
  1. 采用def进行函数定义,不用制定返回值的类型。
  2. 函数参数可以是0、1或者多个。并且,参数也不用指定类型。(Python中变量都是弱类型的,会根据值维护变量类型)
  3. 函数的返回值通过return语句获得。return可以出现在函数体的任何位置。如果没有return语句,会自动返回None。如果有return语句,但是后面没接任何表达式或值,也会返回None。

定义示例:

def add(a, b):
    return a + b  # 实现两个数相加

二.函数的使用

  • Python中,函数不允许向前引用。就是说在函数定义之前,不允许调用该函数。

例:编写一个函数实现最大公约数算法,通过函数调用代码实现求最大公约数。

def hcf(m, n):
    if m < n:
        m, n = n, m
    r = m % n
    while r != 0:
        m = n
        n = r
        r = m % n
    return n


m = int(input("输入第一个数:"))
n = int(input("输入第二个数:"))
print("二者的最大公约数为", hcf(m, n))
  • 在Python中一切皆是“对象”
def test(order='One'):
    return "Test" + order


print(test())  # 输出TestOne
answer = test  # 没有使用小括号,因为不是在调用test函数,而是将test放在answer变量里面
print(answer())  # 输出TestOne
del test  # 删除test函数
print(answer())  # 仍然输出TestOne
  • 可以在函数中定义函数
def hi(name='Holy'):
    print('The function is hi()')

    def greet():
        return 'The function is greet()'

    print(greet())


hi()

在这里插入图片描述这里要注意的是,greet()函数在hi()函数之外是不能进行访问的。

  • lambda表达式
    (1)可以用来声明匿名函数,即没有函数名字的临时使用的小函数。
    (2)只可以包含一个表达式,并且该表达式的计算结果为函数的返回值,不允许包含其他复杂的语句,但在表达式中可以调用其他函数。

    例如:

f = lambda x, y, z: x + y + z
print(f(1, 2, 3))  # 输出6
这种定义方式等价于如下定义方式:
def f(x, y, z):
    return x + y + z


print(f(1, 2, 3))
  • 函数的返回值
    函数可以使用return返回值,也可以把lambda表达式作为函数返回值

(1)把lambda表达式作为函数返回值

def math(k):
    if (k == 1):
        return lambda x, y: x + y  # 返回加法lambda表达式
    if (k == 2):
        return lambda x, y: x * y  # 返回乘法lambda表达式


action = math(1)
print("10+2=", action(10, 2))  # 输出10+2= 12
action = math(2)
print('2*5=', action(2, 5))  # 输出2*5= 10

(2)返回一个函数

def hi(name='Holy'):
    def greet():
        return 'The function is greet()'

    return greet  # 没加括号,代表不执行,只是传递


a = hi()
print(a)  # 输出<function hi.<locals>.greet at 0x100a7a5e0>  意味着a现在指向hi()函数中的greet()函数
print(a())  # 输出The function is greet()

(3)返回多个值
当函数返回多个值的时候,会把多个值放在一个元组或其他类型的集合中返回。

def demo(s):
    # 统计s中大小写字母个数
    result = [0, 0]
    for ch in s:
        if 'a' <= ch <= 'z':
            result[1] += 1
        elif 'A' <= ch <= 'Z':
            result[0] += 1
    return result


print(demo('abcdABC'))  # 输出[3, 4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值