python3学习笔记(4)_function-参数
1 #python学习笔记 17/07/10 2 # !/usr/bin/evn python3 3 # -*- coding:utf-8 -*- 4 5 import math 6 #函数 函数的 定义 7 #定义一个求绝对值函数 8 def abstruct(a): 9 if not isinstance (a, (int, float)): 10 raise TypeError("param must be a int or float type") 11 if a >= 0: 12 return a 13 else: 14 return -a 15 16 17 # 如果我们定义好了 abstruct() 函数,那么我们再该目录下启动Python解释器,用from python_function.py import abstruct 来导入 abstruct()函数 18 19 #用pass 语句 定义一个空函数,方便我们写代码时,关注功能,而不是立即写出完整代码 20 def myTODO(): 21 pass 22 23 # 函数可以 返回多个值(其实是把多个值放到了一个tuple里,只是语法上省略了括号) 24 def weiyi(x,y,step,angle=0): 25 nx = x + step * math.cos(angle) 26 ny = y - step * math.sin(angle) 27 return nx,ny 28 29 x,y = weiyi(100, 100, 60, math.pi / 6) 30 print(x ,y) 31 32 # 一、必选参数 33 #函数的传递参数 位置参数,严格按顺序传递参数 34 #如 幂函数 x的n次方 其中第一个参数x是底,第二个参数n是指数 35 def pow(x, n): 36 s = 1 37 while n > 0: 38 n = n-1 39 s = s * x 40 return s 41 42 #二、默认参数 43 #此时,如果pow()函数不传递 两个参数就会报错,但是我们经常要算平方,该怎么做呢?可以设置默认参数,如果不传递第二个参数,可以给他一个默认值 44 def power(x, n = 2): 45 s = 1 46 while n > 0: 47 n = n-1 48 s = s*x 49 return s 50 51 52 #注意点: 1、必选参数在前,默认参数在后,2、设置默认参数,默认参数调用降低了函数调用的难度 3、默认参数必须是不可变的 None就是不可变的 53 def add_end(L=None): 54 if L is None: 55 L = [] 56 L.append('END') 57 return L 58 59 #三、可变参数 60 #定义包含 可变参数 的函数 计算(a*a+b*b+c*c...) 61 def cacl(*numbers): 62 sum = 0 63 for n in numbers: 64 sum = sum + n*n 65 return sum 66 67 #调用的时候 68 print("1*1 + 2*2 :", cacl(1, 2))#5 69 print("1*1 + 2*2 + 3*3 :", cacl(1, 2, 3))#15 70 71 # 我们也可以 把一个定义好的 list 或者 tuple 转化为 可变参数 72 nums = [1,2,3,4] 73 print("平:方 1+到4 : " ,cacl(*nums)) 74 75 # 四、关键字参数 76 #可变参数允许传入 0个或者 任意个参数,这些可变参数在函数调用时自动组装为一个tuple.而关键字允许你传入 0个 或任意个含参数名的参数这些关键字参数在内部自动组装为一个dict 77 def person(name, age, **kw): 78 print('name : ',name, 'age : ',age, 'other : ',kw) 79 80 person('jim',23,city='NewYork',addr='five road') 81 82 # 与可变参数类似,也可以组装出一个dict,然后把该dict转化为关键字传进去 83 extra = {"city":"ShangHai","job":"SE"} 84 person("Dive",28,city=extra['city'],job=extra['job']) 85 #或者 86 person("Dive",28,**extra) 87 88 # 五、命名关键字参数 89 #对于关键字参数,函数调用者可以传入任意不受限制的关键字参数,至于到底传入了那些,就需要在函数内部通过kw检查 90 #如检查 person() 是否有 city 和 job 参数,此时,调用者人可以传入不受限制的关键字参数 91 def person(name, age, **kw): 92 if 'city' in kw: 93 #有city 94 pass 95 if 'job' in kw: 96 pass 97 print('name:', name, 'age:', age, 'other',kw) 98 99 person('kiven',27,city='hangzhou',addr='xihu',zipcode='123456') 100 101 #如果要限制关键字参数的名字,就可以用命名关键字参数。例如,只接受 city 和 job 作为关键字参数 102 def person(name, age, * ,city, job): 103 print(name, age, city, job) 104 #可以 这样调用,如果不传入 city 和job 将会抛出错误 105 person("xiaowang",28,city='Shanghai', job='SE') 106 107 #命名关键字参数可以设置缺省值,从而简化调用 108 def person(name, age, * , city='Shanghai', job): 109 print(name, age, city, job) 110 #由于city在 person定义是设置了默认值,调用时,可不传入city 参数 111 person('xiaohuang',26,job="SE") 112 113 # 参数组合 在定义 函数时,可以将 必选参数、默认参数、可变参数、关键字参数、命名关键字参数混合使用 114 def f(a, b , c = 0, *args, **kw): 115 print('a:', a, 'b:', b, 'c:', c, 'args:',args, 'kw',kw) 116 f(1,2) 117 f(1,2,c=3) 118 f(1,2,3,'a','b') 119 f(1,2,3,'a','b',x=99) 120 f(1,2,d=99,ext=None) 121 122 #可以先定义 一个 tuple 和一个 dict,然后当做参数传入 123 args = (1,2,3,4) 124 kw = {'d':99, 'x':'#'} 125 126 f(*args, **kw)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
2015-07-10 OC中的属性、方法及内存管理
2015-07-10 OC中属性及方法
2015-07-10 XML基础知识