新闻详情

新闻详情

首页 / 资讯中心 / 详情

Python快速入门专业版(二十七):函数参数:位置参数与关键字参数(避免参数传递错误)

发布时间:2026/9/28 3:57:08来源:尧图网络
Python快速入门专业版(二十七):函数参数:位置参数与关键字参数(避免参数传递错误)
在函数的使用过程中, 参数传递这个环节是连接函数定义和函数调用的桥梁, 同时它也是特别容易出错的点。很多刚开始学编程的人, 在调用函数的时候, 经常会因为把参数的顺序搞反了, 或者是把参数的名字弄混淆了, 从而让程序报错, 或者导致逻辑出现错误。其实呢, 这边只提供了两种比较基础的参数传递方式, 一种叫做位置参数, 另一种叫做关键字参数, 这两种方式在不同的使用场景下各有各的用处, 而且它们在使用的时候也有必须严格遵守的规则。咱们得去弄明白这两种参数在本质上到底存在什么差别, 还要把它们的正确使用方法给牢牢掌握住, 这样做的话, 不仅能够让大多数因为参数传递不正确而出现的问题被避免掉, 还使得代码本身的阅读体验变得更好了, 也让后续的维护工作变得更加顺畅了。这一篇文章打算从参数到底是怎么传递的这个最根本的地方开始聊, 会非常细心地把位置参数还有关键字参数到底是啥样的、用的时候得守什么规矩、这两样混在一起用的时候要注意哪些事儿都讲清楚, 然后用许多对的错的例子来给大家演示怎么传参才对、怎么传参就错了, 再加上一个专门用来打印用户信息的实战小项目, 这么一来, 你就能建立起自己很清楚的关于参数该怎么传的脑子里的想法, 从而写出那种不容易出bug的更结实的代码。一、参数传递的本质形参与实参的绑定在讨论位置参数和关键字参数之前, 我们需要先弄明白参数传递究竟是怎么回事。函数定义时大括号里面写的那个变量名字, 叫做形式参数, 也就是大家常说的形参。它就是函数用来接收外面送进来的东西的一个通道接口。而在函数调用的时候大括号里写的那些真实的数据值, 叫做实际参数, 这就是大家常说的实参。这些东西就是调用方实实在在地提供给函数的具体数据内容。所谓参数传递的这一整个过程呢, 说白了就是将那些实际参数的具体数值对应绑定到那些形式参数所对应的变量上去的一件事情而已。比如说, 有一个函数是用来计算矩形的面积的这样一个定义。def rectangle_area(length, width): # length和width是形参return length * width当你去调用这个函数的时间点上。area rectangle_area(5, 3) # 5和3是实参参数传递的实际操作逻辑是什么? 简单来说, 那就是把实参5这个数值直接绑定给某一个未明确命名的形参位置, 同时, 把实参3这个数值明确地绑定给那个名为width的形参变量, 到了函数代码块内部执行的时候, 就会通过相互结合以及引用width这两个值来进行后续的运算或者处理。这个绑定过程究竟是怎样实现的呢? 这里提供了两种绑定策略, 一种是按位置来绑定的方式, 也就是我们所说的位置参数, 另一种是按名称来绑定的方式, 也就是我们所说关键字参数。这两种策略决定了实际中的参数与形式上的参数是如何进行匹配的, 同时, 它们也会直接影响我们对参数进行传递时的灵活性以及安全性情况。二、所谓的位置参数这个概念呢, 就是指的按照那个规定的顺序来进行绑定的一个所谓的“位置契约”。位置参数属于最基础的那种参数传递方式, 同时也是被用得最多的一种方式, 它有一个非常核心的规则, 这个规则其实就是实参和形参会按照它们各自定义时候的顺序一一对应进行绑定起来, 这种办法就特别像我们去填写一个表单的时候需要按着那个固定的位置去填内容, 这就意味着第一个空缺的地方就得对应上第一个提出的问题, 第二个空缺的地方就得对应上第二个提出的问题, 这里的顺序是绝对不能出任何错误的。1. 基本用法: 顺序这个东西会决定绑定关系是怎么建立的。当你调用函数的时候, 里面实际参数的数量还有顺序, 必须跟函数定义里形式参数的情况完全保持一致, 所以实际参数排在哪个位置, 就决定了它会被绑到哪一个形式参数上面, 这个是唯一的决定因素。把那个位置参数的内容, 给正确地传递过去。def describe_person(name, age, city):描述一个人的基本信息print(f{name}{age}岁来自{-- --city})# 位置参数传递实参按顺序对应name、age、citydescribe_person(张三, 25, 北京) # 输出张三25岁来自北京解析因为位置参数的顺序排列错了, 从而导致出现了逻辑方面的错误。要是实际传入的参数次序和定义的形参顺序对不上号, 哪怕数量正好匹配得当, 也照样会引出逻辑方面的毛病:# 错误实参顺序与形参不符age和city颠倒describe_person(李四, 上海, 30)请用户提交需要改写的句子内容。李四上海岁来自30解析这种被称为“静默错误”的情况, 实际上比直接报错更加危险, 原因在于它并不会触发任何语法错误的问题, 可是却会导致程序最终输出的结果出现差错。此外, 这也是位置参数所带来的一个重大隐患, 这是因为人们对顺序的严格依赖, 非常容易因为个人疏忽而引发逻辑上的错误。2. 位置参数在实际使用当中适用的场景有哪些, 并且它又存在什么样的局限性。位置参数的好处主要体现在简洁并且高效这两个方面, 通常情况下的条件是函数所带的参数数量很少, 一般是在三个或者三个以内, 同时这些参数的含义是明确的, 而且顺序也是容易被记住的, 在这样的时候使用位置参数就能让代码的结构变得更加紧凑一些, 比如像 len() 这个内置的函数只需要一个参数, 还有 max() 这样的带有多个参数的函数其结果的得出并不依赖于顺序的特殊情况, 在这些地方直接采用位置参数的处理方式是非常顺手且自然的。但是, 其不足之处也是十分清晰的。三、关键字参数指的是通过名称来进行绑定的身份契约。为了解决位置参数对顺序存在强依赖的这一状况, 于是引入了关键字参数这种做法。所谓的通过“形参名实参值”的这种形式来传递, 其实就是明确指定好实参会绑定到哪一个形参上面去的, 这样就能够彻底地去摆脱掉对于顺序的那种依赖关系问题了。1. 关于如何使用这个功能的基本方法, 其实就是让名称来决定绑定关系的。关键字参数的核心就是靠那个形参的名字, 去把关系给绑定上, 这么一看的话, 你就明白了, 实参的顺序根本就不用管它, 爱怎么调就怎么调, 随便变都行, 唯一的要求就是名字一定得对才行。示例3关键字参数的正确传递# 用关键字参数调用describe_person函数describe_person(name王五, age28, city广州) # 输出王五28岁来自广州# 关键字参数顺序颠倒结果仍正确describe_person(city深圳, name赵六, age35) # 输出赵六35岁来自深圳解析因为关键字参数的名称弄错了所以导致了报错。如果关键字参数的名称与函数定义的形参名称不匹配, 会直接抛出异常, 明确提示未知参数:# 错误关键字参数名称拼写错误city写成了citidescribe_person(name孙七, age40, citi杭州)报错信息TypeError: describe_person() got an unexpected keyword argument citi这种错误被归类为显性错误, 解析器会直接指明问题出在哪里, 也就是citi是未知参数, 这样大家就能快速地找出病因。和位置参数的静默错误做对比, 关键字参数的名称出现错误时, 人们会觉得更容易去发现它, 也更容易把它修好。2. 关键字参数这个用法, 它的优势在哪里, 还有那些被大家认为是最佳实践的方面。关键字参数的设计方法, 在很大的程度上提升了代码的可读性, 并且也增强了程序的健壮性特点, 这种作用尤其在以下的这些场景里面表现得非常明显和突出。这里有一条最佳实践建议, 那就是如果函数的参数数量超过了3个, 又或者参数的具体含义并不清晰明了的话, 我们应该优先选择使用关键字参数这种调用方式, 虽然这样做会牺牲掉一点点代码的长度, 但是能够换取更加高的可读性以及可维护性。四、所谓混合传递这种用法, 其实就是将位置参数和关键字参数放到一起来进行协同使用。在平时的开发过程当中, 大家总是经常要把位置参数跟关键字参数放在一块儿来用, 对于开头那几个“简单并且好记”的参数, 通常是用位置的方式传进去, 而对于后面的那些“比较复杂或者容易弄混”的参数呢, 则是用关键字的方式来传递, 这样的做法既照顾到了简洁性也兼顾了可读性。1. 这里有一条关于混合传递的黄金规则, 就是位置参数必须放在前面。规定要求: 在函数调用的时候, 所有的位置参数必须全部都放在关键字参数的前面。如果违反了这条规则的话, 就会直接导致语法错误的结果发生。示范五, 进行混合式信息传递时应该如何采取恰当且正确的操作方法。# 正确位置参数在前name关键字参数在后age和citydescribe_person(钱八, age22, city成都) # 输出钱八22岁来自成都# 正确前两个参数用位置最后一个用关键字describe_person(周九, 29, city武汉) # 输出周九29岁来自武汉位置参数会按照先后顺序, 依次绑定到最前面的那些形式参数上去, 而关键字参数则是依靠它们的名称, 去绑定到剩下的那部分形式参数里面, 这两者相互配合、协同工作, 这样一来, 不但能够减少代码的总行数, 起到了精简的作用, 同时又能够有效避免因为传参顺序不对而出现错误现象。这是一种混合进行传递所导致的错误的表现形式, 其具体的特征就是将位置参数放置在了后面。# 错误关键字参数在前位置参数在后describe_person(name吴十, 33, city重庆)报错信息SyntaxError: positional argument follows keyword argument出现错误的原因是, 位置参数被放到关键字参数后面去了, 这种做法违反了相关的语法规则。解释器在解析参数的过程中, 会先处理所有位置参数, 然后再处理关键字参数。顺序是不允许颠倒的。2. 很多人容易陷入一个常见的问题, 那就是在混合传递的时候, 会把同一个参数重复地传过去。在把位置参数和关键字参混在一起用, 非常容易踩那个“同一个参数被传了多次”的坑——具体来说呢, 就是一个形参既被位置给它绑定上了, 随后又被关键字方式再次绑定上了。由于参数被重复地进行了传递, 从而导致了报错情况的出现。# 错误age既通过位置参数传递第二个实参26又通过关键字参数传递describe_person(郑十一, 26, age27, city南京)报错信息TypeError: describe_person() got multiple values for argument age形参age先是受到了第二个位置参数26的绑定, 接着又受到了关键字参数age27的绑定, 这种状况引发了多重赋值的冲突现象, 系统是不允许出现此类矛盾的, 因此会直接抛出错误结果。这种情况常常出现在参数数量比较多的混合传递过程里面, 解决的方式是: 需要把哪些参数是用位置传递来弄明白、把哪些参数是用关键字传递也确认清楚, 这样就能避免重复了。五、参数传递错误的全面解析与规避策略参数传递错误这种类型是函数调用里面最经常出现的错误, 除了前面所说的那些顺序弄错、名称弄错、顺序颠倒、重复传递的情况以外, 还有那些参数的数量和实际要求的数量对不上的问题, 大家只有把各种各样的错误的表现形式和背后的成因彻底地了解清楚, 才能够有效地避免这些问题的发生。1. 咱们来聊聊那些经常出现的参数传递搞错的事儿, 还有具体的例子。这里面包括了错误是啥样的、代码长啥样、为啥会报错, 以及报错时候给的消息长什么样。把位置参数的顺序搞错了, 结果导致调用出错。编号为25姓名是张三, 所在地点是北京。实参顺序与形参不符原句存在语义冲突或前后矛盾, 使得整句话的意思变得不合理。传入的参数名不对, 导致出现问题。姓名被标记为张三, 年龄的数字是25。关键字参数的名称, 它是与形式参数不一致的。就是ag。在关键字参数放在后面的那个位置上, 去设置那些位置参数。这个人的名字叫做张三, 而且他的年龄是二十五岁。用户提出了一个情况, 那就是违反了规则, 这个规则的内容是要求位置参数必须在前面。:参数重复传递第一个内容是张三, 年龄是二十五岁, 而第三个属性age对应的数值是三十岁。同一个形式参数被进行了多次赋值操作。: ... got for age实参数量少于形参(张三, 25)缺少必要参数: () 1 : city调用函数的时候, 实参的数量多于形参。张三他今年二十五岁, 人在北京那个地方, 性别是男的。把那个根本没有需要的参数, 给它传过去啦。这个操作需要三个参数, 但是实际上给了四个。2. 为了避免参数传递时出现错误, 可以应用五大策略中的第一条, 就是在参数数量既少又明确的情况下使用位置参数, 而在其他情况之下则使用关键字参数。其次是第二条策略, 当采用混合方式进行参数传递之时, 应当确保位置参数的数量不超过三个。有研究结果表明, 人类对3个或者是少于3个的有序信息的处理能力是很强轻松的, 但是一旦超过了3个, 那么就非常容易出错。那么在混合传递的情况里面, 建议把位置参数的数量限制在了3个以内, 而剩下的参数部分可以采用关键字来进行传递。选择第三种办法, 就是在去调用这些函数的过程中, 一定要把文档字符串作为主要参考依据来看待。当你在定义一个函数的时候, 应该把文档字符串给写清楚, 并且在里面详细地说明一下每一个参数所代表的意思和排列的顺序, 等到你要调用这个函数的时候, 如果心里没底或者不太确定怎么用了, 就使用 help 函数并加上那个函数的名字, 以此来查看相关的文档信息。def describe_person(name, age, city):描述一个人的基本信息参数name (str)姓名age (int)年龄city (str)所在城市print(f{-- --name}{age}岁来自{city})help(describe_person) # 查看参数说明策略4, 就是去使用开发工具里的自动提示功能。现在的IDE工具, 比方说那个叫做VS Code的软件, 当用户在录入函数名称以及后面的括号之后, 系统会自动把参数对应的列表和相关提示内容给展现出来, 假如使用者能够照着这些具体的提示来传递参数的话, 那么就有比较可观的效果去防止错误情况的产生。策略5编写单元测试验证参数传递对函数所使用的各种各样的参数传递方式, 来编写单元测试的代码, 要确保像参数顺序被颠倒这种边界情况, 或者名称出现错误这种细节问题, 能够被及时地发现。六、咱们来看一个实战方面的例子, 这个例子讲的是把参数传递给用户信息打印函数的时候, 具体是怎么去做的。为了能够巩固住位置参数和关键字参数的用法, 我们是借助了一个名为“用户信息打印函数”的案例来完成的。通过这个案例, 我们会进行完整的演示, 把不同参数传递方式所呈现出来的效果、容易出现错误的地方以及被大家认可的最佳实践都展示出来。1. 案例需求我们需要去定义出一个函数出来, 这个函数的作用就是接收包括name也就是姓名的参数, 还有包括age也就是年龄的参数, 再包括表示性别的参数最后还要接收包括职业这一项内容的参数, 这总共是要收到四个参数的数据, 然后在接收到这些数据之后, 就要按照指定的格式来把用户的个人信息给打印显示出来, 具体要求如下所示。2. 函数被定义的这种状态或者动作。def print_user_info(name, age, gender, occupation):打印用户的详细信息参数name (str)用户姓名age (int)用户年龄1-150gender (str)性别男或女occupation (str)职业print(*30)print(f姓名{-- --name})print(f年龄{age}岁)print(f性别{-- --gender})print(f职业{occupation})print(*30)3. 我们来进行不同参数传递方式的演示, 方式1是纯位置参数传递的方式, 这种方式通常是不被推荐的。# 纯位置参数按顺序传递name、age、gender、occupationprint_user_info(张三, 30, 男, 工程师)输出结果姓名张三年龄30岁性别男职业工程师问题分析采用方式二, 也就是将参数以纯关键字的形式进行传递, 这种方法是被推荐的。# 纯关键字参数明确指定每个参数的名称print_user_info(name李四,age28,gender女,occupation教师)# 顺序颠倒不影响结果print_user_info(occupation医生,gender男,age35,name王五)输出的这些结果全都是正确的, 而且这段代码读起来特别轻松, 随便一眼扫过去, 就能马上明白每一个数值究竟代表的什么意思。选择第三种方法, 也就是混合传递的方式, 这种方式受到推荐, 因为它能够实现对位置参数数量的控制。# 混合传递前2个参数用位置后2个用关键字位置参数≤3print_user_info(赵六, 40, gender男, occupation程序员)优势分析4. 这是关于错误传递方式的描述, 同时也提到了需要加以修正的情况, 接下来展示的是第一个错误示例, 在这个示例中, 参数位置出现了在后面的这种情况。# 错误关键字参数在前位置参数在后print_user_info(name孙七, 29, gender女, occupation设计师)需要进行修正操作, 具体的做法就是把位置参数给移动到前面那个位置上去。# 正确位置参数在前关键字参数在后print_user_info(孙七, 29, gender女, occupation设计师)示例2中出现错误的原因在于, 参数被重复地进行了传递。# 错误age被位置参数和关键字参数重复传递print_user_info(周八, 33, gender男, age34, occupation律师)需要对重复出现的参数传递情况实施删除操作, 以修正该问题。# 正确只传递一次ageprint_user_info(周八, 33, gender男, occupation律师)5. 把具体的案例拿出来好好地总结一下。对于那种参数数量超过3个的函数, 就像是本案例这种情况, 它里面有4个参数, 那么混合传递这一种方式就是最佳实践, 这种混合传递的意思是, 前2到3个参数用位置来传, 剩余的那些参数就用关键字来传, 这样做既能减少代码里出现的冗余内容, 同时也能够避免因为参数顺序出问题而导致的错误, 纯关键字参数这种方法虽然是最安全的, 但是它的代码写起来会稍微长一些, 纯位置参数这种方式风险则比较高, 仅仅适用于那些参数极少的场景。七、深入思考参数传递与函数设计的关系参数传递这种方式的挑选, 它不但会影响函数调用是不是能进行得正确, 并且还会和这个函数本身的设计质量存在着非常密切的关系。如果一个函数的设计是比较良好的, 那么它就应当使得使用者能够非常容易地选出一个合适的参数传递方式, 以此来有效地降低出错的概率。1. 函数参数设计的三大原则 原则1参数数量宜少不宜多当函数的参数数量增加的时候, 我们在调用的过程中出现错误的机会就会变高。有一些研究结果显示, 比较理想的函数参数个数是在0到3个之间, 一旦超过了5个, 使用起来的难度就会变得非常大。如果在某些情况下面, 我们确实需要用到很多个参数, 那么我们可以选择把这一些相关的参数给收集起来, 把它们变成字典的形式或者类这种形式来进行处理。就拿这个情况来说, 把它的四个参数装进一个字典里去做封装。def print_user_info(user):通过字典接收用户信息print(f姓名{user[name]}年龄{-- --user[age]})# 调用时传递字典避免参数过多user {name: 吴九, age: 32}print_user_info(user)第二个基本原则, 就是需要将参数的排列顺序按照它们的重要程度来进行安排。把那些最常用的、处于核心的地位的参数给放置在最前面, 这样做是非常适合去进行位置传递操作的与此同时, 应该把那些次要的参数或者是可以选装的参数安置在后面, 这样的安排特别适宜于采用关键字来进行传递。以open(file, moder)这个具体的例子来作为说明的话, 其中的file部分, 也就是指代文件名的这一参数, 属于必须进行设定的核心参数, 因此会被放置在前面而mode部分, 即模式这一块内容, 则被归类为可选参数, 所以会位于后面, 并且已经设置有默认值的设定在其中。原则3的意思是, 对于那些容易让人搞混的参数。我们应该主动给它们设置一些默认的取值。对于那些意思差不多, 或者非常容易搞混的参数, 比如说 width 和 start 以及 end 这样的情况, 要去给它们设置一个合理的默认值, 要鼓励大家去使用关键字参数的这种方式来传递数据, 以此来减少出错的可能。def draw_rectangle(width, height10): # height设默认值绘制矩形width必须传递height可选print(f绘制宽{-- --width}、高{height}的矩形)# 调用时width用位置height用关键字即使使用默认值也可显式指定draw_rectangle(20, height15)2. 从参数传递看代码可读性一份优秀的代码应当具备自我说明的特点, 也就是说不需要依赖那些额外的解释性文字来让阅读它的人明白里面的意思到底是什么, 而关键字参数在提高代码可读这一方面呢, 确实起着十分关键的作用, 打个比方来说吧:# 可读性差不知道10和5的含义resize_image(10, 5)# 可读性好明确10是width5是heightresize_image(width10, height5)在搞团队协作的时候, 你要是能多用用关键字参数这种方式, 那么大家沟通起来省事儿了。成本自然就跟着变低了。同时你的代码也会变得更加容易让人去维护。八、总结与提升位置参数以及关键字参数, 这两种东西, 它们都是函数在传递参数的时候, 所使用的基本方式, 并且, 它们各自都有各自侧重的地方:避免参数传递出错的紧要之处, 主要就在于要去把两种参数绑定规则给弄明白了, 要根据参数的数量以及其复杂程度去挑选一个合适的传递方法, 并且还要去遵守那个位置参数应当放在前面、且总数不能超过三个个这样的规矩。做一个难度增加的练习题, 需要你自己去设计一个叫做 BMI 的函数, 这个函数需要接收两个具体的参数, 第一个是代表的体重, 单位使用的是 kg, 第二个是代表的身高, 单位使用的是 m, 接下来就要根据具体的计算规则, 也就是用体重除以身高的平方次方, 来算出最终的 BMI 指数数值, 然后分别通过三种完全不同的传参方式来进行函数的调用尝试, 第一种是位置参数传递, 第二种是关键字参数传递, 第三种是混合传递的方式, 通过这种实际操作, 你能够深切地体会到不同传参方法各自存在的优势以及不足之处。我们来分析一下内置函数print()的参数, 这些参数包含有一个星号*, 也就是sep , end\n, filesys.以及flushFalse。我们需要思考一下为什么像sep和end这样的参数适合使用关键字参数进行传递。我们可以设计出一个函数, 这个函数能够接收包括to、body、cc以及bcc在内的一系列的参数, 然后编写一段调用的具体示例代码, 以此来展示我们应当如何通过对参数传递方式的选择和调整, 来有效减少程序中可能出现的错误。通过做这些练习, 你不仅能够把手头这个参数传递的技巧给练熟, 而且还能够从这个函数该怎么去设计的那个角度去看问题, 进而写出那些用起来更加顺手并且状态更加稳固的代码代码, 你要始终记着这么一个道理, 那就是一个恰当的把参数传进去的方式, 它绝对是你去写那种自己就能说明白意思的代码所迈出的最基础的第一步。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

新手入门必看:哪些网站可以做百科来源及3大避坑指南 2026/9/28 5:00:43

新手入门必看:哪些网站可以做百科来源及3大避坑指南

新手入门必看:哪些网站可以做百科来源及3大避坑指南 很多刚入行的朋友,手里没代码基础,只想快速把公司官网搭起来,结果一查资料就懵了:为什么有的网站能上百度百科,有的却死活过不了审?这不仅仅是内容写得好不好的问题,更关乎你的网站在搜索引擎眼中…

阅读更多 →
江西窗晟防火膨胀密封条 幕墙用阻燃胶条 可按需裁切批发供应 2026/9/28 5:00:43

江西窗晟防火膨胀密封条 幕墙用阻燃胶条 可按需裁切批发供应

随着国内建筑节能标准不断升级,建筑门窗幕墙对密封材料的防火、安全性能要求持续提高,防火密封材料作为建筑防火构造的核心组成部分,市场需求逐年增长,同时行业对产品的定制化能力、性能稳定性、合规性也提出了更高要求。在这个趋…

阅读更多 →
调用函数时老是有莫名其妙地错误?函数的形参实参与返回值 2026/9/28 5:00:42

调用函数时老是有莫名其妙地错误?函数的形参实参与返回值

参考:Andrew Koenig《C 陷阱与缺陷(第二版)》4.3节 目录 形参是变量,实参是值 返回类型:没声明,就默认 int 参数类型:少写一个 double,square(2) 从 4 变成 0 默认实参提升&…

阅读更多 →
YOLO遥感油罐检测:从VOC/COCO格式转换到训练部署全流程实战 2026/9/28 5:00:36

YOLO遥感油罐检测:从VOC/COCO格式转换到训练部署全流程实战

简介:YOLO遥感油罐检测数据集面向遥感目标检测学习者和项目开发者,提供1000张真实场景高质量油罐图片及配套标注,解决油罐目标样本难获取、标签格式需反复转换的痛点。资源共2000个文件,压缩包约224.22MB,其中包含1000…

阅读更多 →
双目三维重建落地:从摄像头标定到点云体积计算全解析 2026/9/28 5:00:36

双目三维重建落地:从摄像头标定到点云体积计算全解析

简介:面向计算机视觉、机器人导航与增强现实领域开发者的一份三维重建实战项目,完整演示了从摄像头标定开始,计算内参、外参、畸变系数,到双目立体校正与视差计算,再到点云生成和体积测量的全过程。压缩包仅12KB&#…

阅读更多 →
OpenCV模板匹配车牌识别:从原理到毕设实践 2026/9/28 5:00:36

OpenCV模板匹配车牌识别:从原理到毕设实践

简介:这是一份基于OpenCV模板匹配的车牌识别Python毕业设计源码包,面向计算机相关专业的学生或需要完成课程设计、毕设项目的初学者,适合用来练习车牌定位、角度矫正、颜色识别、字符分割与模板匹配识别的完整流程。项目内置简单GUI&#xff…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉