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,练习题
- 问:请定义一个函数quadratic(a, b, c),接收3个参数,返回一元二次方程 的两个解。
- 答:
# -*- 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('测试成功')
网友评论