python高级(内置函数、数学模块、复数)

乘方运算符(**)来执行幂运算。实际上,可不使用这个运算符,而使用函数pow。
>>> 2 ** 3 

>>> pow(2, 3) 
8

像前一个示例那样使用函数称为调用函数:你向它提供实参(这里是2和3),而它返回一个值。鉴于函数调用返回一个值,因此它们也是表达式。实际上,你可结合使用函数调用和运算符来编写更复杂的表达式(就像前面使用函数int时那样)。
>>> 10 + pow(2, 3 * 5) / 3.0 
10932.666666666666

有多个内置函数可用于编写数值表达式。例如,abs计算绝对值,round将浮点数圆整为与之最接近的整数。
>>> abs(-10) 
10 
>>> 2 // 3 

>>> round(2 / 3) 
1.0

请注意最后两个表达式的差别。整数总是向下圆整,而round圆整到最接近的整数,并在两个整数一样近时圆整到偶数。如果要将给定的数向下圆整,该如何做呢?例如,你知道某人的年龄为32.9,并想将这个值向下圆整为32,因为他还没有满33岁。Python提供了完成这种任务的函数floor(向下取整),但你不能直接使用它,因为像众多很有用的函数一样,它也包含在模块中。

引入模块:import math

注意: 使用某个模块下的函数,必须先引入这个模块,否则无法正常使用。

可将模块视为扩展,通过将其导入可以扩展Python功能。要导入模块,可使用特殊命令
>>> import math 
>>> math.floor(32.9) 
32

请注意其中的工作原理:我们使用import导入模块,再以module.function的方式使用模块中的函数。就这里执行的操作而言,也可像前面处理input的返回值那样,将这个数字转换为整数。
>>> int(32.9) 
32

注意:还有一些类似的函数,可用于转换类型,如str和float。实际上,它们并不是函数,而是类。

模块math还包含其他几个很有用的函数。例如,ceil与floor相反,返回大于或等于给定数的最小整数(向上取整)。
>>> math.ceil(32.3) 
33 
>>> math.ceil(32) 
32 

如果确定不会从不同模块导入多个同名函数,你可能不想每次调用函数时都指定模块名。在这种情况下,可使用命令import的如下变种:
>>> from math import sqrt 
>>> sqrt(9) 
3.0


通过使用命令import的变种from module import function,可在调用函数时不指定模块前缀。

事实上,可使用变量来引用函数(以及其他大部分Python元素)。执行赋值语句foo =math.sqrt后,就可使用foo来计算平方根。例如,foo(4)的结果为2.0

cmath 和复数

函数sqrt用于计算平方根。下面来看看向它提供一个负数的情况:
>>> from math import sqrt 
>>> sqrt(-1) 
Traceback (most recent call last):      #交互式解释器报错
... 
ValueError: math domain error
在有些平台上,结果如下:
>>> sqrt(-1) 
nan      #nan具有特殊含义,指的是“非数值”(not a number)

如果我们坚持将值域限定为实数,并使用其近似的浮点数实现,就无法计算负数的平方根。负数的平方根为虚数,而由实部和虚部组成的数为复数。Python标准库提供了一个专门用于处理复数的模块。
>>> importcmath 
>>> cmath.sqrt(-1) 
1j
注意到这里没有使用from ... import ...。如果使用了这种import命令,将无法使用常规函数sqrt。类似这样的名称冲突很隐蔽,因此除非必须使用from版的import命令,否则应坚持使用常规版import命令。
1j是个虚数,虚数都以j(或J)结尾。复数算术运算都基于如下定义:-1的平方根为1j。这
里不深入探讨这个主题,只举一个例子来结束对复数的讨论:
>>> (1 + 3j) * (9 + 4j)                 
(-3 + 31j)

#这里3j * 4j  = -3 *-4 = 12,所以推导出(1*9)+(1*4j)+(3j*9)+(3j*4j) = 9+4j+27j+-12 = -3 + 31j

Python没有专门表示虚数的类型,而将虚数视为实部为零的复数。

                                                     各内置函数介绍

  • ceil()

向上取整操作 格式:math.ceil(数值) 返回值:整型

a = math.ceil(10.23) #大于一个数的最小整数,输出11

  • floor()

向下取整操作 格式:math.floor(数值) 返回值:整型

a = math.floor(10.23) #小于一个数的最大整数,输出10

  • round()

五舍六入操作 格式:round(数值) 返回值:整数 注意:此函数不在math模块当中!!!

a = round(10.66, 2)第二个参数是保留多少位小数,输出10.66,如果没有保留值输出11

  • pow()

计算一个数值的N次方 格式: math.pow(底数,幂,取余) 返回值:浮点类型 注意:该操作相当于**运算但是结果为浮点型

a = pow(2,3)    # 相同于2**3 输出8

a = pow(2,3,2) 输出0   #8被2整除余0

#注意pow是内置函数,返回整型,math.power则返回浮点型

  • sqrt()

开平方 格式:math.sqrt(数值) 返回值:浮点数

a = math.sqrt(16)  开平方根输出4.0

  • fabs()

对一个数值获取其绝对值操作 格式:math.fabs(数值) 返回值:浮点数

a = abs(-2)   输出-2的绝对值2.0

math.power返回浮点型

  • abs()

对一个数值获取其绝对值操作 格式:abs(数值) 返回值:可能是整数可以能浮点数 注意:abs() 他是内建函数 同时返回值根据原类型决定

a = math.abs(-2)   输出-2的绝对值2

abs是内置函数,返回整型

  • modf()

将一个浮点数拆成整数和小数部分组成的元组 格式:math.modf(数值) 返回值:元组 (小数部分,整数部分)

a = math.modf(12.22)   输出元祖(0.22000000000000064, 12.0)

  • copysign()

将第二个数的正负号复制给第一个数 格式:math.copysign(值1,值2) 返回值:值1 符号是值2的正负号

a = math.copysign(2, -1)  输出-2.0

  • fsum()

将一个序列的数值进行相加求和 格式:math.fsum(序列) 返回值:浮点数

a = math.fsum([1,2,3])   输出6.0

  • sum()

将一个序列的数值进行相加求和 格式:sum(序列) 返回值:数值类型

a = sum([1,2,3])   输出6

猜你喜欢

转载自blog.csdn.net/jamfiy/article/details/87872079