【AI_Python基础_06函数】

本文介绍了Python中函数的基础知识,包括定义函数、参数类型(位置参数、关键字参数、默认值、动态传参),返回值以及匿名函数和高阶函数的概念。通过实例详细讲解了函数的使用方法和各种参数的传递方式。
摘要由CSDN通过智能技术生成


前言

本章内容为函数的基础知识点和函数的用法
函数: 对某一个特定的功能或者代码快进行封装,在需要使用该功能时直接调用


一、定义函数

函数代码块以def关键词开头,后接函数标识符名称和圆括号()
例子:老奶奶每天都要骑自行车去菜市场买菜,买菜的时候讨价还价,买完回家。

print("1.其自行车")
print("2.去菜市场")
print("3.讨价还价")
print("4.回家")

但是,假如今天孙子闹脾气,要哄孙子。

print("1.其自行车")
print("2.去菜市场")
print("3.讨价还价")
print("4.回家")
print("哄哄孙子")

第二天又要跟老头吵架

print("1.其自行车")
print("2.去菜市场")
print("3.讨价还价")
print("4.回家")
print("打老头")

但是每天都要出去买菜,我们就可以把买菜定义成函数

def buy_cai():
    print("1.骑自行车")
    print("2.去菜市场")
    print("3.讨价还价")
    print("4.回家")

我们就可以简化后续代码:

buy_cai()
print("哄哄孙子")
buy_cai()
print("打老头")

1.骑自行车
2.去菜市场
3.讨价还价
4.回家
哄哄孙子
1.骑自行车
2.去菜市场
3.讨价还价
4.回家
打老头

二、函数的参数

定义函数的时候,可以根据需求在def ()的括号中添加参数,来举个例子。
定义一个函数来实现两个数之间的四则运算,(基本的+,-,*,/功能)。
我需要两个参数来接收需要计算的两个数字,还需要一个参数来接收我的运算符,如:

def jisuan(a, opt ,b):
    if opt == "+":
        print(a + b)
    elif opt == "-":
        print(a - b)
    elif opt == "*":
        print(a * b)
    elif opt == "/":
        print(a / b)
    else:
        print("你瞎写")

jisuan(99, "+", 66)

但是参数有几种分类,实际参数和形式参数。实际参数又分位置参数和关键字参数;形式参数又分为默认值参数和动态参数。下面来介绍这几种类型参数。

1.实际参数

1.1位置参数

上面的jisuan(a, opt ,b)函数中的aoptb就是位置参数,顾名思义位置参数就是按照位置传递信息。
来定义一个中午吃什么的函数:有主食、菜,再来个汤和饭后甜点

def chi(zhu, fu, tang, tian):
    print(zhu, fu, tang, tian)

我中午想吃:大米饭、韭菜炒鸡蛋、西湖牛肉羹、布朗尼。按照函数的参数定义的位置来传递我的数据就可以这样:

chi("大米饭", "韭菜炒鸡蛋", "西湖牛肉羹", "布朗尼")

1.2关键字参数

顾名思义,按照关键字的内容传递参数。
比如上面的吃饭函数,

chi(zhu="大米饭", tang="西湖牛肉羹", fu="烤牛肉", tian="布朗尼")

1.3混合参数

用关键字来传递数据,可以不按参数的顺序定义。
当然我们也可以混合使用:

chi("大米饭", "韭菜炒鸡蛋", tang="西湖牛肉羹", tian="哈根达斯")

需要注意的是:混合参数(位置参数在前,关键字参数放后面)

2.形式参数

2.1默认值参数

在函数声明的时候给变量一个默认值,如果实参不传递信息,此时默认值生效,反之则为实参所传递的信息。默认值参数在位置参数后
声明一个函数,统计班里同学的姓名、年龄、性别。但是在理工科班级男生比较多,女生比较少。我们可以,在性别设置默认值参数为男。如:

def lurn(name, age, gender="男"):
    print(name, age, gender)

lurn("张三", 18)
lurn("李四", 18)
lurn("王五", 18)
lurn("赵敏", 18, "女")
lurn("陈", 18, "女")

张三 18 男
李四 18 男
王五 18 男
赵敏 18 女
陈 18

2.2动态传参

在函数中,动态传参指的是通过一种机制,使函数能够接受任意数量的参数,而不需要提前声明参数的个数。有两种方式实现动态传参。

2.2.1*args

使用*args:这种方式允许函数接受任意数量的位置参数,它会将这些参数打包成一个元组传递给函数。在函数定义时,*args表示可变数量的位置参数。

def chi(*food):   # *表示位置参数的动态传参,*接收到的值会被统一放在一个元组里
    print(food)

chi("大米饭", "紫菜蛋花汤")

('大米饭', '紫菜蛋花汤')
2.2.2**kwargs

使用**kwargs:这种方式允许函数接受任意数量的关键字参数,它会将这些参数打包成一个字典传递给函数。在函数定义时,**kwargs表示可变数量的关键字参数。

def chi(a, b, *args, c="哈哈", **kargs):
    args = list(args)
    print(a, b, args, c, kargs)

chi(1, 2, 3, 4, 5, c="haha", hello=1, hello1=2)

1 2 [3, 4, 5] haha {'hello': 1, 'hello1': 2}

在这里做个总结,顺序:位置 > *args > 默认值 > **kwargs

3.函数的返回值

函数执行之后,会给调用方一个结果,这个结果就是返回值return

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

ret = func(12, 12)
print(ret**3)

13824
  • return可以返回值、计算式、元组、列表、bool值等等。
  • 如果只输入一个return默认返回None
  • 函数只要执行到了return,函数就会立即停止并返回内容,函数内的return的后续代码不会执行
def func(a, b):
    print(a + b)
    return   #  会让程序停止,后续代码不会执行,有点像循环里的break
    print(1) #	并没有打印数字1	

ret = func(12, 12)
print(ret)

24
None

4.匿名函数

在Python中,匿名函数通常使用lambda关键字来创建。匿名函数也被称为lambda函数,它是一种简单的、一行的函数,常用于临时需要一个小函数的地方。匿名函数的语法如下:

lambda 参数1,参数2,…: 返回值

  • lambda是关键字,表示你正在定义一个匿名函数。
  • arguments是函数的参数,可以有零个或多个参数,参数之间用逗号分隔。
  • expression是函数的返回值,通常是一个表达式,匿名函数会计算这个表达式并返回结果。
add = lambda x, y: x + y
print(add(3, 4))  # 输出: 7

5.高阶函数

在Python中,高阶函数是指可以接受一个或多个函数作为参数,或者返回一个函数作为结果的函数。

5.1返回函数作为结果

也可以叫做函数的嵌套。函数可以作为返回值进行返回,并在外部调用

def func():
    b = 10
    def inner():
        print(123)
    print(inner)
    return inner    # ******此时func()的返回值为 inner函数*******

b1 = func()     # b1此时就是嵌套的函数inner
b1()
print(b1)

5.1函数作为参数传递

高阶函数也可以接受其他函数作为参数,用于自定义行为。

def func1():
    print(1)
    def func2():
        print(3)
        def func3():
            print(5)
        print(4)
        func3()
        print(6)
    print(2)
    func2()
    print(7)

func1()

1
2
3
4
5
6
7

  • 31
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值