Python从零开始系列连载(17)——Python特色数据类型(函数)(上)
作者:王大伟
Python爱好者社区唯一小编
博客:https://ask.hellobi.com/blog/wangdawei
前言
前文传送门:
Python从零开始系列连载(2)——jupyter的常用操作
Python从零开始系列连载(3)——Python的基本数据类型(上)
Python从零开始系列连载(4)——Python的基本数据类型(下)
Python从零开始系列连载(5)——Python的基本运算和表达式(上)
Python从零开始系列连载(6)——Python的基本运算和表达式(下)
Python从零开始系列连载(7)——Python程序的基本控制流程(上)
Python从零开始系列连载(8)——Python程序的基本控制流程(下)
Python从零开始系列连载(9)——Python特色数据类型(列表)(上)
Python从零开始系列连载(10)——Python特色数据类型(列表)(下)
Python从零开始系列连载(11)——Python特色数据类型(元组)(上)
Python从零开始系列连载(12)——Python特色数据类型(元组)(下)
Python从零开始系列连载(13)——Python特色数据类型(字典)(上)
Python从零开始系列连载(14)——Python特色数据类型(字典)(下)
Python从零开始系列连载(15)——Python特色数据类型(集合)(上)
Python从零开始系列连载(16)——Python特色数据类型(集合)(下)
AV8D
国庆玩的爽不
是不是刷刷朋友圈就像看遍了祖国大好河山~
说好的此地空余黄鹤楼,结果黄鹤楼被人山人海包围啦, '空余' 两字没体现出啊!
已经6天没更新啦~
收收心,该继续学习啦
函数
说到函数,如果你没有编程基础,可能马上会想到初高中学过的:
y = f(x)
例如:y = x +1
当我们 x = 1时,y = 2
x = 2,y = 3
小明:老湿,我们不是初中生!
函数可以将问题简化,我们可以重复使用这个函数解决 y = x + 1 这一类问题
所以,函数就是那些做成重复使用的程序代码
函数的定义
函数是由函数名、参数和函数体组成,格式如下:
def 函数名(形式参数):
函数体
[ return 返回值 ]
def是系统关键字,之后的文章会系统讲一下,这里只要知道这个是用来定义函数的
如果是你自己定义函数,函数名要符合变量命名规则,并且不能是系统关键字(在jupyter中,打出系统关键字是绿色的)
例如,我们定义一个求两个数的和的函数:
看,这里的 def 和 return 是绿色的,也就是系统关键字
这里函数名是add(英语是求和的意思)
然后有两个形式参数,a和b
函数体部分执行的是 c = a +b
最后函数返回的是 c 的值
这就完成了一个求和函数的定义
函数的调用
函数的调用很简单,我们只要根据函数的定义形式
将实际计算时的参数值传进去就行(也可能没有参数)
函数调用格式:
函数名(实际参数)
这里的 add(3,4) 就是函数调用
实际参数分别是 3 和 4
当函数调用发生时,才开始执行函数的内容
即给 a 赋值为 3 , b 赋值为 4
然后计算出 c = 7
最后返回 c 的值 7
函数调用写的参数是实际参数(‘实际’体现在参数是实际执行函数使用的)
函数定义写的参数是形式参数(‘形式’体现在他只是个格式和形式,真正函数执行时候还是先看实际参数)
其实,Python有很多内置函数,例如我们之前课程常常使用的print()
print()函数是内置的,所以不用定义
内置:安装好Python就有的
还记得以前手机很多内置吸费软件么
点进去xxx软妹币就没了,手机短信提示欠费了
参数的传递
函数调用时候,是将实际参数传递给形式参数
函数参数的传递方法有很多
1.参数按照位置顺序传递
刚才的add函数就是这种,按顺序,3传递给a,4传递给b
2.参数按赋值传递
这里定义了一个两数相减的函数
注意到函数调用时候,指明了 b = 4 , a = 3
是一种赋值,所以这里的就和上个相加的例子中顺序传递参数不一样了
3.参数按照默认值传递
有时候,可以在函数定义里给函数形参设定一个默认值
当函数实参没有传递值进来,就使用默认值
这里在定义函数时候,给形参 b 设置了默认值 2
然后调用函数时候,只传递了一个参数值 4
则python默认将 4 传递给 a,因为在定义时候给 b 设定了默认值 2
当然,当传入的参数是两个时候,则覆盖掉默认值,即不使用定义时候的默认参数值
4.(难点)元组类型的变长度参数传递
我们写个打印输出的函数
如果我们要打印三个数怎么办?
小明:老湿,我知道!我们可以这样!
小明:
很好!小明,如果我们要打印1000个数呢
小明:emmmm
、
【敲黑板】
我们可以定义一个变长参数,可长可短,你懂的!【坏笑
小明: 这不是去幼儿园的车!我要下车!
我们可以在参数前面加一个星号 * ,表示这个参数是可变长参数
当其他参数赋值完毕时候,剩下的参数依次赋值给这个可变长参数
所以刚才的可以这样实现:
但是,注意到没有,这里的 b 是元组 (2,3)
所以你执意要打印出,可以提前修改函数的打印功能
这就通用了,不信你试试:
相当于将字典的每个元素依次拿出来
5.(难点)字典类型的变长度参数传递
我们可以在参数前面加两个星号 ** ,表示这个参数是可变长参数
是以 实参名=字典值的方式传递
例如刚才的例子,我们改一下
注意到,字典类型变长参数传递一定是赋值形式传递进去的
当然,元组和字典形式变长参数也可能用不到,例如:
这样,打印出的就是空元祖和空字典啦~
如果你执意要实现那种打印形式,我们就改一下函数:
c [ j ] 指的是打印 j 这个键对应的值,如果不这样写,结果会是这样,打印出的是键:
注意,可变参数的位置一般写在最后,不能乱了顺序,否则会报错!!!
今天作业是自己跟着操作一遍~
自己不敲代码永远学不会写代码
下课
人生苦短,我选Python
未完待续,连载中......
现在还坚持再看连载学习的你们真的很棒棒!
入门部分已经学完大部分啦!加油
接下来是福利时间!!!
连载看的不过瘾?快来听小编的Python从零开始免费直播课啦~
点击文末阅读原文立即报名
加微信直播管理员微信:xtechday(请注明:从零开始) ,随后管理员会将你拉入到交流群中。
Python爱好者社区历史文章大合集:
Python爱好者社区历史文章列表(每周append更新一次)
关注后在公众号内回复“课程”即可获取:
1.崔老师爬虫实战案例免费学习视频。
2.丘老师数据科学入门指导免费学习视频。
3.陈老师数据分析报告制作免费学习视频。
4.玩转大数据分析!Spark2.X+Python 精华实战课程免费学习视频。
5.丘老师Python网络爬虫实战免费学习视频。