Python中函数的介绍

news2024/11/24 22:58:14

在Python中,函数的三个要素是:函数名+参数+返回值

函数名:函数名是函数的标识符,用于唯一标识函数。在定义函数时,需要给函数一个名字,以便后续调用和引用。函数名应遵循命名规则,例如以字母或下划线开头,由字母、数字或下划线组成。命名规范可参考官网的PEP 8风格,地址如下:

https://peps.python.org/pep-0008/#function-and-variable-names

参数:参数是函数定义中用于接收输入值的变量。函数可以接受零个或多个参数,每个参数可以有自己的名称。参数允许在函数内部使用传递进来的值进行计算或处理。在调用函数时,可以向函数传递实际的参数值,这些值将被赋给函数定义中对应的参数变量。

返回值:返回值是函数执行完成后返回给调用者的结果。函数可以执行一系列操作,然后将结果返回给调用者进行进一步处理或使用。在函数定义中,可以使用return语句来指定函数的返回值。如果函数没有指定返回值,或者没有使用return语句,函数将默认返回None。

这三个要素共同构成了一个完整的函数定义和调用的过程。函数名用于唯一标识函数,参数用于接受输入值,返回值用于将结果返回给调用者。通过这种方式,可以封装和组织代码,实现代码的重用和模块化。

接下来我们一起看一个简单的函数定义的案例:

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

从上面的案例可以看到,我们定义一个函数的话,需要用到关键字def进行定义。return用来给函数add提供函数调用后的返回值。

给函数添加一些参数类型说明以及返回值类型说明:

def add(a: int, b: int) -> int:
    c = a + b
    return c

7bb6c2bd186860a3caf0c34eabad2d05.png

在参数后面加一个冒号,然后跟上类型,可以声明函数想要接收的参数类型(但在调用时不会强制校验类型,传入其他类型也不一定会报错),在函数名后面加上->类型 ,用来声明这个函数的返回值的类型。这样做的好处可以提高代码的可读性以及增加一些错误检测机制。

函数的参数类型介绍

  • 位置参数

    位置参数是函数定义中的参数,按照它们在函数调用中的位置进行匹配。当函数被调用时,参数的值按照位置顺序依次传递给函数。

def add(x, y):
    print(x)
    print(y)
    return x + y


result = add(3, 5)

在以上的案例中,位置参数3和5被传递给函数add的x和y,按照顺序,3将赋值给变量x,5将赋值给变量y。这是函数调用最常见的用法。特点:按照函数定义时参数的顺序去进行赋值。

  • 关键字参数

关键字参数是以"参数名=值"的形式传递给函数的参数。使用关键字参数时,可以不按照参数定义的顺序传递参数值,而是通过参数名进行匹配。

def add(x, y):
    print(x)
    print(y)
    return x + y
result = add(y=5, x=3)

注意:在函数调用的时候,关键字参数必须跟随在位置参数后面,否则会报错。

e507387dba397f99f42583bd9d5898fa.png

  • 默认参数

默认参数是在函数定义时给参数指定一个默认值。如果函数调用时没有提供相应的参数值,将使用默认值。默认参数通常在函数定义的末尾。

def add(x, y=0):
    print(x)
    print(y)
    return x + y


result = add(3,5)  
result = add(3)

在上面的案例中,如果调用add方法只传入一个参数时,比如add(3) ,那么默认y的值就是0。

  • 可变参数

    可变参数允许函数接收任意数量的参数,主要有两种可变长度的参数用法:

    *args:用于接收任意数量的位置参数,作为一个元组传递给函数。

    **kwargs:用于接收任意数量的关键字参数,作为一个字典传递给函数。

def print_items(*args):
    print(type(args))
    for item in args:
        print(item)




def print_dict(**kwargs):
    print(type(kwargs))
    for key, value in kwargs.items():
        print(f"{key}: {value}")




print_items(1, 2, 3, 4)  # 位置参数被当做元组处理(1, 2, 3, 4)
print_dict(a=1, b=2)  # 关键字参数被当做字典处理{'a': 1, 'b': 2}

上面脚本运行结果:

5ba84d0921e38aff75b390e7fa6872e9.png

下面再来看一些可变参数的其他用法:

5fae02e7d4754c72d2c7f980b15f74f1.png

def add(a, b=2, **kwargs):
    print(a, b, kwargs)




add(1)
add(1, 3)
# a进行传参,b使用默认值,进行解包传kwargs
add(1, **{"key": "value"})
# 给a,b进行传参,进行解包传kwargs
add(1, 3, **{"key": "value", "key1": "val", "key2": 'val2'})
# a传参,b使用默认值,进行键值对传kwargs
add(1, name="yy", key="value")
# 给a,b进行传参,进行键值对传kwargs
add(1, 3, name="yy", key="value")
add(6, 3, name="yy", **{"key":"value", "b":6})  # 该行运行报错,已经进行对b参数不能进行重复传参

d9a589a1845151edd2cd3fc39873eecd.png

说明:

传值的时候需要传键值对,如果要传dict需要在前面加上**,表示将这个dict的所有key-value当成独立的关键字参数(变成 key = value)传入到 kwargs●不用 dict 的话也可以直接key=value的写法,如果和默认参数重名,若前面没有传值的话,会当成默认参数传值;若有的话会直接报错
●声明函数时,默认参数不可以放在可变参数后面

76a60adc720ccccf0aefcdadc5898070.png

关注公众号,测试干货及时送达f0db9d59d0d0f4357926006ff6c40040.png

往期精彩回顾

5ea91c52bcb7bdc0a9cc4fb0b7229f8c.png

一篇文章为你揭秘pytest的基本用法

Anaconda-一个开源的Python发行版本

Python脚本读取Consul配置信息

Python中使用pickle库进行数据的序列化存储

Python小知识-函数传参怎么设置期望的传参类型?

python解析xml遇到的问题分享(命名空间有关)

分享一下最近使用python字典取值用法的收获

Python里面怎么判断某个字符串是否包含列表中的某一个元素

Python中列表的extend()方法介绍

Python中鸭子类型与多态介绍

Python中的抽象基类介绍

Python中的type与isinstance的区别

Python中类的属性、多继承、自省机制中的__mro__、__dict__ 和dir介绍

Python中__new__和__init__的区别与联系

62fe25ce739914016b2dec5957f3d56f.png

618,清华社 IT BOOK 多得图书活动开始啦!活动时间为 2023 年 6 月 7 日至 6 月 18 日,清华 社为您精选多款高分好书,涵盖了 C++、Java、Python、前端、后端、数据库、算法与机器学习等多 个 IT 开发领域,适合不同层次的读者。全场 5 折,扫码领券更有优惠哦!快来京东点击链接(https://pro.m.jd.com/mall/active/3Rho97HkMaGFycLzAWfFdvZdyvRn/index.html) IT BOOK 多得(或扫描京东二维码)查看详情吧!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/622241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HDSLB VPP 23.04 is formally released

1 摘要 近年来随着数字化技术的发展,数据中心以及边缘设备的网络带宽需求越来越高。作为部署在服务入口位置的4层负载均衡器,其性能要求也随之水涨船高。为了应对当前的市场需求,充分利用Intel的软硬件技术和优势,针对4层负载均衡…

一个奇葩的问题

大家好,这里是极客重生,最近遇到一个奇葩的网络问题,分享给大家,看完一定会觉得很奇葩。 问题现象 客户反馈有一个server端S, 两个client端C1, C2, S的iptables规则对C1, C2都是放通的,但是C2无法连接上S&a…

有奖征文 | 夙兴夜寐,铸梦网安

出品|MS08067实验室(www.ms08067.com) 本文作者:潜龙勿用 01 时光荏苒,流年岁月如白驹过隙,不停飞逝于眼前,在这车马星驰的人间,踏入网络安全领域已然三年有余。我也终于从一开始的不…

左移右移 2022年国赛 思维

思路: 简单的思维题,应该从后往前遍历操作。如果后面的对数i操作过,则前面对数i的操作都可以无视。可以通过栈这种数据结构实现后往前遍历。 AC代码: import java.io.*; import java.util.*; public class Main{public static …

Linux常用命令——groupdel命令

在线Linux命令查询工具 groupdel 用于删除指定的工作组 补充说明 groupdel命令用于删除指定的工作组,本命令要修改的系统文件包括/ect/group和/ect/gshadow。若该群组中仍包括某些用户,则必须先删除这些用户后,方能删除群组。 语法 gro…

LC3-仿真器的安装

LC3-仿真器安装 参考:Download and Install LC-3 | CS 131 - Computer Organization (comp-org-etext.netlify.app) 如觉得本文写的不够详细,可参考如上网址。 介绍 小型计算机LC-3 汇编环境是一种模拟指令架构(ISA),…

wpf 3d复习1

之前研究过一段wpf 3d显示机械臂的代码;复习一下看一下; 它的摄像机位置是,0.491531,0.298732,0.321531; 我想把看到物体变小;就是摄像机移远;把摄像机坐标都乘以3,变为 , …

chatgpt赋能python:Python平均值函数简介

Python平均值函数简介 Python是一种广泛使用的编程语言,因为它易于学习,语法简单,可以完成广泛的任务和应用程序开发。 在Python编程中,平均值函数是最基本、最常用的函数之一。平均值可以用来表示一组数据集的中心趋势指标。让…

微软为 VS Code 带来 C# 开发套件

微软于今天在 Marketplace 上架了一款适用于 Visual Studio Code 的官方 C# 开发套件 —— C# Dev Kit,通过更好地管理、测试,以及提供全新的 AI 功能,为 Linux、macOS 和 Windows 平台的开发者带来了更好的 C# 开发体验。 根据微软官方提供的…

关于语言模型私有化部署的讨论 | AIGC实践

上周在与TC同行关于AIGC实践的线上交流中,大家普遍比较关心的一个实践切入点是:语言模型的私有化部署——简单来说,就是在企业内部,部署一个属于自己的“ChatGPT”,对于本行业/专业知识,以及企业独有的产品…

【学习日记2023.6.7】之 MyBatisPlus入门

文章目录 MybatisPlus1. 入门案例1.1 SpringBoot整合MyBatisPlus入门程序 2. MyBatisPlus概述2.1 MyBatis介绍2.2 MyBatisPlus特性 3. MyBatisPlus的CRUD操作4. MyBatisPlus分页功能5. 开启MyBatisPlus日志5.1 解决日志打印过多问题5.1.1 取消初始化spring日志打印5.1.2 取消Sp…

基于SpringBoot+Vue的学生考勤管理系统设计与实现

博主介绍: 大家好,我是一名在Java圈混迹十余年的程序员,精通Java编程语言,同时也熟练掌握微信小程序、Python和Android等技术,能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架下…

【Web服务器】基于Nginx搭建LNMP架构

文章目录 一、安装 MySQL 数据库1. 安装Mysql环境依赖包2. 创建运行用户3. 编译安装4. 修改mysql 配置文件5. 更改mysql安装目录和配置文件的属主属组6. 设置路径环境变量7. 初始化数据库8. 添加mysqld系统服务9. 修改mysql 的登录密码10. 授权远程登录 二、编译安装 nginx 服务…

2024」预备研究生mem-论据和结论为简单句(下)

一、论据和结论为简单句-建立联系 二、结论包含完成推理 改版: 三、课后题

盘点一个Python网络爬虫问题

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 在天愿作比翼鸟,在地愿为连理枝。 大家好,我是皮皮。 一、前言 前几天在Python最强王者群【刘桓鸣】问了一个Python网络爬虫的问…

8自由度并联腿机器狗实现行走功能

1. 功能说明 本文示例将实现R309a样机8自由度并联腿机器狗行走的功能。 2. 并联仿生机器人结构设计 机器狗是一种典型的并联仿生四足机器人,其腿部结构主要模仿了四足哺乳动物的腿部结构,主要由腿部的节段和旋转关节组成。在设计机器狗的腿部结构时&…

实用教学Prompt 提示词实战:如何用 ChatGPT 指导高考语文作文写作

又是一年高考季,牵动着广大学生和家长的心。7 日上午,语文科目考试结束。 今年高考语文共7套试卷:全国甲卷、全国乙卷、新课标Ⅰ卷、新课标Ⅱ卷、北京卷、天津卷、上海卷。 以高考语文作文题目来实践检验一下,如何用合适的提问词&…

chatgpt赋能python:Python将首字母变成大写——提升SEO排名的一种简单方法

Python将首字母变成大写——提升SEO排名的一种简单方法 在SEO行业中,优化关键字密度和网站结构是常规且必要的工作。但是,除此之外,我们也应该注意到一些看似微不足道但可能对网站排名产生影响的细节。比如,对于文章标题和正文的…

Mocha AE:Track 模块

当对跟踪踪结果不是很满意的时候,可尝试更改下 Track(跟踪)模块中的选项之后重新跟踪。 Input 输入 Clip 剪辑 选择要跟踪的素材。 --Input 输入 --Layer Below 下方图层 Track Individual Fields 跟踪单个场 针对隔行扫描素材,…