当前位置 : 主页 > 编程语言 > python >

Python基础——PyCharm版本——第六章、函数function

来源:互联网 收集:自由互联 发布时间:2022-06-18
????????Python_Base:chapter vi???????? ​目录​ ​​函数function​​ ​​抽象​​ ​​调用函数​​ ​​数据类型 转 换​​ ​​定义函数​​ ​​返回多个值​​ 函数function 我们知道圆的


Python基础——PyCharm版本——第六章、函数function_数据类型转换

????????Python_Base:chapter vi????????

​目录​

​​函数function​​

​​抽象​​

​​调用函数​​

​​数据类型换​​

​​定义函数​​

​​返回多个值​​


函数function

我们知道圆的面积计算公式为:

S = πr2

当我们知道半径​​r​​的值时,就可以根据公式计算出面积。假设我们需要计算3个不同大小的圆的面积:

r1 = 12.34
r2 = 9.08
r3 = 73.1
s1 = 3.14 * r1 * r1
s2 = 3.14 * r2 * r2
s3 = 3.14 * r3 * r3

当代码出现有规律的重复的时候,你就需要当心了,每次写​​3.14 * x * x​​​不仅很麻烦,而且,如果要把​​3.14​​​改成​​3.14159265359​​的时候,得全部替换。

有了函数,我们就不再每次写​​s = 3.14 * x * x​​​,而是写成更有意义的函数调用​​s = area_of_circle(x)​​​,而函数​​area_of_circle​​本身只需要写一次,就可以多次调用。

基本上所有的高级语言都支持函数,Python也不例外。Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。

抽象

抽象是数学中非常常见的概念。举个例子:

计算数列的和,比如:​​1 + 2 + 3 + ... + 100​​​,写起来十分不方便,于是数学家发明了求和符号∑,可以把​​1 + 2 + 3 + ... + 100​​记作:

100

∑n

n=1

这种抽象记法非常强大,因为我们看到 ∑ 就可以理解成求和,而不是还原成低级的加法运算。

而且,这种抽象记法是可扩展的,比如:

100

∑(n2+1)

n=1

还原成加法运算就变成了:

(1 x 1 + 1) + (2 x 2 + 1) + (3 x 3 + 1) + ... + (100 x 100 + 1)

可见,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。

写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。

调用函数

Python内置了很多有用的函数,我们可以直接调用。

要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数​​abs​​,只有一个参数。可以直接从Python的官方网站查看文档,我也准备了一个文档,可以直接观看的。

也可以在交互式命令行通过​​help(abs)​​​查看​​abs​​函数的帮助信息。

调用函数的时候,如果传入的参数数量不对,会报​​TypeError​​​的错误,并且Python会明确地告诉你:​​abs()​​有且仅有1个参数,但给出了两个:

Python基础——PyCharm版本——第六章、函数function_调用函数_02

而​​max​​​函数​​max()​​可以接收任意多个参数,并返回最大的那个:

Python基础——PyCharm版本——第六章、函数function_数据类型转换_03 

数据类型转换

Python内置的常用函数还包括数据类型换函数,比如​​int()​​函数可以把其他数据类型转换为整数:

Python基础——PyCharm版本——第六章、函数function_python_04

定义函数

在Python中,定义一个函数要使用​​def​​​语句,依次写出函数名、括号、括号中的参数和冒号​​:​​​,然后,在缩进块中编写函数体,函数的返回值用​​return​​语句返回。

我们以自定义一个求绝对值的​​my_abs​​函数为例:

def my_abs(x):
if x >= 0:
return x
else:
return -x
print(my_abs(-66))

Python基础——PyCharm版本——第六章、函数function_数据类型转换_05

​空函数​

如果想定义一个什么事也不做的空函数,可以用​​pass​​语句:

def nop():
pass

​​pass​​​语句什么都不做,那有什么用?实际上​​pass​​​可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个​​pass​​,让代码能运行起来。

if age >= 18:
pass

 缺少了​​pass​​,代码运行就会有语法错误。

返回多个值

函数可以返回多个值吗?答案是肯定的。

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的坐标:

import math

def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
x, y = move(100, 100, 60, math.pi / 6)
print(x)
print(y)

Python基础——PyCharm版本——第六章、函数function_数据类型转换_06

 但其实这只是一种假象,Python函数返回的仍然是单一值:

import math

def move(x, y, step, angle=0):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx, ny
r = move(100, 100, 60, math.pi / 6)
print(r)

 Python基础——PyCharm版本——第六章、函数function_调用函数_07

原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。


上一篇:pandas 根据某几列生成一个新的列
下一篇:没有了
网友评论