第8章 函数

8.1 定义函数

函数定义,向Python指出函数名,还可能在括号内指出函数为完成其任务需要什么样的信息。

1、向函数传递信息

在函数定义的括号内添加变量,通过在这里添加变量,就可以让函数接受你给变量指定的任何值。

2、实参和形参

函数中的变量是一个形参 ---- 函数完成其工作所需的一项信息。

在代码中变量的赋值是一个实参 ---- 实参是调用函数时传递给函数的信息。

8.2 传递实参

1、位置实参

调用函数时,每个实参都要关联到函数定义中的一个形参,最简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。

调用函数可以多次。

位置不能搞错。

2、关键字实参

是传递给函数的名称-值对。直接在实参中将名称和值关联起来,因此向函数传递时不会混淆,也无需考虑位置。

3、默认值

编写函数时,可以给每个形参指定默认值。在调用函数中给形参提供实参时,Python将使用实参值,否则,将使用默认值。

4、等效的函数调用

可以混合使用位置实参,关键字实参和默认值,通常有多种等效的函数调用方式。

5、避免实参错误

提供的实参,不能多于或者少于形参的数量。

8.3 返回值(重要)

函数并非总是直接显示输出,相反,它可以处理一些数据,并返回一个或一组值。函数返回的值被称为返回值。在函数中,可使用return语句将值返回到调用函数的代码行。返回值让你能够将程序的大部分繁重工作移到函数中去完成。从而简化主程序。

意思是调用函数,将所有形参赋值实参后,根据函数代码进行数据运算,并且把运算结果返回至函数中,在return语句中生成调用代码行。并且对所调用函数生成一个变量储存函数的值。下次调用该变量即为调用相应实参的函数,并且直接调用return的函数值。

如果没有return语句,函数会默认返回一个none。也就是有了return语句之后这个函数实参之后就有值,否则就是没有值。

1、返回简单值

在函数定义通过形参接受实参。并将结果存储至函数内变量中。并将结果用return语句返回到函数调用行。调用返回值的函数时,需要提供一个变量,用于存储返回的值。

2、让实参编程可选的

如果部分形参是可选的,非必须要给予实参的。可以将其设置为空字符串,并放置在形参排序的末尾。

3、返回字典

函数可返回任何类型的值,包括列表和字典等较复杂的数据结构。

4、结合使用函数和while循环

8.4 传递列表

向函数传递列表很有用,这种列表可能包含字符串、数值、列表或者字典等。将列表传递给函数后,函数就能够直接访问其内容。相当于将代码封装在函数内。函数内的形参相当于是一个列表,实参也需要是列表。

1、在函数中修改列表

程序设计的一个理念,每个函数完成一项工作。

2、禁止函数修改列表

为了保持原列表不被修改或者删成空列表,在传递列表是可以传递列表的副本而不是元件。 ---- function_name(list_name[:]) ---- 切片表示法[:]创建列表副本。

8.5 传递任意数量的实参

function(*parameter) ---- 形参中的*号使得Python创建一个空元组的形参,并将收到的所有值都封装在这个元组中。

1、结合使用位置实参和任意数量实参

如果要让函数接受不同类型的实参,必须在函数定义中将接纳任意数量实参的形参放在最后。

2、使用任意数量的关键字实参

有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息。这种情况下,可将函数编写成能够接受任意数量的键值对。

形参的格式 ---- **parameter 实参的格式 ---- key= value

8.6 将函数存储在模块中

1、导入整个模块

创建一个函数模块,在同一目录下创建另一个调用模块的py文件。import module导入模块,采用module_name.function_name()方式使用模块。

2、导入特定的函数

from module_name import function_name ---- 如果只想要导入函数,不用整个模块导入,可以使用上述导入方式,使用时值需要funciton_name(),不用加module_name直接调用

3、使用as给函数指定别名

from module_name import function_name as nick_name ---- 将导入的函数以nick_name起别名。

4、使用as给模块指定别名

import module_name as nick_name ---- 将模块指定别名,在调用时使用nick_name.function_name()

5、导入模块中的所有函数

使用*运算符可让python导入模块中的所有函数。可通过名称来调用每个函数,无需使用句点表示法 ---- from module_name import *

注意:如果模块中有函数的名称与你项目中使用的名称相同,可能导致意想不到的结果。python可能遇到多个名称相同的函数或变量,进而覆盖函数,而不是分别导入函数。

8.7 函数编写指南

应该给函数指定描述性名称,描述性名称可帮助你和别人明白代码想要做什么

每个函数都应该包含简要的阐述其功能的注释,注释应紧跟在函数定义后面。

给形参指定默认值时,等号两边不要有空格。对于函数调用中的关键字实参,也要遵循这种约定。

如果形参很多,导致函数长度超过79字符。可在定义函数中输入左括号,并在下一行连恩两个Tab键,从而将形参列表和只缩进一层函数体区分开来。

如果程序或模块包含多个函数,可使用空两行将相邻的函数分开。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不贰笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值