跟老齐学Python之重回函数
函数的基本结构
Python中的函数基本结构:
def 函数名([参数列表]):
语句
几点说明:
•函数名的命名规则要符合python中的命名要求。一般用小写字母和单下划线、数字等组合
•def是函数的开始,这个简写来自英文单词define,显然,就是要定义一个什么东西
•函数名后面是圆括号,括号里面,可以有参数列表,也可以没有参数
•千万不要忘记了括号后面的冒号
•语句,相对于def缩进,按照python习惯,缩进四个空格
看简单例子,深入理解上面的要点:
>>> def name(): #定义一个无参数的函数,只是通过这个函数打印
... print "qiwsir" #缩进4个空格
...
>>> name() #调用函数,打印结果
qiwsir
>>> def add(x,y): #定义一个非常简单的函数
... return x+y #缩进4个空格
...
>>> add(2,3) #通过函数,计算2+3
5
注意上面的add(x,y)函数,在这个函数中,没有特别规定参数x,y的类型。其实,这句话本身就是错的,还记得在前面已经多次提到,在python中,变量无类型,只有对象才有类型,这句话应该说成:x,y并没有严格规定其所引用的对象类型。
为什么?列位不要忘记了,这里的所谓参数,跟前面说的变量,本质上是一回事。python中不需要提前声明变量,有的语言就需要声明。只有当用到该变量的时候,才建立变量与对象的对应关系,否则,关系不建立。而对象才有不同的类型。那么,在add(x,y)函数中,x,y在引用对象之前,是完全自由的,也就是它们可以引用任何对象,只要后面的运算许可,如果后面的运算不许可,则会报错。
>>> add("qiw","sir") #这里,x="qiw",y="sir",让函数计算x+y,也就是"qiw"+"sir"
'qiwsir'
>>> add("qiwsir",4)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in add
TypeError: cannot concatenate 'str' and 'int' objects #仔细阅读报错信息,就明白错误之处了
从实验结果中发现:x+y的意义完全取决于对象的类型。在python中,将这种依赖关系,称之为多态。这是python和其它的静态语言的重要区别。在python中,代码不关心特定的数据类型。
对于python中的多态问题,以后还会遇到,这里仅仅以此例子显示一番。请看官要留心注意的:python中为对象编写接口,而不是为数据类型。
此外,也可以将函数通过赋值语句,与某个变量建立引用关系:
>>> result = add(3,4)
>>> result
7
在这里,其实解释了函数的一个秘密。add(x,y)在被运行之前,计算机内是不存在的,直到代码运行到这里的时候,在计算机中,就建立起来了一个对象,这就如同前面所学习过的字符串、列表等类型的对象一样,运行add(x,y)之后,也建立了一个add(x,y)的对象,这个对象与变量result可以建立引用关系,并且add(x,y)将运算结果返回。于是,通过result就可以查看运算结果。
如果看官上面一段,感觉有点吃力或者晕乎,也不要紧,那就再读一边。是在搞不明白,就不要搞了。随着学习的深入,它会被明白的。
调用函数
扯了不少函数怎么编写,到底编写函数有什么用?在程序中怎么调用呢?
- 上一篇:跟老齐学Python之变量和参数
- 下一篇:跟老齐学Python之Python文档