python怎么画一个点_Python入门教程 | 第 2 章 函数

第二章 函数

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

π

当我们知道半径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本身只需要写一次,就可以多次调用。

def area_of_circle(r):
    if r>0:
        return 3.14*r**2
    else:
        return False
R=[12.34,9.08,73.1]
for r in R:
    s=area_of_circle(r)
    print(s)

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

!> 注:抽象是数学中非常常见的概念,借助抽象,我们才能不关心底层的具体计算过程,而直接在更高的层次上思考问题。写计算机程序也是一样,函数就是最基本的一种代码抽象的方式。

2.1 调用函数

2.1.1 内置函数

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

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

https://docs.python.org/3/library/functions.html#abs[1]

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

调用abs函数:

print(abs(-20)) #20
print(abs(20)) #20

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

print(abs(1, 2))

报错:

Traceback (most recent call last):
  File "E:/ML/PycharmProjects/HelloWorld/app.py", line 11, in 
    print(abs(1, 2))
TypeError: abs() takes exactly one argument (2 given)

如果传入的参数数量是对的,但参数类型不能被函数所接受,也会报TypeError的错误,并且给出错误信息:str是错误的参数类型:

print(abs('a'))

报错:

Traceback (most recent call last):
  File "E:/ML/PycharmProjects/HelloWorld/app.py", line 11, in 
    print(abs('a'))
TypeError: bad operand type for abs(): 'str'

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

print(max(1, 2)) # 2
print(max(2, 3, 1, -5)) # 3

2.1.2 数据类型转换

Python 内置的常用函数还包括数据类型转换函数:int 把其他数据类型转换为整数 / float / str / bool

int('123') # 123
int(12.34) # 12
float('12.34') # 12.34
str(1.23) # '1.23'
str(100) # '100'
bool(1) # True
bool('') # False

函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:

a = abs # 变量a指向abs函数
a(-1) # 所以也可以通过a调用abs函数 输出:1

✏️ 练习题:

请利用 Python 内置的hex()函数把一个整数转换成十六进制表示的字符串:

print(hex(int(input())))

2.2 定义函数

2.2.1 def 定义

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

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

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

!> 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。

如果没有return语句,函数执行完毕后也会返回结果,只是结果为Nonereturn None可以简写为return

在 Python 交互环境中定义函数时,注意 Python 会出现...的提示。函数定义结束后需要按两次回车重新回到>>>提示符下:

c6fd8dc6c0860c19e49fa125257c3512.png
image-20200628200630220

如果你已经把my_abs()的函数定义保存为abstest.py文件了,那么,可以在该文件的当前目录下启动 Python 解释器,用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名(不含.py扩展名):

628d1f82f055c5878f46f62d55757616.png
image-20200628200735560

2.2.2 空函数

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

def nop():
    pass

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

pass还可以用在其他语句里,比如:

if age >= 18:
    pass

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值