这次我们来谈谈python中的函数,首先说一点,这里的函数和数学中的函数完全没有任何关系。在数学中,函数可能代表这一个数学公式,哎呀! 想想就头疼,但在程序猿的世界,函数就是实现某个功能的一段代码,比起for循环、if判断来说好理解多了。
为啥在编程语言中要有函数这个东西,其实还是为了代码能够复用,加快你写代码的速度,降低你代码的复杂度。为了让你能更深刻的理解函数带来的好处,本文会全程贯穿上篇文章输出乘法口诀表的例子,也算是对上文的一次复习。
Round 1:输出一个乘法口诀表
for i in range(1,10):
for j in range(1, i+1):
print ("%d*%d=%d"%(j,i,i*j)),
print ""
简直完美
Round 2:输出两个乘法口诀表,简单 上面代码复制一遍就好了,我知道你肯定会怎么做。 所以我让你输出10000个乘法口诀表,难道你要复制上面这段代码10000遍吗? 其实在外层再加一个循环就好。
for x in range(1,10001):
for i in range(1,10):
for j in range(1, i+1):
print ("%d*%d=%d"%(j,i,i*j)),
print ""
不过这里依旧没有用的函数。
Round 3:我这次不要1-9乘法口诀表,我1-5,4-9,1-8,1-7,2-6,3-7,5-7……各要一个,哈哈,崩溃了吧!!
这次我们没法做循环,看似每次只能把最上面的代码复制一个,改巴改巴来输出x-y的乘法表,所以可能会导致代码非常长。 如果我们有一段代码专门来做这事,而且还有一个很简单的名字就好了,这就引出了函数。
def fun(s, e):
for i in range(s,e+1):
for j in range(s, i+1):
print ("%d*%d=%d"%(j,i,i*j)),
print ""
这样我们就有个了一个叫fun的东西,专门来做输出从s到e的乘法表。比如我要输出从2到9的乘法表,我现在可以直接这么写了。
fun(2,9)
原来的五行代码变成一行,而且还可以复用,我这里这个例子很简单,其实函数里的代码可以做更复杂的事。上文说了一个函数的例子,我们来说下函数的格式。
def 这个是必须要写的,后面fun是函数名字,这个可以随便起,只要不和已有函数名和变量名冲突就行。 函数名后的()的必须的,但里面内容可有可无,也不仅限2个,多个也可以。这里面的内容可以在函数里用到。 然后就是和if while一样的格式要求,末尾必须加冒号 下一行开始必须缩进4个空格,这是python的语法要求,必须遵守,负责代码执行会出错。 下面我写一个函数的例子,改函数功能是判断一个数是否是素数(同质数)。
def isprime(n): //isprime是函数名,n是需要判断的数
for i in range(2, n):
if n%i == 0: //这里如果被i整除了看到不是素数了,素数的定义就是因子只有1和它本身
return False
return True