和动物做的网站,如何查看网站的空间商,智云鸟网站建设,云seo函数是一系列常被重复使用的语句被抽取成一个集合体#xff0c;每次调用这个函数就相当于调用了这些语句#xff0c;这样总体的代码函数会大幅降低。
例1#xff1a;打印列表各元素值 a list(python) i 0 while i len(a): print a[i] … 函数是一系列常被重复使用的语句被抽取成一个集合体每次调用这个函数就相当于调用了这些语句这样总体的代码函数会大幅降低。
例1打印列表各元素值 a list(python) i 0 while i len(a): print a[i] i i 1 b [1, 3, 4, 6] i 0 while i len(b): print b[i] i i 1 c range(1, 11) i 0 while i len(c): print c[i] i i 1 从上边的例子可以看出程序主要有3个列表a、b、c并打印了这三个列表里的数据但代码行数较多也不利于对程序的理解其实可以将 i 0 while i len(): print i i 1 抽象成函数printList实际使用printList函数时是针对每个不同的列表来使用的每次都打印不同的列表那么每次打印的内容可以作为printList函数的参数传给printList函数传入的不同内容即实现打印不同的内容因此函数既有要做的事情即函数体(语句块)还要有处理对象(参数)。
1 定义函数
自定义定义函数的语法格式 def 函数名(参数列表): 语句块 需要注意作为函数的语句前需要按Tab键进行缩进对齐没有按Tab缩进对齐的语句不属于该函数。
例2printList函数的实现 def printList(x): i 0 while i len(x): print x[i] i i 1 在定义好了函数之后原来的“例1”的程序可以改成如下的样子。 #coding:utf-8 # 定义函数printList、x为参数(形参) def printList(x): i 0 while i len(x): print x[i] i i 1 a list(python) # 函数printList的调用a为实参 printList(a) b [1, 3, 4, 6] printList(b) c range(1, 11) printList(c) 这样的程序及结构是不是清晰一些了呢
2 全局和局部变量
函数体里的变量是局部的可以在函数内部使用而函数体外部的变量是全局的可以在函数体内部访问(读)但如果想在函数内部修改全局变量得先用global声明一下要修改的全局变量。 x 12 def m(): global x x 13 print x m() print x 如果函数里没有对某变量global进行声明就修改全局变量的值程序会视为函数有和全局变量同名的局部变量那么同名的全局变量对本函数不可见。 x 12 def m(): #global x x 13 print x m() print x 3 递归
递归函数定义里使用了函数本身。一般会使用if_else结构控制递归的进入和退出。
例3求n(n的阶乘)
用递归很容易求解n的数学过程如下所示需要注意的是0!和1都为1。 s0 1 s1 1 * s0 s2 2 * s1 2 * 1 s3 3 * s2 3 * 2 * 1 .... sn n * s(n-1) n * (n - 1) * .... * 2 * 1 可以用while循环来实现。 def Factorial(x): i 1 s 1 while i x: s i * s i i 1 return s print Factorial(5) 也可以用递归来实现。 def Factorial(x): if x 0: # 终止、退出 return 1 else: return x * Factorial(x - 1) #递归进入 print Factorial(3) 例4利用递归实现正序打印列表 s python def printS(x, index): if index len(s): print x[index], printS(x, index 1) printS(s, 0)