零基础机器学习之Python基础-函数(下)

阅读文本大概需要 6 分钟。

前言

在上一节柠檬跟大家一起学习了函数也就是方法的基本用法,其中包括了函数的多参数,返回值等问题,这节课柠檬会给大家介绍函数的进阶用法,分成两节课讲一是因为柠檬一直都争取将每节课都控制在五分钟内,这样大家可以只用花五分钟就可以进步一点点了,第二点也是因为函数这一章的重要性,所以大家一定要跟着柠檬一起把这章学好。

参数为列表

上节课柠檬教会了大家在参数列表中传递字符或者数字类型的参数,这节课我们就来传递更高级的东东:列表。

你经常会发现,向函数传递列表很有用,这种列表包含的可能是名字、数字或更复杂的对象(如字典)。将列表传递给函数后,函数就能直接访问其内容。下面使用函数来提高处理列表的效率。

举个栗子,柠檬在一个列表中存放BTA然后将其输出出来,如下所示:

print_company方法

输出如下所示:

这个示例演示了最简单的将列表当做参数的操作,代码不是很难,相信大家都能看懂,我们将一个存放了BTA的列表传入print_company()函数中,然后用title()方法将他们的首字母转换为大写后打印出来。

怎么样,是不是很神奇,可能有的童鞋会觉得这有什么用呢,但是柠檬告诉你,以后我们会在实际编程中疯狂用到这些小的东西,比如切片之类的,基本上到处都是,所以切片虽然简单好理解,但是如果没有学的话那可能每十行代码就要比一次黑人问号脸了。

实参?形参?

柠檬觉得实参与形参的概念在读大学的时候炒鸡难理解,当时学的是C语言,里面的函数是叫做方法,也有形参实参这一说,当时的老师讲的也挺好,但柠檬就是理解不了这两个概念,其实柠檬现在回想根本就不是这两个概念有多难,而是柠檬脑子比较不好用。。。因为那是柠檬连冒泡法都理解不了,真的,我当时怎么都搞不明白为什么这么两行代码就能输出一个矩形。。。

好了回到我们刚才说的形参、实参上来,形参:形式参数,比如我们上面的第一个companies,如下图所示,它会告诉我们这里应该填什么参数,我们看到了这个companies就了解了我们应该要填个公司列表(因为它是复数的,记得柠檬说的取名要见见名思意吗?)。

实参,实际参数,也就是我们实际上传进去的参数,它是真正进到函数里面起作用的参数,如下图中的第二个companies。

形参与实参

传递n个实参

好了,既然大家已经了解了形参与实参的概念,那我们就继续往下学习在不确定有多少个实参的情况下传递参数的栗子。

直接上代码吧,其他的都是虚的。。。

传递任意数量的参数

函数输出

代码可以一目了然,我们传递了任意数量的公司,都可以很好的得到执行,只需要在形参(定义函数时的那个)前面加上一个*。上面的函数只有一个形参*companies,但不管调用语句提供了多少实参,这个形参都将它们统统收入囊中:

将函数打包

函数的优点之一是,使用它们可将代码块与主程序分离。通过给函数指定描述性名称,可让主程序容易理解得多。你还可以更进一步,将函数存储在被称为模块 的独立文件中,再将模块导入到主程序中。import语句允许在当前运行的程序文件中使用模块中的代码。通过将函数存储在独立的文件中,可隐藏程序代码的细节,将重点放在程序的高层逻辑上。这还能让你在众多不同的程序中重用函数。

将函数存储在独立文件中后,可与其他程序员共享这些文件而不是整个程序。知道如何导入函数还能让你使用其他程序员编写的函数库。

不多说,还是代码驱动,我们直接用上面的代码作栗子。柠檬保存了刚才的程序,然后在同一个目录下创建另一个.py文件,然后用import语句来调用它。

需要在同一个目录下

新的.py

输出

其实不止有上面这一种导入的方式,其他方式也有跟java导包比较相似的方法,大家可以去网上Google一下,柠檬在这就不赘述了。

总结

在本节课中,柠檬跟大家一起学习了:如何编写函数,以及如何传递实参,让函数能够访问完成其工作所需的信息。

序员的目标之一是,编写简单的代码来完成任务,而函数有助于你实现这样的目标。它们让你编写好代码块并确定其能够正确运行后,就可置之不理。确定函数能够正确地完成其工作后,你就可以接着投身于下一个编码任务。

函数让你编写代码一次后,想重用它们多少次就重用多少次。需要运行函数中的代码时,只需编写一行函数调用代码,就可让函数完成其工作。需要修改函数的行为时,只需修改一个代码块,而所做的修改将影响调用这个函数的每个地方。

使用函数让程序更容易阅读,而良好的函数名概述了程序各个部分的作用。相对于阅读一系列的代码块,阅读一系列函数调用让你能够更快地明白程序的作用。

在下节课,我们将一起学习编写类。类将函数和数据整洁地封装起来,让你能够灵活而高效地使用它们。

回顾

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180906G0937A00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券