| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python实现代码复用的手段? -> 正文阅读 |
|
[Python知识库]Python实现代码复用的手段? |
目录 前言是否遇到过有很多操作是完全相同或者非常相似的情况,他们之间区别仅仅在于数据不同,不同的代码位置多次执行相似甚至完全相同的代码块。在这里,解决此类问题,可以选择借助“函数”技巧和“类”的手段。 函数--实现代码复用(1)定义函数实现代码复用的第一种手段就是使用函数。在Python中,使用def关键词来定义函数,给予函数名和括号,括号内可填补此函数形参列表,尾接冒号,隔行加上注释,再编写函数体,即可完成了一个函数的整体定义。 函数的定义格式:def 函数名 ( [参数列表] ): ????????????????????????????????????'''注释''' ????????????????????????????????????函数体 语法上注意:与C语言有个很大不同,Python函数形参不需要声明其类型,解释器会自行判断,也不需要指定函数的返回值类型,return语句结束函数执行的同时可返回任意类型值,这取决于返回表达式的类型。若未执行return语句结束函数,Python将认为该函数以return None结束,返回为空值。 适当注释可方便用户得到提示,使用内置函数help()可查看函数的使用帮助。 (2)函数调用函数调用时,应以下注意几点要求: 1.匹对调用函数的参数,如果传入的参数数量或者参数的类型不对,会报 2.函数定义后才可调用,须注意编译器编译顺序问题; 3.形参位置对应,传递的实参与形参在位置上是一一匹配的。
递归调用是函数调用的特殊情况,可实现层层调用自己进行运算。
(3)函数参数Python支持默认值参数,用户在定义函数时可设置默认值,默认值参数传递实参是可选的。不过需要注意:def? 函数名? (......,形参名 = 默认值):任何一个默认值参数右边都不能出现没有默认值的普通位置参数。使用“函数名.__defaults__”可随时依次查看函数所有默认参数的当前值,返回值为元组形式。
函数的默认值参数是在函数定义时确定的,多次调用函数并且不为默认值参数传值,默认参数只在函数定义时进行一次解释和初始化。
由于Python基于值的内存管理模式,在调用函数时,实参到形参的过程同样完成的是引用的传递,即Python函数不存在传值调用。如果传递给函数的是列表、字典、集合或其他可变序列,并且在函数内部使用下标等方式可对序列进行更改时,其结果是可以反应到函数之外的。 函数传值也可采用关键参数的参数传递方式,明确指定哪个值传递给哪个参数,这种情况,实参顺序是可以与形参顺序不一样的。
定义函数时,也可采用*parameter和**parameter可变长度参数形式,*parameter将接受任意多个实参合并放在一个元组中,**parameter将接受类似于关键参数一样显示赋值形式的多个参数合并放入字典。这种方式函数设计不恰当很可能出现报错。? (4)传参解包序列解包对象是指实参,与可变长度相似,存在*与**形式。 对于序列,元组、集合等可迭代对象作为实参,使用*可对序列进行解包,并按顺序依次分别传递给形参。实参对象是字典,默认是对字典的“键”操作。
采用**形式进行关键参数解包,与关键参数功能相似,若应用于字典,要求字典中所有的键都必须与函数形参相对应。另外注意,序列解包与关键参数解包可同时使用,序列解包不能放在关键参数解包之后。 (5)作用域变量起作用的代码范围成为变量的作用域,不同的作用域内同名变量之间互不干扰。 这里提及到作用域的问题,不仅要考虑到函数的作用域,还需考虑到变量的作用域。这一个Python的程序文件中,函数的作用域为整个文件,当然还要根据实际情况,要在函数定义后调用。 而变量可分为两种,全局变量和局部变量,在某个函数中普通定义的变量为局部变量,作用域也就是这个函数内,函数调用结束,该变量引用内存被Python释放,全局变量则不同,它的作用域在这整个程序文件。在函数内部,可通过global关键词声明或者定义全局变量。 局部变量若与全局变量同名时,那么局部变量会在自己的作用域内暂时隐藏同名的全局变量。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/16 1:24:11- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |