牛逼!Python函数和文件操作(长文系列第3篇)(上)

简介: 系列第三篇来说一下函数和文件。函数在编程中是一个很重要的角色,我们可以将若干个语句组合形成一个函数,它可以接受传入参数,并在内部进行相关计算后产生输出,将语句封装成函数是为了避免重复使用几个语句造成代码冗杂,让代码更简洁可观性更强。文件的操作主要是介绍一些关于文件的读取及写入的方法,以及每个方法的不同点和需要注意的事项,最后会介绍一下利用pickle模块存储复杂数据的方式。

函数

函数主要包括两个方面:

  • 内置函数
  • 自定义函数

内置函数就是python自带的一些函数,我们只需要给函数传入相关参数就可以进行调用,print就是最基础、最典型的一个内置函数;而自定义函数是需要我们自己按照需求,封装若干个语句形成一个新的函数。

自定义函数

1.创建函数

下面通过自定义一个计算长方体体积的函数来介绍一些属性词:

In [1]: def  vol(length,width,height):
   ...:     volume = length*width*height
   ...:     return volume

上面三行代码中你需要了解:

  • def:定义函数的关键字
  • length,width,height:函数的形参
  • return:函数的返回值

2.调用函数

建好一个自定义函数后,可以通过函数名(实参)的方式调用函数:

In [2]: vol(2,2,3)
Out[2]: 12

在传入参数时需要注意的是,实参与形参必须完全对应,比如位置、个数等等,否则会出现报错。

In [4]: vol(2,2)
TypeError: vol() missing 1 required positional argument: 'height'

如果想改变传参顺序,那么你需要指定为哪一个形参传值:

In [8]: vol(width=3,length=4,height=5)
Out[8]: 60

3.函数默认值

函数的形参还可以指定默认值,假如我们将上面的vol函数中height参数默认值设为2:

In [6]: def  vol(length,width,height=2):
   ...:     volume = length*width*height
   ...:     return volume
   ...:
In [7]: vol(2,2)
Out[7]: 8

这时只向vol函数中传入两个实参,可以发现没有报错,并且得到返回值为8。也就是说如果一个形参有默认值,而调用函数时没有为这个形参传值,那么这个参数就取默认值。

4.收集函数(可变函数)

对于一个函数的形参我们也可以将其设置为可以变化的:

In [9]: def test(*params):
   ...:     print('参数的长度为%d'%len(params))
   ...:     print('第三个参数为%s'%params[2])
   ...:
In [10]: test(1,2,'mao',3.14,'pp')
参数的长度为5
第三个参数为mao

这里需要将形参用*标识,然后在调用参数的时候可以传入若干个实参。

5.全局与局部

在函数中定义的常量被称为局部变量,也就是仅限在这个函数中可以调用,不接受在函数之外使用:

In [12]: def test(a,b):
    ...:     c = 2
    ...:     return a*b*c
In [13]: test(2,2)
Out[13]: 8
In [14]: print(c)
NameError: name 'c' is not defined

6.匿名函数lambda

如果一个函数内部的语句不是很复杂,代码量很少,我们就可以利用匿名函数,比如上面计算体积的函数:

In [20]: vol = lambda a,b,c:a*b*c
In [21]: vol(2,2,3)
Out[21]: 12

lambda表达式常常嵌套的语句中,结合相关函数使用会很简便,后面会给出例子。

7.内嵌函数

在定义函数时还支持几个函数嵌套,但用的时候需要注意逻辑关系:


相关文章
|
15天前
|
开发者 Python 容器
python函数基础以及函数参数简解
python函数基础以及函数参数简解
|
8天前
|
Python
python 函数
【9月更文挑战第4天】python 函数
29 5
WK
|
15天前
|
Python
python中的函数有哪些种类?
在 Python 中,函数根据定义方式、用途及来源可分为多种类型:自带的内置函数(如 print(), len())无需导入直接使用;标准库函数需导入相应模块后使用;第三方库函数则需先安装库再导入使用;用户自定义函数可根据需求定义并多次调用;匿名函数(lambda)无函数名,常用于需要函数对象但不想单独定义的情形;高阶函数接受或返回函数;装饰器函数可在不改动原函数代码情况下为其添加新功能;生成器函数使用 yield 逐个返回值;递归函数在自身定义中调用自身;嵌套函数在一个函数内定义,可访问外部函数变量。各种函数类型在编程中有不同的用途和优势。
WK
37 12
|
13天前
|
Python
Python 中 help() 和 dir() 函数的用法
【8月更文挑战第29天】
17 5
|
14天前
|
Python
12类常用的Python函数
12类常用的Python函数
|
15天前
|
Python
python中getattr函数 hasattr函数
python中getattr函数 hasattr函数
|
15天前
|
算法 Python
python函数递归和生成器
python函数递归和生成器
|
14天前
|
Python
Python eval()函数的使用
Python eval()函数的使用
14 1
|
15天前
|
Python
python常用内置函数
python常用内置函数
|
16天前
|
算法 Python
python常见的函数使用
【8月更文挑战第27天】python常见的函数使用
14 2