Python - 函数小结
用户自定义. py 文件
如果你已经把 my_abs() 的函数定义保存为 abstest.py 文件了, 那么, 可以在该文件的当前目录下启动 Python 解释器, 用 from abstest import my_abs 来导入 my_abs() 函数, 注意 abstest 是文件名 (不含. py 扩展名)
定义空函数 nop()
如果想定义一个什么事也不做的空函数, 可以用 pass 语句:
- def nop():
- pass
pass 语句什么都不做, 那有什么用? 实际上 pass 可以用来作为占位符, 比如现在还没想好怎么写函数的代码, 就可以先放一个 pass, 让代码能运行起来.
pass 还可以用在其他语句里, 比如:
- if age>= 18:
- pass
缺少了 pass, 代码运行就会有语法错误.
用户自定义检验参数类型
- def my_abs(x):
- if not isinstance(x, (int, float)):
- raise TypeError('bad operand type')
- if x>= 0:
- return x
- else:
- return -x
函数返回多个数值
- def fun1(x):
- a=x**2
- b=x**3
- return a,b
- a,b=fun1(4)
- print(a,b)
可变参数
- def variableArg(*num):
- sum=0
- for n in num:
- sum=sum+n**2
- return sum
- print(variableArg(1,2,3,4))
可变参数
定义可变参数和定义一个 list 或 tuple 参数相比, 仅仅在参数前面加了一个 * 号. 在函数内部, 参数 numbers 接收到的是一个 tuple, 因此, 函数代码完全不变
*nums 表示把 nums 这个 list 的所有元素作为可变参数传进去. 这种写法相当有用, 而且很常见.
- def power(x, n=2):
- s = 1
- while n> 0:
- n = n - 1
- s = s * x
- return s
默认参数
这样, 当我们调用 power(5) 时, 相当于调用 power(5, 2)
设置默认参数时, 有几点要注意: 一是必选参数在前, 默认参数在后, 否则 Python 的解释器会报错
当函数有多个参数时, 把变化大的参数放前面, 变化小的参数放后面. 变化小的参数就可以作为默认参数.
可变参数
实例之求解一元二次方程的根
- import math
- # 输入三个参数, 返回一元二次方程的解
- def quadratic(a,b,c):
- delt=math.pow(b,2)-4*a*c
- delt1=math.sqrt(delt)
- if delt<0:
- print('该一元二次方程没有实根')
- return None
- elif delt==0:
- print('该一元二次方程只有一个实根')
- x1=x2=(-b/2*a)
- return x1,x2
- else:
- print('该一元二次方程有两个实根')
- x1=(-b+delt1)/(2*a)
- x2=(-b-delt1)/(2*a)
- return x1,x2
- print('请输入一元二次方程的三个系数 a,b,c:')
- a=float(input('请输入 a:'))
- b=float(input('请输入 b:'))
- c=float(input('请输入 c:'))
- x1,x2=quadratic(a,b,c)
- print('该一元二次方程的解析式为:{0}x^2+{1}x+{2}=0'.format(a,b,c))
- print('该一元二次方程的解 x1={0:.3f},x2={1:.3f}'.format(x1,x2))
来源: https://www.2cto.com/kf/201904/802545.html