Python编程学习之基础函数

2023-09-0407:49:00编程语言入门到精通Comments1,139 views1字数 3902阅读模式

函数概述

函数是Python中重要的组成部分。函数是一段实现某个功能的代码块,有自己的函数名,输入参数和返回值。其中,函数的参数和返回值都可以为空。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

函数的定义

Python中函数的定义比较简单。我们使用def关键字能够轻松的定义一个函数。比如,我们定义一个函数,接收两个整数,返回这两个整数相加的和。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:求两个数的和。在这个案例中,add叫做函数的名称,a和b叫做函数的参数,a+b是函数的返回值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

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


if __name__ == '__main__':
    print(add(1, 2))
    print(add(11, 22))
    print(add(111, 222))

return语句

return是Python内置的关键字,一般用在函数中,用来返回函数执行后的结果。不过,如果一个函数什么都不返回,return是可以省略的,此时函数默认返回None。return后面可以跟变量,表达式等,如果跟的是变量,则返回变量的值;如果跟的事表达式,则会将表达式进行计算,将得到的结果返回。另外,return的后面不仅可以跟一个变量或表达式,还可以跟多个,只需要用逗号隔开即可。当return后面跟多个变量或表达式的时候,表示该元组有多个返回值,多个返回值以一个元素的格式进行返回。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:函数没有return语句。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(a, b):
    print(a + b)


if __name__ == '__main__':
    print(add(1, 2))
    print(add(11, 22))
    print(add(111, 222))

示例:函数return后面有多个返回值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(a, b):
    return a + b, a - b, a * b


if __name__ == '__main__':
    r1, r2, r3 = add(11, 22)
    print(r1, r2, r3)

内部函数

内部函数指的是函数的内部,我们还可以定义函数。比如我们可以让让函数返回一个函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:内部函数的基本用法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def outer():
    print("外部函数执行")

    def inner():
        print("内部函数执行")

    return inner


if __name__ == '__main__':
    inner = outer()
    inner()

使用和修改全局变量

如果只是简单的使用全局变量,只需要在函数内部直接调用全局变量名即可。但是,如果要在函数内部对全局变量做修改,并希望修改后的值能够在全局生效,这个时候就需要使用global关键字,声明要使用全局变量,并让修改映射到全局变量。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:在函数内部使用并修改全局变量的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

# 全局变量
a = 11


def add(c):
    # 使用全局变量,并让修改能够影响到全局变量
    global a
    a += 33

    # 局部变量
    b = 22
    return a + b + c


if __name__ == '__main__':
    print("全局变量初始值:", a)
    print(add(33))
    print("全局变量修改值:", a)

函数参数概述

函数的参数可以有多种形式,常见的有必填参数,可选参数,可变数量的参数,可变数量的命名参数。另外,函数有形参和实参的说法。形参指的是我们定义函数的时候,给这个函数定义的所需的参数;实参指的是我们调用函数的时候实际传递的值。比如函数“add(a,b) ”,这里的a和b是形参,我们调用的时候“add(11,22)”,这里的11和22就是实参。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

必填参数

必填参数指的是当我们调用该函数时,必须要传递的参数。如果一个函数的参数没有默认值,也没有其他任何的修饰符,那么这个函数的参数就是必填参数。比如在咱们之前学习的add加法函数中,有两个参数a和b,这里的a和b都是必填参数,在调用的时候,如果不进行传递,会抛出异常。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:实现两个数相加的函数,a和b都是必填参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

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


if __name__ == '__main__':
    print(add(11, 22))

可选参数

可选参数也叫默认参数,即就是函数的参数携带有一个默认值,当调用的时候,可以传实参,也可以不传实参。如果传递了实参,则使用实参作为计算的值,如果没有传递实参,则使用默认值作为计算的值。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:使用可选参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(a=11, b=22):
    return a + b


if __name__ == '__main__':
    # 使用具体值
    print(add(11, 222))
    # 部分使用具体值,部分使用默认值
    print(add(11))
    # 使用默认值
    print(add())

可变参数

可变参数指的是函数的变量个数可以是0个,1个或者任意多个。可变参数一般使用“*args”表示,表示可以接收任意多个参数。args是一个可迭代对象,可以通过索引进行取值。本质上,args是一个元组类型。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:一个可以求任意多个整数之和的add函数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(*args):
    print(args, type(args))
    sum = 0
    for i in args:
        sum += i
    return sum


if __name__ == '__main__':
    print(add())
    print(add(1))
    print(add(1, 2))
    print(add(1, 2, 3))

可变命名参数

可变命名参数和可变参数一样,支持任意多个参数。不过,和可变参数不同的是,可变命名参数是一个字典,要求传递的时候,要使用“key=value”的方式进行传递。可变命名参数一般是使用“**kwargs”进行定义。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:可变命名参数实现加法。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(**kwargs):
    print(kwargs, type(kwargs))
    sum = 0
    for k, v in kwargs.items():
        sum += v
    return sum


if __name__ == '__main__':
    print(add())
    print(add(a=1))
    print(add(a=1, b=2))
    print(add(a=1, b=2, c=3))

多种类型参数

函数的参数有多种类型,多种类型的参数可以同时存在。比如,一个函数中,可以同时有必填参数,可选参数,可变参数,可变命名参数。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:多种类型的参数在一个函数中。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def add(a, b=22, *args, **kwargs):
    sum = a + b
    for i in args:
        sum += i
    for k, v in kwargs.items():
        sum += v
    return sum


if __name__ == '__main__':
    print(add(a=1))
    print(add(a=1, b=2))
    print(add(a=1, b=2, c=3))

闭包函数概述

闭包函数实际上就是一种遵循规范的内部函数。闭包函数必须返回的事一个内部函数,且这个内部函数中,必须使用了外部函数的变量。一个简单的闭包函数示例如下:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def outer():
    # 外部变量
    num = 10

    def inner():
        # 内部函数使用了外部函数的变量
        return 10 * 2

    # 返回的内部函数
    return inner


if __name__ == '__main__':
    inner = outer()
    print(inner())

匿名函数概述

匿名函数指的是没有函数名的函数,也叫lambda函数。不过,我们可以通过让函数赋值给一个变量名,让匿名函数有自己的名字。匿名函数一般用于高级函数中,作为高级函数的参数进行传递。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:使用匿名函数求两个数的和。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

# 表示接收两个参数a和b,返回a+b的结果
add = lambda a, b: a + b
print(add(1, 2))
print(add(11, 22))
print(add(111, 222))

递归函数概述

递归函数是一种常用于算法的特殊函数,指的是函数在自己的函数体中又调用该函数自身。递归函数的表现有点像是循环,能够重复的执行很多次结果,每次执行,参数都会发生变化,当执行到一定程度以后,函数退出。需要注意的是,在Python中,函数有递归深度的限制,并不能够无限的递归,这点一定要注意。即就是说,递归函数不适合层度非常什的递归场景。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

示例:使用递归函数求阶乘。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html

def fac(n):
    """递归求阶乘"""
    if n < 1:
        return 1
    return n * fac(n - 1)


if __name__ == '__main__':
    print(fac(1))
    print(fac(3))
    print(fac(5))
文章源自菜鸟学院-https://www.cainiaoxueyuan.com/ymba/55798.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/ymba/55798.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定