python教程从⼊门到实践第⼋章_《Python编程从⼊门到实 践》_第⼋章_函数 ⼀个简单的函数 先看⼀个简单的函数 defsay_hello():'''打印hello''' print("Hello!") say_hello()#运⾏结果 Hello! def为函数的关键字,say_hello为你定义的函数的名称,还可能在括号内指出函数为完成其任务需要什么样的信息,即便括号是空的,也是 必不可少的,最后以冒号结尾。 向函数传递信息 defsay_hello(name):'''打印hello''' print("Hello!" +name) say_hello('Frank')#运⾏结果 Hello! Frank 这⾥在括号⾥⾯加了⼀个变量name,然后将'Frank'传递给了name,输出。 实参和形参 在函数say_hello的定义中,变量name是⼀个形参——函数完成其⼯作所需的⼀项信息。在代码say_hello('Frank')中,其'Frank'就是⼀个 实参,实参是调⽤函数时传递给函数的信息。 传递实参 位置实参 你调⽤函数时,Python必须将函数调⽤中的每个实参都关 在Python编程中,函数是一种非常重要的结构,它允许我们将代码组织成可重复使用的模块,从而提高代码的可读性和效率。在《Python编程从入门到实践》第八章中,主要讲解了函数的基本概念、参数传递以及如何使用函数返回值。 函数的定义使用`def`关键字,后面跟着函数名,例如`say_hello`。函数名应简洁明了,反映函数的主要功能。函数定义后通常有一个文档字符串(docstring),用于描述函数的作用。空括号表示该函数不接受任何参数,即使没有参数,括号也是必要的。在`say_hello`的例子中,它只是一个打印"Hello!"的简单函数,通过调用`say_hello()`即可执行。 当需要传递信息给函数时,可以在括号内添加形参。例如,`say_hello(name)`函数接收一个名为`name`的形参,然后在函数内部使用它。在调用`say_hello('Frank')`时,'Frank'作为实参传递给`name`,函数根据实参的值进行相应操作,输出"Hello! Frank"。 实参和形参是函数调用中的两个关键概念。形参是函数定义中声明的变量,它们是函数执行过程中临时存储信息的位置。实参则是调用函数时提供的具体值,这些值被赋给形参,供函数内部使用。在上面的`introduce(name, age)`函数中,`name`和`age`是形参,而当我们调用`introduce('Frank', '18')`时,'Frank'和'18'是实参。 函数的参数传递有两种方式:位置实参和关键字实参。位置实参是根据参数的顺序进行匹配,如`introduce('Frank', '18')`。关键字实参则允许我们按参数名指定值,如`introduce(name='Candy', age='18')`,这种方式更清晰且不依赖参数顺序。 函数还可以设置默认值,例如`introduce(name, age='20')`,当未提供`age`实参时,函数会使用默认值20。这样,我们可以只传入`name`参数,如`introduce('Candy')`,或者覆盖默认值,如`introduce(age='23', name='Frank')`。 函数不仅可以输出结果,还可以通过`return`语句返回一个或多个值。例如,`get_formatted_name`函数接受名字和姓氏,返回格式化的全名。通过`return full_name.title()`,函数将处理后的全名作为返回值,如`'Jimi Hendrix'`。 在某些情况下,我们希望某些参数是可选的。例如,在`get_formatted_name`函数中,中间名`middle_name`设为可选,通过赋予默认值`''`(空字符串)。如果提供了中间名,函数将使用它,否则忽略。因此,我们可以选择性地传递`middle_name`,如`get_formatted_name('jimi', 'hendrix')`和`get_formatted_name('jimi', 'hendrix', 'dork')`。 本章深入介绍了Python函数的基本用法,包括定义、参数传递、返回值和可选参数等核心概念,这些都是编写高效、可维护Python代码的基础。通过学习和实践这些知识点,开发者能够更好地组织和重用代码,提升编程效率。
- 粉丝: 192
- 资源: 3万+
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
- (源码)基于Java和MySQL的学生信息管理系统.zip
- (源码)基于ASP.NET Core的零售供应链管理系统.zip