内置函数与自定义函数
内置函数也叫自带函数,是Python已经定义好的函数,比如之前提过的sort()。 内置函数无需自定义,拿来即可用,方便又好使,不过功能有限。
以下是几个常见的内置函数:
函数名 | 函数用途 |
---|---|
len(a) | 返回变量a的长度 |
a.split(“x”) | 对变量a以x进行分割,返回一个包含分割后元素的列表 |
a.sort() | 对列表的元素进行从小到大排序 |
a.append() | 整段作为扩展内容 |
a.extend() | 分别作为扩展内容 |
当我们希望实现一些特定的功能而内置函数不能实现时,就需要建立自定义函数。自定义的格式如下:
def name():
code
用我们的语言翻译过来,意思是:定义一个函数,函数名为name,当遇到执行name函数的要求时,执行以下代码。
比如说:
In [1]:def addition(a,b):
return a+b
c=addition(1,2)
c
Out[1]:3
通过自定义addition()函数,我们可以很方便地在往后的编程过程中,将数值同时赋予a、b两个变量,并自动执行设定好的加法运算。
但需要注意的是,在这段代码中我们没有使用print语句对a+b进行处理,而是用return进行了替代。实际操作中,return的使用频率要比print高许多。因为print仅仅只是打印出来显示一下而已,不涉及电脑的计算功能,而return则是运算后返回结果,能够产生实实在在的对象并进行输出。
再以斐波那契数列为例,建一个自动显示该数列列表的自定义函数feibo():
In [2]:def feibo(n):
outcome=[0,1]
for i in range(n-2):
outcome.append(outcome[-1]+outcome[-2])
return outcome
feibo(8)
Out[2]:[0, 1, 1, 2, 3, 5, 8, 13]
参数的类型与传递
当我们调用函数时,函数会对某些数据进行处理,这些数据便是参数。有些时候,没有参数的函数是起不到任何作用的。此类函数需要结合括号里的参数才能返回有意义的结果。
括号里的参数,有些变量只是为了占位,方便日后进行定义,而有些则是常量,为程序指明了应当处理的内容是什么。前者是形式上的参数,称为形参,而后者则是实在的参数,称为实参。
当我们为函数提供实参时,数据将传递到形参的位置上。传递的方式有两种,一种是同位置传递,一种是关键字传递。
同位置传递只需按照自定义函数形参的排序输入实参即可。比如addition(1,2), 意味着a=1,b=2。而关键字传递则可在函数内指定为形参指定实参,比如addition(b=2, a=1)。两种传递方式将使函数返回相同的结果,但需要注意的是,传递的过程中,只能选择一种传递方式,不能混着来,否则Python会报错。
如果在自定义函数时就为形参指定了默认值,那么当使用自定义函数时,若不进行具体的指定,函数将按照默认值运行。比如说:
In [3]:def feibo(n=5): #设定n的默认值为5
outcome=[0,1]
for i in range(n-2):
outcome.append(outcome[-1]+outcome[-2])
return outcome
feibo()
Out[3]:[0, 1, 1, 2, 3]
函数中的变量
在自定义函数中的变量,一般只能在自定义函数内起作用,所以称为局部变量。一旦跳出了函数的作用域,局部变量将不会产生任何影响。
如果希望函数内部的局部变量对所有作用域都起作用,就需要对局部变量进行全局变量的声明,方式为在变量前加上global
,比如
In [22]:a=10
b=20
def show():
global a
a=1
b=2
return a+b
print show()
print a
print b
3
1
20
当函数内的a变成了全局变量,函数内被重新赋值的a,在后面print a
时即可见其变化。未被声明为全局变量的局部变量b,在后面print b
时没有产生任何影响,b依然等于20。
函数与模块
Python中的模块,简称为库。打个比方,一个函数能解决一个问题,那么把一堆函数放在一起,就能解决一件事情。为这堆函数打个包,就形成了模块的概念。
- 模块的安装
Python的魅力之一,在于其丰富多样且功能强大的第三方库资源。要查看电脑里已安装的模块,只需打开anaconda prompt,然后在命令行中输入conda list
或pip list
,即会出现已安装模块的列表。如果里面没有找到自己想要运行的模块,则可通过自行安装解决。
比如说要安装jieba模块,则可输入conda install jieba
或pip install jieba
,前者在anaconda的云中导入安装,后者在网上下载安装。
- 模块的导入
一旦安装完成,我们便可在Python中导入模块,格式为import 模块名 as 简称
或from 模块名 import 函数名
。例如import pandas as pd
(全部引用)、from pandas import DataFrame(局部引用)
结语
学习Python基础知识,或许会令人感到枯燥,但稳步打好基础,是为了日后编写策略代码的高效。基础扎实了,阅读高人的代码时,才能更易领悟他人的想法和思路。千里之行始于足下,我们接下来将接触Python的科学计算,敬请期待。
刺猬偷腥
2017年9月25日
to be continued.