为什么要在基类使用私有数据_为什么要使用函数
欢迎回来,这里python学习的第十一篇笔记。在历往的推送中,我们已经或多或少的涉及到一些关于python函数的概念、用法。比如这一篇 ↓
手把手带你学 Python3(九)| 快速实现数据处理的不二工具
这段时间又系统的学习了一下函数,所以再来絮絮叨一下,以作补充。
上一篇阅读量 数月亮 好低换个颜色写开头
函数是什么
函数,即实现一个特定功能的代码段。是python中的重要技能(工具)。
函数离我们并不远,早期我们已熟练使用了一些内置函数:例如
input print
等;
根据使用范围可以将函数分为两类:
主函数
我们会使用这样来表示,它和代码一样,全局都是使用;
01 if _name_ = '_main_':02 print('This is main.')
子函数
除了内置函数外,这里就是发挥你洪荒之力的地方啦;
03 def Plus(a,b):04 print(a+b)
另外,还能从实现不同的功能角度来区分,比如 匿名函数
以及高阶函数
详见实例说明:
图片来源于 生信菜鸟团 python学习的第九篇
使用方法:
图片来源于cnblog:痴海
为什么要写函数
看似好像按格式写,实现简单目的的时候,代码不是会显得复杂?那么为什么要写函数呢
首先是好看,连宠物都开始美容的年代,一代码农怎么能忍自己的代码不好看呢(扯远了)那什么的代码是好看的?我认为规则有序,不一定方方正正,比如 Voronoi图(维诺图)
图片来源于 果子学生信:我一直以为奥林匹克水立方上面的格子是乱画的。
那 Python中的规则呢,官方建议PEP8
:
我们可以通过 Pycharm 中我们已经说到如何快速使用规范代码的方法,如上述提示。修改以后,虚线提示消失,符合主流规则,由于现在的代码段数量较小,可能显示不来大改变,但是习惯还是一开始就训练的好。
规范了以后就会带来很多的好处,比如检查以及理解代码块,如果在定义函数前在注释一句话,那会对使用者更友好。
第二是代码容易拆分,拆分的好处处理看起来整齐以外,还能将代码提速,即调用需要的子函数实现功能。当然,在实现一个复杂功能的时候,代码块可以分工给不同的人员来开发,好比一亩三分田,提高协作效率。
第三是有序,避免代码重复(DRY),同时可以厘清思路,比如代码可以依据数据分析过程,从数据导入→数据清理→数据处理→数据可视化等逐一实现。同时也为易读、易改做铺垫。
DRY(Do not Repeat Yourself)原则,不要重复自己。
参数使用
在之前推送中我们简单提到过形参和实参,形参指形式参数,通过赋值才具有意义,可以理解为变量;而对应的实参就是具有实际意义的参数,可以是字符串、数字等。
注意形参可以预先给定一个默认值。如果调用不给实参,那么参数将使用默认值;如果给定值,那么默认的参数会被替换。
在定义函数的过程中,一定要注意的形参的位置信息,如果对调的话可能造成的情况就是输出错误结果甚至报错。当然,在调用过程中可以在函数中将参数直接定义,可以避免位置错误带来的麻烦。
例如我们举一个内置函数的例子map
,这也在之前的推送中提到,主要用于对list
中各元素的批量处理。
#将浮点数取整list_float = [1.1, 2.1, 3.5, 4.6, 5.2, 6.66, 7.877]list_int = list(map(int,list_float)) print(list_int)
#参数位置错位,就会报错list_float = [1.1, 2.1, 3.5, 4.6, 5.2, 6.66, 7.877]list_int = list(map(list_float,int)) print(list_int)
TypeError:'type' object is not iterable
我们可以使用关键字实参来躲避位置错位带来的问题:
#关键字实参01 def Plus(a,b):02 print(a+b)030405 Plus(b=2, a=1)
但是,如果项目中不确定需要传递几个实参,也就是无法确定需要多少个形参,我们就需要使用如下的办法来解决:
在定义函数过程中使用
*
来实现解释任意多个形参。
*
在这个过程中指代一个空元祖。
返回return
一个完整的函数的都会有 return
,返还值可为基本数据类型,同时可以返还一个表达式,如果没有,返回 None
01 def Plus(a,b):02 add_sum = a+b03 return add_sum04 #return a+b
05 add_result = Plus(b=2, a=1)
补充资料:内置函数官方文档
http://docs.python.org/3/library/functions.html
猜你喜欢
三剑客 PyCharm使用 | 编程基础与规范代码 | 列表使用
元组拆包是个啥?| 字典与FASTA文件序列抽提
如何判断序列是否跨过剪切位点 | python3 脚本小实战
爬虫小测试 | 函数入门
如何优雅的数月饼
全国巡讲约你
第1-11站北上广深杭,西安,郑州, 吉林,武汉,成都,港珠澳(全部结束)
一年一度的生信技能树单细胞线下培训班(已结束)
全国巡讲第13站-杭州(生信技能树爆款入门课)(已结束)
中秋节一起来学习!全国巡讲第16站-广州(名额紧张)
如果你也有什么学函数好点子和建议,欢迎留言哟。
点击原文 即刻拥有内置函数官方文档
点个在看再走呗
为什么要在基类使用私有数据_为什么要使用函数相关推荐
- 基类使用私有数据_C++作业之多继承与虚基类
点击蓝字 关注我们 实验目的 1.掌握多重继承的使用. 2.理解虚基类的作用. 3.熟悉派生类对象与基类的转换. 1 实验要求 1.将代码和运行结果复制到word文档提交. 2.word文档命名格式: ...
- 设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数、求正方形周长的虚函数、输出函数。 (2) 定义类Square的共有派
设计一个程序,求正方形和长方形的周长,具体要求如下: (1) 定义正方形类Square作为基类,包含数据成员边长,以及构造函数.求正方形周长的虚函数.输出函数. (2) 定义类Square的共有派生类 ...
- 析构函数声明无效_C++基类的析构函数为何要声明为虚函数
C++的类中,构造函数用于初始化对象及相关操作,构造函数是不能声明为虚函数的,因为在执行构造函数前对象尚未完成创建,虚函数表还不存在. 析构函数用于销毁对象完成时相应资源的释放工作,析构函数可以被声明 ...
- C++中访问类的私有数据成员的第三种方法
我们知道,C++的类是有封装性的,那么对于私有数据成员我们如果想在类外访问,一般而言无外乎这么两种方法: 1.通过公有的成员函数 2.通过友元 这是两种通常的做法,还有一种是比较"反常&qu ...
- C++访问类的私有数据成员的三种方法
总是忘记C++的私有数据成员到底什么能访问,今天总结下,特此记录. 注:还可以使用指针访问修改private数据成员的值: class Test {private:int x;int y; publi ...
- Java基类共同属性设置_多选择基类的访问属性-Java初学笔记
多选择基类的访问属性 你现在知道在定义类的访间属性时可用的选择项,你希望使用这些类定义子类.你知道在类继承上这些属性所具有的效果,但是你如何决定到底应该使用哪一个呢? 这里没有死板和现成的规则,你选择 ...
- python嵌套类(内部类相互调用)_核心解密Python函数在(类与函数之间)和(类与类之间)互相调用...
image.png 一.类与函数之间 首先来看一个函数间的调用 类方法: #实现类中函数之间互相调用 #下面一个学生的简单自我介绍为例子 __metaclass__=type #自由的.动态的修改/增 ...
- 请编写一个正方体类,类的私有数据成员是边长,要求用公有成员函数实现以下功能:1. 由键盘分别输入正方体的边长2. 计算并输出正方体的体积
#include <iostream> using namespace std; class aaa { private: int a; public: void Print() { co ...
- C++经验(四)-- 基类构造函数和析构函数中调用virtual虚函数?
class Base {public:Base();virtual void oneFunction() = 0;... };Base::Base() {...oneFunction(); }clas ...
最新文章
- eclipse中maven打包
- Git历险记(四)——索引与提交的幕后故事
- 个人计算机与微型计算机的区别与联系,微处理器、微型计算机和微型计算机系统之间有何联系与区别?...
- 【转】UGUI研究院之缓存策略让UI打开更快(三十)
- idea连接mysql例子_IDEA连接MySQL数据库,并把数据库数据在浏览器中进行展示
- pytest框架_Python最火的第三方开源测试框架——pytest
- arduinowifi.send怎么获取响应_ChatterBot代码解读-获取对话
- java queue源码_Java高并发系列之ArrayBlockingQueue源码解析
- ubuntu 系统相关
- GCC: libgcc的用途以及交叉编译
- 【Elasticsearch】ES Elasticsearch查询优化
- [转]在EntityFramework6中执行SQL语句
- ExtAspNet v2.0.6发布 - AJAX性能提升
- 在VS2010中使用Git【图文】转
- html监控服务器状态,HTML5-WebSocket实现对服务器CPU实时监控
- EPS数据导入CASS中
- 解决三星PM981硬盘无法正常安装黑苹果的问题(第四版)
- 两万字详解自动驾驶开发工具链的现状与趋势
- html广告拦截网吧,网吧广告拦截软件是怎么安装的
- 使用微信开发工具制作一个简单的古诗词展示微信小程序
热门文章
- SAP Hybris Commerce Cloud 项目里的 eclipsebin 文件夹
- 关于 SAP 电商云 Spartacus UI checkout 流程的一些讨论
- windows 操作系统里 git bash 和 git cmd 的区别
- SAP Spartacus Ngrx 使用的一些准则
- 一个讨论:SAP项目实施的顾问,需要花时间去调试代码了解技术细节吗
- Angular元素属性绑定的一个例子
- SAP BSP, Java Web Project,Android和微信小程序的初始页面设置
- SAP Vim和ABAP Editor的个人设置
- SAP Business Application Studio和Authentication Trust Management
- SAP UI5 application - model propagation