Python函数基础详解(狠狠爱住)

函数的定义

在Python中,函数定义是指创建函数并定义其行为的过程。

一个简单的函数定义示例:

def greet(name):"""这是一个向用户打招呼的函数"""print(f"Hello, {name}!")greet("Alice")

在上面的示例中:

  • def 关键字用于定义函数。
  • greet 是函数的名称。
  • (name) 是函数的参数列表,这里定义了一个名为 name 的参数,用于接收用户的名字。
  • 冒号 : 表示函数定义的结束,下面缩进的代码块是函数体。
  • """这是一个向用户打招呼的函数""" 是函数的文档字符串(docstring),用于描述函数的功能和使用方法。可以使用 help() 函数查看函数的文档字符串。
  • print(f"Hello, {name}!") 是函数体,用于输出向用户打招呼的信息。

在调用函数时,只需使用函数名并传递参数即可。

在上面的示例中,greet("Alice") 调用了 greet 函数,并传递了一个参数 "Alice"

Python函数的定义可以包含以下几个组成部分:

  1. 函数名称: 用于唯一标识函数的名称。
  2. 参数列表: 函数可能接受的输入值,也称为参数或者形参。
  3. 函数体: 包含在函数内部的代码块,执行函数的具体任务。
  4. 返回值: 函数可以返回一个值,用 return 关键字指定。

另外,Python还支持默认参数、可变参数、关键字参数等高级函数定义方式,这些可以增加函数的灵活性和可用性。往下看:

函数参数

Python中的函数参数可以分为四种类型:位置参数、默认参数、可变位置参数和可变关键字参数。下面我将详细解释每种类型的参数:

  1. 位置参数: 位置参数是函数定义中最常见的参数类型。它们按照顺序传递给函数,调用函数时必须按照函数定义的顺序提供相应数量的参数。

    def add(x, y):return x + yresult = add(3, 5)
    print(result)  # Output: 8

    xy 是位置参数,分别对应函数 add 的第一个和第二个参数。

  2. 默认参数: 默认参数在函数定义时就已经指定了默认值,调用函数时可以不传递对应的参数,使用默认值。

    def greet(name, greeting="Hello"):return f"{greeting}, {name}!"print(greet("Alice"))       # Output: Hello, Alice!
    print(greet("Bob", "Hi"))   # Output: Hi, Bob!
    
    greeting 是一个默认参数,如果调用函数时不提供该参数,将使用默认值 "Hello"
  3. 可变位置参数: 可变位置参数允许函数接受任意数量的位置参数。在函数定义时,在参数名前面加上一个星号 * 即可。

    def add_all(*args):result = 0for num in args:result += numreturn resultprint(add_all(1, 2, 3, 4))   # Output: 10
    

    *args 是一个可变位置参数,允许函数接受任意数量的位置参数,并将它们作为元组传递给函数体。

  4. 可变关键字参数: 可变关键字参数允许函数接受任意数量的关键字参数。在函数定义时,在参数名前面加上两个星号 ** 即可。

    def print_info(**kwargs):for key, value in kwargs.items():print(f"{key}: {value}")print_info(name="Alice", age=30, city="New York")
    # Output:
    # name: Alice
    # age: 30
    # city: New York
    

    **kwargs 是一个可变关键字参数,允许函数接受任意数量的关键字参数,并将它们作为字典传递给函数体。

我们在实际编程中,根据需求选择合适的参数类型可以使函数更加灵活和易用。

函数的返回值

函数的返回值是指函数执行完毕后,向调用者返回的结果。在Python中,使用return语句来指定函数的返回值。

函数可以返回0个或多个结果

可以有返回值,也可以没有返回值

可以有return,也可以没有return

如果函数没有明确指定 return 语句,或者 return 后面没有跟任何表达式,函数将默认返回 None

并且一个函数可以返回任何类型的值,包括数字、字符串、列表、元组、字典、甚至是其他函数或对象。

举个例子:

def add(x, y):return x + yresult = add(3, 5)
print(result)  # Output: 8

在这个例子中,add 函数接受两个参数 xy,并返回它们的和。调用 add(3, 5) 后,返回值 8 被赋给变量 result,然后打印出来。

没有返回值的例子:

def greet(name):print(f"Hello, {name}!")result = greet("Alice")
print(result)  # Output: None

在这个例子中,greet 函数只打印一条问候语,没有指定返回值,因此调用 greet("Alice") 后,result 的值为 None

需要注意的是,一旦函数执行到 return 语句,函数的执行就会立即停止,并将指定的返回值传递给调用者。

因此,return 语句通常出现在函数体的最后,但在某些情况下也可以出现在函数体的中间,这取决于函数的逻辑。

本专栏还有其他文章供学习参考以及备忘用,欢迎观看。

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

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

相关文章

【matlab基础知识代码】(十八)无约束最优化问题

min下面的x称为优化向量或者是决策变量 匿名函数法 >> f(x)(x(1)^2-2*x(1))*exp(-x(1)^2-x(2)^2-x(1)*x(2)); x0[0; 0]; [x,b,c,d]fminsearch(f,x0), x 0.6111 -0.3056 b -0.6414 c 1 d 包含以下字段的 struct: iterations: 72 funcCount: 137 algor…

STM32:GPIO输入输出

文章目录 1、GPIO介绍1.1 GPIO的基本结构1.1 GPIO的位结构 2、 GPIO工作模式3、GPIO标准外设库接口函数3.1 RCC接口函数3.2 GPIO接口函数3.2.1 GPIO的读取函数3.2.1 GPIO的写入函数 4、GPIO的初始化 1、GPIO介绍 GPIO(General Purpose Input Output)通用…

bugfix:若依框架下对某个url接口权限放行,登陆后调用却提示403无权限

引言 在构建基于若依(RuoYi)框架的现代Web应用时,API接口的安全与权限管理是不可或缺的一环。Spring Security作为业界广泛采用的安全框架,为若依提供了强大的权限控制能力。然而,在实际开发过程中,开发者常会遇到登录用户访问特…

synchronized对象锁和类锁

一、什么是对象锁和类锁 顾名思义 对象锁可以锁住同一对象下synchronized修饰的方法,但不会影响其他对象。synchronized修饰普通方法就为对象锁。 类锁static synchronized修饰一个方法,当一个线程在执行该方法时,其他任何线程用任何对象调…

软件测试之 接口测试 Postman使用

接口测试 URL HTTP协议 HTTP 请求部分 HTTP响应部分 Postman使用 界面介绍 这里 注意 如果你无法访问 那么 captchaImage这个打错了,给的资料中是错误的地址 https://kdtx-test.itheima.net/api/captchaImage登录接口 科大天下 第一个接口的登录设置 https://kd…

使用map类型的参数在mapper.xml中使用案例

使用map类型的参数在mapper.xml中使用案例 简介:在常见的开发中,对于参数的装载一般使用map类型方式,这样可以避免创建很多参数实体类,不管嵌套多层的数据参数都可以通过map拿取,对于嵌套多层的map,我们需…

如何在Java中使用异常处理机制

如何在Java中使用异常处理机制在Java中,异常处理是一种在程序运行时识别和响应错误情况的机制。它允许程序在出现异常时继续执行,而不是崩溃。Java异常处理机制的核心概念包括try、catch、finally、throw和throws关键字。下面详细介绍这些概念&#xff0…

已知哈夫曼节点个数,求哈夫曼字符编码数

哈夫曼编码(Huffman Coding)是一种用于无损数据压缩的嫡编码(权编码)算法。 在哈夫曼树中,每个叶子节点都代表一个字符,而节点的权重通常代表字符的频率。在哈夫曼编码中,每个字符都会被赋予一个二进制编码。为了获得这些编码,我…

云渲染动画300帧需要多久呢?瑞云渲染为你揭秘

在动画制作过程中,渲染的速度非常关键。对于一个项目需要渲染的300帧来说,由于硬件的限制,许多公司的设备可能无法快速完成这项任务。此时,借助云渲染服务的强大计算能力,可以显著减少完成时间,从而提速整个…

独孤思维:副业拉新排名第一很牛吗

01 30年河东,30年河西。 我从来不觉得,自己星球拉新第一,或者小报童直播一场卖80份有多牛。 因为比我牛比的,比我拉新多的大佬多了去了。 这个5月,比我潜在爆发的牛人也有很多。 过去的历史成绩,代表当…

【Java基础】初识正则表达式

正则表达式只适用于字符串 匹配matches 实际使用的是String类中定义的方法boolean matches(String regex) public static void piPei( ){String regex"[1][356789]\\d{9}";boolean boo"14838384388".matches(regex);System.out.println(boo); }验证qq号…

QtConcurrent::run操作界面ui的注意事项(2)

前面的“QtConcurrent::run操作界面ui的注意事项(1)”,末尾说了跨线程的问题,引出了Qt千好万好,就是跨线程不好。下面是认为的最简单的解决办法:使用QMetaObject::invokeMethod(相比较信号-槽&a…

构建无服务器数仓(二)Apache DolphinScheduler 集成以及 LOB 粒度资源消费分析

引言 在数据驱动的世界中,企业正在寻求可靠且高性能的解决方案来管理其不断增长的数据需求。本系列博客从一个重视数据安全和合规性的 B2C 金融科技客户的角度来讨论云上云下混合部署的情况下如何利用亚马逊云科技云原生服务、开源社区产品以及第三方工具构建无服务…

18 分页:介绍

目录 简单例子 页表存在哪里 列表中究竟有什么 分页:也很慢 内存追踪 小结 在解决大多数空间管理问题上面,操作系统有两种方法: 第一种就是将空间分割成不同长度的分片,类似于虚拟内存管理中的分段,但是这个方法…

电商平台自动回复脚本制作的流程!

随着电子商务的快速发展,电商平台在日常运营中面临着大量的客户咨询和服务需求,为了提高客户服务效率和质量,许多电商平台采用了自动回复脚本,以快速响应客户问题并提供准确的信息。 本文将详细介绍电商平台自动回复脚本制作的流…

证券期货市场失信记录代表什么?

证券期货市场失信记录是指参与证券期货市场的个人或机构在交易、信息披露、内部控制等方面存在违法违规失信行为的记录。 这些失信行为包括但不限于未履行承诺、拒不履行已达成的纠纷调解协议、未按期兑付本息、未按约定履行担保责任、实施犯罪行为,以及在融资融券…

SpringBoot MybatisPlus 配置动态表名多数据源

需求 业务场景: 日志、交易流水表或者其他数据量大的表,通过日期进行了水平分表,需要通过日期参数,动态的查询数据。 实现思路:利用MybatisPlus的动态表名插件DynamicTableNameInnerInterceptor ,实现Sql执行时&#…

Matten:视频生成与Mamba-Attention

Matten:视频生成与Mamba-Attention 摘要IntroductionRelated WorkMethodology Matten: Video Generation with Mamba-Attention 摘要 在本文中,作者介绍了Matten,一种具有Mamba-Attention架构的尖端潜在扩散模型,用于视频生成。在极小的计算…

带EXCEL附件邮件发送相关代码

1.查看生成的邮件 2.1 非面向对象的方式(demo直接copy即可) ​ REPORT Z12. DATA: IT_DOCUMENT_DATA TYPE SODOCCHGI1,IT_CONTENT_TEXT TYPE STANDARD TABLE OF SOLISTI1 WITH HEADER LINE,IT_PACKING_LIST TYPE TABLE OF SOPCKLSTI1 WITH HEADER LIN…

《他强由他强,清风拂山岗;他横由他横,明月照大江》之三

常见的设计模式 1.策略模式 使用场景 通俗来说,策略模式就像是让你有一个策略的工具箱,在不同的情况下选择最合适的策略来解决问题。 使用场景通常包括以下一些: 多重条件判断语句: 当一个操作包含大量的条件判断语句,并且这些分支具有不同的行为时,可以使用策略模式来…