#测试函数,导入方法文件
import TestMethod #直接调用现成的函数print(TestMethod.to_abs(6))print(TestMethod.to_abs(-6))#定义函数def to_abs(arg): if isinstance(arg,(int,float)): if arg > 0: return arg else: return -arg else: raise TypeError('bad operation type') #定义异常#定义空函数,先定义好函数,但没有设计内容时可以使用pass占位符def to_sqrt(arg): pass#定义一个类#mid = "bbb"class Person: formula = ["begin","end"] name = "zhangsan" def __init__(self,name="wangwu"):#指定默认参数,当传值时覆盖默认值,注意:为了程序安全,一定要使用常量,不要使用变量(不会报错) self.name = nameperson = Person() #创建实例#person = Person("lisi") #创建实例#person.name = "lisi"person.age = 12;#定义返回多个值的函数(其实是一个tuple元组)def multiReturn(person): return person.name,person.age#定义可变参数函数def canChange(*args):#此函数是为了测试,暂时为int类型 result = 0 for arg in args: result += arg return result#调用print(to_abs(12))print(to_abs(-12))print(to_sqrt(-12))#调用返回多值函数name,age = multiReturn(person)print("name:"+name+",age:"+str(age))print(multiReturn(person)) #其实是个元组#调用可变参数函数print(canChange())#无参print(canChange(6))#一个print(canChange(1,6,23))#多个print(canChange(*[1,4,7]))#列表,*是把列表转成可变参数#位置参数和关键字参数#位置参数是指按照函数参数定义的先后顺序传入参数,调用函数传入的数据和参数一一对应,函数默认调用的方式都是位置参数。例子如下:def show(name,sex): print("name:"+name+",sex:"+sex)show("light","boy")#关键字参数是指按照参数的名称指定传入的数据,可以位置不定,但必须每个参数都被赋值且不能重复赋值show(sex="girl",name="lili") #good#show(sex="girl",sex="lili") #SyntaxError: keyword argument repeated name没有被赋值#show(sex="girl",name="lili",name="lijie") #SyntaxError: keyword argument repeated name被重复赋值#组合赋值,关键词参数必须在其原来的位置上,也就是指名位置参数的名称而已,即失去了位置参数的简单直接,也失去了关键字参数的灵活,不建议使用show("wangming",sex="boy")#show(sex="boy","wangming")#SyntaxError: positional argument follows keyword argument#递归函数def recursion(number): if isinstance(number,(int)): if number > 0: if number == 1: return 1 else: return number * recursion(number - 1) elif number == 0: return number else: if number == -1: return number else: return number * recursion(number + 1) else: raise TypeError("error input type !")#调用递归函数print(recursion(5))print(recursion(50))#print(recursion(5000)) #RecursionError: maximum recursion depth exceeded in comparison 递归深度过大,可改成尾递归,在python中不建议使用#print(recursion("5")) #TypeError: error input type !测试结果: