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))
  • 求一个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()))
View Code

 

posted @ 2019-04-10 12:41  假如年少有为  阅读(372)  评论(0编辑  收藏  举报