网站正在建设中的图片素材,桂林北站改造,推广普通话的故事,前端开发培训机构济南七里河一、函数1、函数定义def 函数名(参数列表)#xff1a;2、返回值 return返回值可以有多个#xff0c;其实是返回一个tuple##多个返回值def sumDiff(x,y):return xy,x-yn1,n2 eval(input(输入两个数#xff1a;))s,d sumDiff(n1,n2)print(和为{}#xff0c;差为{}.format(…一、函数1、函数定义def 函数名(参数列表)2、返回值 return返回值可以有多个其实是返回一个tuple##多个返回值def sumDiff(x,y):return xy,x-yn1,n2 eval(input(输入两个数))s,d sumDiff(n1,n2)print(和为{}差为{}.format(s,d))##计算三角形周长import mathdef square(x):return x*x#计算两点之间的距离def distance(x1,x2,y1,y2):dist math.sqrt(square(x1-x2) square(y1-y2))return dist#判断三个点是否构成三角形def isTriangle(x1,y1,x2,y2,x3,y3):flag ((x1-x2)*(y3-y2) - (x3-x2)*(y1-y2)) ! 0return flagdef main():print(输入三个坐标点(x,y):)x1,y1 eval(input(坐标点1(x1,y1)))x2, y2 eval(input(坐标点2(x2,y2)))x3, y3 eval(input(坐标点3(x3,y3)))#判断三个点是否构成三角形if(isTriangle(x1,y1,x2,y2,x3,y3)):##计算三角形周长perim distance(x1,y1,x2,y2)distance(x2,y2,x3,y3)distance(x3,y3,x1,y1)print(该三角形周长为{:.2f}.format(perim))else:print(三个点无法构成三角形)main()3、参数①位置参数②默认参数一是必选参数在前默认参数在后否则Python的解释器会报错二是如何设置默认参数----- 定义默认参数要牢记一点默认参数必须指向不变对象空列表不可作为默认参数 def a(L[]) ------- def a(LNone)##列表最后加一个ENDdef add_end(LNone):if L is None:L []L.append(END)return L③可变参数(参数名前面加**args)(可以传入0个或多个参数这些可变参数在函数调用时自动组装为一个tuple)## 计算 1*12*23*3.....def calc(*numbers):sum 0for n in numbers:sum sum n * nreturn sum## 传参的时候把list的所有元素作为可变参数传进去 nums [1, 2, 3] calc(*nums)14④关键字参数(**kw)(关键字参数允许你传入0个或任意个含参数名的参数这些关键字参数在函数内部自动组装为一个dict)def person(name, age, **kw):print(name:, name, age:, age, other:, kw) person(Michael, 30)name: Michael age: 30 other: {} person(Bob, 35, cityBeijing)name: Bob age: 35 other: {city: Beijing} person(Adam, 45, genderM, jobEngineer)name: Adam age: 45 other: {gender: M, job: Engineer} extra {city: Beijing, job: Engineer} person(Jack, 24, **extra)name: Jack age: 24 other: {city: Beijing, job: Engineer}⑤命名关键字参数## name、age是位置参数 *后面的city和job是命名关键字参数def person(name, age, *, city, job):print(name, age, city, job) person(Jack, 24, cityBeijing, jobEngineer) ##命名关键字参数必须传入参数名Jack 24 Beijing Engineer## name、age是位置参数*args是可变参数 city和job是命名关键字参数def person(name, age, *args, city, job):print(name, age, args, city, job)⑥参数组合参数定义的顺序必须是必选参数、默认参数、可变参数、命名关键字参数和关键字参数。def wrapper(*args, **kw): ##可以接受任意参数的调用⑦如果变量是可变对象【列表】返回到调用程序后对象会呈现被修改后的状态def addInterest(balances,rate):for i in range(len(balances)):balances[i] balances[i] * (1rate)def test():amounts [1000,500,1200,789]rate 0.05addInterest(amounts,rate)print(amounts)test() ##[1050.0, 525.0, 1260.0, 828.45]**************实例**************def calculateNum(principal):# 计算星号的个数total int(principal*4/1000)return totaldef createTable(principal,apr):# 为每一年绘制星号的增长图for year in range(1,11):principal principal * (1apr)print(%2d%year,end)total calculateNum(principal)print(**total)print(0.0K 2.5k 5.0k 7.5k 10.0k)def main():#输入本金和利率principal eval(input(输入本金))apr eval(input(输入利率))#建立图表createTable(principal,apr)main()⑧参数检查(先对参数的数据类型做检查抛出TypeError错误)def my_abs(x):if not isinstance(x, (int, float)): ## isinstance(x, (int, float) ) ------- 传入参数是否为 int 或 float 类型返回 True // Falseraise TypeError(bad operand type)if x 0:return xelse:return -x4、空函数def nop():pass二、全局变量和局部变量1、可以用 global 保留字在函数内部使用全局变量n , s 10,100def fact(n):s 1 ##局部变量sfor i in range(1,n1):s * ireturn sprint(fact(n),s) #362880000 100n , s 10,100def fact(n):global s ##声明全局变量sfor i in range(1,n1):s * ireturn sprint(fact(n),s) #362880000 3628800002、局部变量为组合类型且未创建等同于全局变量ls [a,d]def func(a):ls.append(a)returnfunc(g)print(ls) #[a, d, g]ls [a,d]def func(a):ls []ls.append(a)print(ls)returnfunc(g) #[g]print(ls) #[a, d]三、lambda函数(特殊情况使用建议使用def固定情况使用) : f lambda x,y:xyprint(f(3,4))四、递归在函数的定义中使用函数自身1、函数分支结构(if...else...)2、基例3、链条##递归##n---n的阶乘def fact(n):if n 0:return 1else:return n*fact(n-1)print(fact(5))##字符串反转 s[::-1]def reverse(s):if s :return selse:return reverse(s[1:]) s[0]print(reverse(Hello))斐波那契数列def f(n):if n 1 or n 2:return 1else:return f(n-1) f(n-2)五、PyInstaller库(第三方库)将 .py文件 转换成 无需源代码的可执行文件 exe文件先安装pyinstaller库将print1.py文件转换成exe文件在【dist】文件夹中【_pycache_】和【build】文件夹可以删掉