python(六)——函数

本文详细介绍了Python中的函数,包括定义函数、传递实参(位置实参、关键字实参、缺省参数)、多值参数的使用,如*args和**kwargs。还讨论了返回值,如何通过容器返回多个变量,以及函数的注释和模块的导入与使用,特别是如何导入特定函数和给模块或函数起别名。此外,还简述了匿名函数lambda表达式的应用。

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

函数

定义函数

例子:

def add_way(a,b):
    print("两个数加起来的结果是%d" % (a+b))

info_a = 1
info_b = 2
add_way(info_a,info_b)

在这里插入图片描述

实参:调用函数时传递给函数的信息。在上例中实参为info_a和info_b
形参:函数完成其工作所需要的一项信息。在上例中形参为a和b

传递实参

位置实参

函数调用时,基于形参的顺序与实参相关联。

def pet(pet_name,pet_type):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet('jack','dog')

在这里插入图片描述

关键字实参

关键字实参是传递给函数的名称-值对。这种方法能让你无需考虑函数调用中的实参顺序。

def pet(pet_name,pet_type):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet(pet_name = 'jack',pet_type = 'dog')

在这里插入图片描述

形参默认值——缺省参数

在函数的定义中可以通过给形参设置默认值,此时可以不给该值输入实参,则形参为默认值

def pet(pet_name,pet_type = 'dog'):
    print("这是一只名叫"+pet_name+"的"+pet_type)

pet(pet_name = 'jack') 

在这里插入图片描述

使用默认值时,在形参列表中必须先列出没有默认值的形参,再列出有默认值的形参。
若将默认值设置为空,则表示该形参是可选的,当有相应的实参输入时才有使用。

多值参数

在函数定义时,定义参数*args
*args用于接受多余的参数,以元组的格式来保存,只能接受多余的整数或字符串,但不能接受关键字参数
**kwargs能够接收多余的关键字参数,以字典的方式保存

def demo(num,*args,**kwargs):
    print(num)
    print(args)
    print(kwargs)

demo(10,20,30,40,name = "lin",age = 25)

在这里插入图片描述
例子:计算任意多个数字的和

def sum_numbers(*args):
    sum = 0
    print(args)
    for i in args:
        sum += i
    print(sum)

sum_numbers(1,2,3)

在这里插入图片描述

多值参数拆包
test()为函数
test(a,b,args,kwargs) 
相当于test(10,20,(30,40,50,60),{'name':'lin','age'=20})
test(a,b,*args,kwargs)
相当于test(10,20,30,40,50,60,{'name':'lin','age'=20})
test(a,b,*args,**kwargs)
相当于test(10,20,30,40,50,60,'name':'lin','age'=20)

返回值

在函数中,可以使用return语句将值返回到调用函数的变量。

def get_name(firstname,lastname):
    name = firstname + lastname
    return name

full_name = get_name('Lin','yu')
print(full_name)

在这里插入图片描述

使用默认值让实参变为可选

def get_name(firstname,lastname,midname = ''):
    name = firstname + midname + lastname
    return name

full_name1 = get_name('Lin','yu')
full_name2 = get_name('Lin','yu','xiao')
print(full_name1)
print(full_name2)

在这里插入图片描述

通过容器返回多个变量

通过列表返回:
def func():
    #定义变量,保存温度
    tmp = 27
    #定义变量,保存湿度
    wetness = 89.5
    #定义变量,保存当前PM2.5
    pm_25 = 120

    #返回多个值,借助容器,如列表、元组、字典等
    return [tmp,wetness,pm_25]

#main函数
ret = func()
print(ret)
print(type(ret))

在这里插入图片描述

元组返回多个返回值
def func():
    #定义变量,保存温度
    tmp = 27
    #定义变量,保存湿度
    wetness = 89.5
    #定义变量,保存当前PM2.5
    pm_25 = 120

    #返回多个值,借助容器,如列表、元组、字典等
    return tmp,wetness,pm_25

#元组的拆分,要严格按照顺序和个数来确定
a,b,c = ret = func()
print(ret)
print(type(ret))
print(a)
print(type(a))
print(b)
print(type(b))
print(b)
print(type(b))

在这里插入图片描述

函数的注释

使用三双引号在函数名后进行注释,对于编程了解函数的功能有很大的作用。
此时能够通过把鼠标放在函数上能看到函数的注释,或者用help(函数名)语句把函数的注释输出。

def add_way(a,b):
    """
    该函数用于加法运算
    """
    return a+b;

help(add_way)

在这里插入图片描述

模块

模块的定义

函数的优点之一是能够将代码块与主程序分离,因此可以将函数存储在被称为模块的独立文件中,再将模块导入到主程序中,使用import语句导入模块。

1、模块是比函数更大的封装,模块中可以封装多个函数
2、原则上,任何一个python文件都可以作为模块,模块名要符合标识符命名规范
3、使用模块:
①导入模块:import 模块名
②使用模块中的工具:模块名.函数名 模块名.变量名
4、作用:把成熟稳定的代码封装到模块中,供其他开发者使用,提高开发效率。
5、注意:被导入的模块会被python解释器从头到尾扫描,如果遇到可执行的代码会直接执行。

model_test.py

print("正在调用")
def add_way(a,b):
    return a+b;


主程序.py
import model_test

info_a = int(input("请输入a的数值:"))

info_b = int(input("请输入b的数值:"))

result = model_test.add_way(info_a,info_b)

print("结果等于 %d" % result)

在这里插入图片描述

导入特定的函数

导入模块可以只导入一个特定的函数,而不把模块中的全部函数进行导入。

from model_test import add_way

info_a = int(input("请输入a的数值:"))

info_b = int(input("请输入b的数值:"))

result = add_way(info_a,info_b)

print("结果等于 %d" % result)

在这里插入图片描述

给导入的模块或者函数起别名

from model_test import add_way as add
import model_test as model

匿名函数

函数的引用

函数名就是一个变量名,保存当前函数体的引用地址。
在这里插入图片描述

匿名函数——lambda表达式

用lambda关键词创建小型匿名函数
其省略了def定义函数的标准步骤,可以定义功能简单的函数
语法:lambda 参数:表达式
特点:匿名函数把表达式作为整个返回值进行返回

# 定义匿名函数,不带参数的匿名函数,匿名函数本身就是函数体
print(lambda : 100)
print((lambda: 100)())

ret = lambda:100
print(ret)
print(ret())

# 定义匿名函数,带一个参数的匿名函数
# 匿名函数直接返回函数中的表达式
print((lambda x : x + 100)(30))

func = lambda x : x + 100
print(func(50))


# 定义匿名函数,带两个参数的匿名函数
func = lambda x,y: x + y
print(func)
ret = func(10,20)
print(ret)

print((lambda x, y: x + y)(30,40))


# 匿名函数作为函数的参数
def sum_number(a,b,opt):
    print("a=%d" % a)
    print("b=%d" % b)
    print("%d + %d = %d" % (a,b,opt(a,b)))

sum_number(10,20,lambda x,y: x+y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值