原文出处,如有侵权,请联系删除。
- 用户自定义.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))
- 求一个list的最大值与最小值,以tuple形式返回
#迭代查找一个list(随机数生成一个list)的最大值与最小值,并返回一个tuple
import random
def getRandomList():
ranList=[]
for i in range(10):
ranList.append(random.choice(range(101)))
print('生成的随机list为',ranList)
return ranList
def find_min_max(ranList):
minNums=maxNums=ranList[0]
for x in ranList:
if x<minNums:
minNums=x
maxNums=max(ranList)
return (minNums,maxNums)
#dict={'max':maxNums,'min':minNums}
print(find_min_max(getRandomList()))