廖雪峰 | 3.0 函数

2022-04-13  本文已影响0人  苦哈哈的柠檬水

1 调用函数

2 定义函数

3 函数的参数

4 递归函数

1 调用函数

1,使用函数时,需要知道函数的名称和参数
2,help(函数名称)查看函数的帮助信息

help(abs)

3,将函数名赋给一个变量,相当于给这个函数起了一个“别名”

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

2 定义函数

1,自定义函数:def语句+函数名+括号+参数+:;用函数的返回值用return语句

# -*- coding: utf-8 -*-
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
>>> my_abs(-9)
9

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

>>> from abstest import my_abs
>>> my_abs(-8)
8

3,定义空函数:用pass语句
pass作为占位符,如现在还没想好怎么写函数的代码,可以先放一个pass,让代码能运行起来。

def nop():
    pass

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

if age >= 18:
    pass

4,参数类型做检查:isinstance()函数

def my_abs(x):
    if not isinstance(x, (int, float)):
        raise TypeError('bad operand type')
    if x >= 0:
        return x
    else:
        return -x
#测试
>>> my_abs('A')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in my_abs
TypeError: bad operand type

5,练习题

# -*- coding: utf-8 -*-
import math
def quadratic(a, b, c):
    if not (isinstance(a,(int,float)) and isinstance(b,(int,float)) and isinstance(c,(int,float))) :
        raise TypeError('bad operand type')
    if a == 0:
        x = -(c/b)
        return x
    elif b**2-4*a*c >= 0:
        x1 = (-b+math.sqrt(b**2-4*a*c))/(2*a)
        x2 = (-b-math.sqrt(b**2-4*a*c))/(2*a)
        return x1,x2
    else:
        print('无实数解')
        return None
# 测试:
print('quadratic(2, 3, 1) =', quadratic(2, 3, 1))
print('quadratic(1, 3, -4) =', quadratic(1, 3, -4))

if quadratic(2, 3, 1) != (-0.5, -1.0):
    print('测试失败')
elif quadratic(1, 3, -4) != (1.0, -4.0):
    print('测试失败')
else:
    print('测试成功')
上一篇 下一篇

猜你喜欢

热点阅读