一、函数是什么?
在excel中,我们使用abs()函数来实现绝对值的计算,现在我们来使用python的逻辑实现一下,这个非常简单:
def get_absolute_value(ori_value):if ori_value < 0:absolute_value = 0 - ori_valueelse:absolute_value = ori_valuereturn absolute_valueprint(get_absolute_value(-123))print(get_absolute_value(987))
类似于上面代码实现的求绝对值功能,事实上python已经内置了对应的函数即在此前的教程02_数据类型与运算符中我们初步接触的python的内置函数abs():
print(abs(-123))print(abs(987))
二、函数入门
1、函数解释
- 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 函数是对Python代码进行复用的一种常用方法:如果某段代码会被多次使用,并且使用时只需要做少量修改或不修改,这时就可以把这段代码放入一个函数中。使用函数之前,需要先定义函数。
2、函数的定义方式
:::info
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
:::
3、语法结构
```python定义函数
def functionname( parameters ): # parameters(就是参数,可以根据需要添加任意数量的参数,只需用逗号分隔即可) “函数_文档字符串” function_suite return [expression]
调用函数
functionname( parameters )
或者:
var = functionname( parameters )
<a name="p5PUu"></a>## 4、定义示例```pythondef my_function():# 缩进4个空格# 在此后面写函数代码pass # 什么也不做# 求某数的平方def my_square(x):"""求平方"""return x ** 2# 求两个数的平均值def my_mean(x, y):"""求平均数"""return (x + y) / 2"""三重引号是文档类型的字符串在引号范围内可以进行换行当在函数中使用三重引号时,会将引号内的内容自动定义为该函数的帮助文档"""print(my_square.__doc__)print(my_mean.__doc__)# 调用函数my_square(3)my_mean(2, 5)
5、函数的调用
当定义的函数存在至少一个返回值(也就是return后面至少存在一个需返回的对象)时,在调用函数时需要将返回值赋值给一个或多个变量。需要return的变量和赋值变量的数量要一一对应。
(1)只调用函数不赋值
只调用函数不赋值时,函数仍然会正常执行,结果也会在控制台中输出,但是在变量浏览器中不会有变量信息可供方便查看。
(2)调用函数同时赋值
经过上面的对比后,很明显,在调用函数的时候同时赋值给一个变量,会更有利于查看和调整代码效果。
三、内置函数
python内置了一组常用函数,可以称为内置函数,我们已经熟练使用的print()、abs()、input()等都是具体可参考,在基础阶段,大部分内置函数使用场景不多,在有需要的时候查看使用文档或者百度即可。
进一步了解可以查看:
四、module/模块/库/包_基础了解
在之前的学习内容中,我们了解了函数的概念,事实上,为了解决某一个现实问题我们可能会定义多个函数,并通过多个函数的组合应用来解决需求。
python文件以.py结尾,包含了python定义的对象和语句、函数等,我们称为【Python 模块(Module) [ˈmɒdju:l]】。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
1、一个例子
:::info 在越来越多的项目中,财务数据相关的业务数据数据越来越大,换句话说,涉及的行数和列数越来越多,在某些业务中可能存在着这样的需求:
需求描述:
零售企业导出了报告期实质上是销售明细表的订单流水,但可能是n个体积较大的excel文件;
我们合并这n个文件用于检查数据的完整性;
在合并文件后我们需要执行必要的分析程序;
在分析过程中需要输出从全部数据中提取的部分分析结果数据和抽样数据。
需求分析:
对于上述审计或审阅工作中的需求,我们可以简单分析如下:
1、需要一个函数来合并多个文件
2、需要一个函数来执行比如【汇总分析主要产品月度销售收入和销售数量分析】并输出分析结果
3、需要一个函数来对部分分析结果导出文件,比如导出excel文件、word文件、csv文件、txt文件等。
:::
为了解决上面的举例需求,我们需要定义多个函数来满足不同的功能需求,这样就会产生一个或者多个.py的python文件——这样的文件就是python的module,在不同场景和习惯下,我们可能会同时称为模块/库/包,但在绝大多数场景下它们均指**.py**python文件或文件的集合。
2、模块的定义
模块的定义在某种意义上就是函数的定义,此前已经大量介绍和练习过,暂时不再赘述。
3、模块的导入
模块的定义在某种意义上就是函数的定义,我们以之前编写的函数来理解包的调用:
- 以一个
main.py的文件来作为程序运行的主文件 - 在
get_abs_value.py中存放用于计算绝对值的函数 - 在
get_square_and_mean中存放用于计算平方的函数和计算平均数的函数 - 在
main.py的文件中调用导入的模块中的函数并返回结果
过程概览:
| 步骤 | 图例 | 备注说明 |
|---|---|---|
| 1、我们需要构建这样文件目录: | ![]() |
|
| 2、各个文件内我们定义出如这样的函数: | ![]() |
|
3、运行main.py文件,控制台中输出结果 |
![]() |
|
在上述过程中,我认为导入的函数太长了 那么也可以这样重命名:
4、模块导入简单小结
- 模块定义好后,使用 import 语句来引入模块
- 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
- 把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需声明:
from modname import * - 在导入模块时使用 as 关键字创建别名,如
import pandas as pd五、标准库
python标准库指python环境自带的一系列库,标准库中包含数百个 模块,为常见任务提供了丰富的工具,可以用来作为应用开发的起点。Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有大量以 Python 编写的模块,提供了日常编程中许多问题的标准解决方案。其中有些模块经过专门设计,通过将特定平台功能抽象化为平台中立的 API 来鼓励和加强 Python 程序的可移植性。
六、审计常用库
鉴于审计执业绝大多数下是对office文件进行操作,我们在接下来的教程中重点掌握常用的numpy和pandas库。



