这一篇文章主要介绍函数、模块、运行python文件等知识。
函数
函数犹如小程序,可以用来执行特定的操作。Python本身提供了很多函数,我们称这些函数为内置函数。内置函数可以用于编写数值表达式
>>> abs(-10)
10
>>> 2 // 3 # 整除总是向下取整
>>> round(2 / 3) # round()
- 使用函数的过程称为调用函数,调用函数的时候需要提供实参,调用的结果就是返回一个值,称为函数的返回值。
模块
可认为模块是一种扩展,通过将其导入壮大Python功能。
导入模块的关键字为import:
>>> import math
>>> math.floor(32.9) # 向下取整函数(floor的本意为地板,所以是向下取整)
32
>>> math.ceil(32.9) # 向上取整函数(ceil的本意为天花板,所以是向上取整)
33
>>>
- 首先使用
import
导入模块,再使用moudle.function
的方式使用模块中的函数 - floor()函数的功能是向下取整,再计算年龄的类似场景很有用
- 一些类似的函数入str()、float()实际上是类的概念
如果只需要导入模块中的某个函数,使用from module import function
格式,这种再使用的时候就不需要加上前缀了:
>>> from math import sqrt
>>> sqrt(9)
3.0
>>> foo = math.sqrt # 可以使用变量来引用函数
>>> foo(64)
8.0
>>>
复数
用函数sqrt计算负数的平方根会报错:
>>> from math import sqrt
>>> sqrt(-1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: math domain error
>>>
- 这是因为负数的平方根为虚数,而函数sqrt限定值域为实数,并使用其近似的浮点数表示,所以无法计算负数的平方跟
由实部和虚部组成的数为复数,Python标准库提供了一个专用用于处理复数的模块:cmath
>>> import cmath # 注意这里不能使用 from ... import ... 的格式,否则将无法使用常规函数sqrt()
>>> cmath.sqrt(-1)
1j
>>>
>>> (1 + 3J) * (9 + 4j)
(-3+31j) # 从结果可以看出,python提供了对复数的支持
>>>
>>> type(1j)
<class 'complex'> # Python没有专门的表示虚数的数据类型,而是将虚数视为实部为0的复数
>>> type(10 + 6j)
<class 'complex'>
-
1j
是个虚数,虚数都是以j
或J
结尾。 - 复数算术运算都基于如下定义:
-1
的平方根为1j
。 - Python没有专门的表示虚数的数据类型,而是将虚数视为实部为0的复数。
关于python文件的运行
交互式解释器的好处就是可以让你实时运行写完的代码,可以帮助学习者了解python的工作原理;但是它也有一个致命的缺点就是退出交互式解释器之后,编写的所有代码都会丢失。显然我们不可能每次工作都从头开始,因为我们的终极目标是编写自己和他人都能运行的程序。
那么我们就需要一个文本编辑器可以编写代码,然后保存成文件复用:
- 打开IDlE,编写代码
- 保存文件,文件拓展名务必为.py
命令提示符运行脚本:
- 打开DOS窗口
- 切换到Python可执行文件
- 运行脚本文件
IDE运行脚本:
- 找到文件并打开,运行文件:Run->Run Moudle
- 查看运行的结果是否与预期一致
需要说明的是,如果要像运行其他程序一样执行Python脚本,需要再python文件的第一行加上 #!/usr/bin/env python
, 这样可以保证脚本文件可以再安装了python的环境中运行。
有时候,还需要修改脚本的权限才可以运行:$ chmod a+x demo.py
注释
在Python中,井号(#)比较特殊:在代码中,井号后面到行尾的内容都将被忽略,称为注释。
注释让程序更容易理解,注释的基本原则就是言而有物,不要重复去讲通过代码很容易获得的信息,无用而重复的注释还不如没有。