Python连载系列之Python语法基础2:Python中的函数

来源:互联网 发布:apache 报错日志 编辑:程序博客网 时间:2024/06/10 15:55

这是Python系列连载之Python语法基础的第二讲,这个连载系列尽可能用通俗的语言来讲解Python的语法基础,希望读者阅读后能轻松掌握Python!

这一讲的主要内容:

#=====================================================================

1 Python的內建函数(Built in functions)

2 Python的模块函数(Module functions)

3 Python保存程序的方法

4 自己写一个函数

#=====================================================================

 1 Python的內建函数(Built in functions)

所谓内建函数就是可以直接用的函数,不用包含文件或者模块什么的

比如

abs(x)函数,它返回x的绝对值

pow(x,y)函数,相当于x**y(见第一讲)

有几个内建函数是经常会用到的,他们是len(), range(), sum(), map(), zip()

  • len()函数返回对象集合中元素的个数

          -如len([0, 1, 2]),其中[0, 1, 2]是一个整数数组,元素的个数为3,因此返回3

             如len("chao liu"),其中"chao liu"是一个字符串,是字符对象的集合,字符个数为8(空格也是一个字符),因此返回8

  • range(a, b)返回的是所有大于等于a,小于b的整数构成的数组

          -比如range(2, 3)返回数组[2], range(2, 4)返回数组[2, 3]

          -另外,range()也可以接收1个和3个参数

             1个参数代表返回0到这个参数(不包括该参数)之间的值,如range(3) = [0, 1, 2]

             3个参数中的第三个代表步长,即间隔, 如range(1, 8, 2) = [1, 3, 5, 7]

  • sum()函数就是把传入的集合中所有的元素都加起来

          -比如sum(1, 101)就是从1加到100,结果是5050

  • map函数是映射函数,它的第一个参数是映射法则,第二个参数是函数的自变量,返回值是应变量

         -比如map(abs, range(-10, 0)),返回值是[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]

  • zip函数是一个拉链函数,把左排拉链和右排拉链拉起来,变成“两两一对”的一排拉链

         -比如x = [ 1 , 2 , 3 ],  y = [ 4 , 5 , 6 ]则zip(x, y) = [(1, 4), (2, 5), (3, 6)]


 

2 Python的模块函数(Module functions)

有许多函数并不是Python自带的,而是在其他模块中。我们不能直接调用该函数,而是要用如下格式:

  • module.function

比如,要计算5.1的向下取整值,可以这样调用math.floor(5.1),返回值为5

在IDEL(见第一讲)中,只要输入模块名module再输入".",模块中包含的所有函数会自动显示出来,如下所示:

 

这方便我们查看模块中究竟有哪些函数,至于这些函数的用法和解释,可以查看python manuals(见第一讲)

 

这里有一个技巧,如果你觉得模块名+函数名的写法太长了,可以把他们用另一个名字代替,比如

 

round_down = math.floor
roud_down(5.1)

同样也返回5

 

3 Python保存程序的方法

目前我们写的程序全都没有保存过,要进行保存,首先要新建一个窗口(按Ctrl+N, 如下图),

 

把程序写在那里,然后保存(Ctrl+S),注意:保存时文件的扩展名必须是.py

在新建窗口中按F5运行模块,运行结果就在原先那个窗口中显示出来了

 

 

4 自己写一个函数

我们开始自己写一个函数,这个函数叫hamming_distance,用来求两个字符串的汉明距离,也就是两个字符串中不同字符的个数

用上面介绍的方法,我们新建一个窗口,然后在里面写一个自己的函数

  • Python中使用def关键字定义函数,函数包括函数名称参数不需要定义返回类型,Python能返回任何类型:

我们在新建的窗口中输入该函数:

def hanmming_distance(s1_s2):

      assert len(s1) == len(s2)

      return sum(ch1 != ch2 for ch1, ch2 in zip(ch1, ch2))

 

写完后保存,我们保存在Python的安装目录下的Lib/site-packages文件夹下,名字叫hamming_distance.py,这个文件就成为一个模块了,我们如何使用这个模块里的hamming_distance函数呢?

根据上面所说的调用模块函数的方法

我们在IDEL的Shell中,把这个模块(=文件名)导入进来

import hamming_distance

就是把刚才我们写的hamming_distance.py的所有代码都复制到当前的Shell中

我们用调用模块函数的方法调用该函数:

hanmming_distance.hanmming_distance("liuchao", "LiuChao")

返回值是2,即这两个字符串中有两个不同的字符("l"和"L"以及"c"和"C")

 

下面我们讲解一下函数式编程中的精华——lamda函数,它的作用是把表达式转变为函数

比如,下面两个函数实现的功能一样,一种是传统写法,一种是lamda函数写法:

lamda的写法: 把表达式a+b转换为了函数,这个函数是匿名的,可以把它赋给一个变量add2作为它的名字。

 

lamda函数经常和filtermap这两个内建函数配合使用

  • filter函数用于过滤数据集合

filter函数的第一个参数是过滤规则,通常是一个表达式转换成的函数,即用lambda函数来做,第二个参数是要过滤的集合

lambda x: x%3 == 1的意思是除3余1的所有数

 

  • map函数前面已经介绍了,是对一个集合中每个元素做一个映射

map函数的第一个参数是映射机制,和filter函数的第一个参数一样,通常是一个表达式转换成的函数,即用lambda函数来做,第二个参数是要映射的集合

 

 

本次连载的配套复习幻灯片:http://download.csdn.net/source/2819253

------------------------------------------------------------

如果对本次连载内容有任何疑问或者建议,欢迎大家留言

原创粉丝点击