跟老齐学Python之永远强大的函数
函数,对于人类来讲,能够发展到这个数学思维层次,是一个飞跃。可以说,它的提出,直接加快了现代科技和社会的发展,不论是现代的任何科技门类,乃至于经济学、政治学、社会学等,都已经普遍使用函数。
下面一段来自维基百科(在本教程中,大量的定义来自维基百科,因为它真的很百科):函数词条
函数这个数学名词是莱布尼兹在1694年开始使用的,以描述曲线的一个相关量,如曲线的斜率或者曲线上的某一点。莱布尼兹所指的函数现在被称作可导函数,数学家之外的普通人一般接触到的函数即属此类。对于可导函数可以讨论它的极限和导数。此两者描述了函数输出值的变化同输入值变化的关系,是微积分学的基础。 中文的“函数”一词由清朝数学家李善兰译出。其《代数学》书中解释:“凡此變數中函(包含)彼變數者,則此為彼之函數”。
函数,从简单到复杂,各式各样。前面提供的维基百科中的函数词条,里面可以做一个概览。但不管什么样子的函数,都可以用下图概括:
有初中数学水平都能理解一个大概了。这里不赘述。
本讲重点说明用python怎么来做一个函数用一用。
深入理解函数
在中学数学中,可以用这样的方式定义函数:y=4x+3,这就是一个一次函数,当然,也可以写成:f(x)=4x+3。其中x是变量,它可以代表任何数。
当x=2时,代入到上面的函数表达式: f(2) = 4*2+3 = 11 所以:f(2) = 11
以上对函数的理解,是一般初中生都能打到的。但是,如果看官已经初中毕业了,或者是一个有追求的初中生,还不能局限在上面的理解,还要将函数的理解拓展。
变量不仅仅是数
变量x只能是任意数吗?其实,一个函数,就是一个对应关系。看官尝试着将上面表达式的x理解为馅饼,4x+3,就是4个馅饼在加上3(单位是什么,就不重要了),这个结果对应着另外一个东西,那个东西比如说是iphone。或者说可以理解为4个馅饼加3就对应一个iphone。这就是所谓映射关系。
所以,x,不仅仅是数,可以是你认为的任何东西。
变量本质——占位符
函数中为什么变量用x?这是一个有趣的问题,自己google一下,看能不能找到答案。
我也不清楚原因。不过,我清楚地知道,变量可以用x,也可以用别的符号,比如y,z,k,i,j...,甚至用alpha,beta,qiwei,qiwsir这样的字母组合也可以。
变量在本质上就是一个占位符。这是一针见血的理解。什么是占位符?就是先把那个位置用变量占上,表示这里有一个东西,至于这个位置放什么东西,以后再说,反正先用一个符号占着这个位置(占位符)。
其实在高级语言编程中,变量比我们在初中数学中学习的要复杂。但是,现在我们先不管那些,复杂东西放在以后再说了。现在,就按照初中数学来研究python中的变量
通常使小写字母来命名python中的变量,也可以在其中加上下划线什么的,表示区别。
比如:alpha,x,j,p_beta,这些都可以做为python的变量。
给变量赋值
打开IDLE,实验操作如下:
>>> a = 2 #注1 >>> a #注2 2 >>> b = 3 #注3 >>> c = 3 >>> b 3 >>> c 3 >>>
说明:
注1:a=2的含义是将一个变量a指向了2这个数,就好比叫做a是的钓鱼的人,通过鱼线,跟一条叫做2的鱼连接者,a通过鱼线就可以导到2
注2:相当于要a这个钓鱼的人,顺着鱼线导出那条鱼,看看连接的是哪一条,发现是叫做2的那条傻鱼
注3:b=3,理解同上。那么c=3呢?就是这条叫做3的鱼被两个人同时钓到了。
建立简单函数
>>> a = 2 >>> y=3*a+2 >>> y 8
这种方式建立的函数,跟在初中数学中学习的没有什么区别。当然,这种方式的函数,在编程实践中的用途不大,一般是在学习阶段理解函数来使用的。
别急躁,你在输入a=3,然后输入y,看看得到什么结果呢?
>>> a=2 >>> y=3*a+2 >>> y 8 >>> a=3 >>> y 8
是不是很奇怪?为什么后面已经让a等于3了,结果y还是8。
用前面的钓鱼理论就可以解释了。a和2相连,经过计算,y和8相连了。后面a的连接对象修改了,但是y的连接对象还没有变,所以,还是8。再计算一次,y的连接对象就变了:
>>> a=3 >>> y 8 >>> y=3*a+2 >>> y 11