一,自定义函数
Python有自带的函数,而自己定义新的函数也是可以的。
函数定义要指定这个新函数的名字,还需要一系列语句放到这个函数里面,当调用这个函数的时候,就会运行这些语句了。
>>> def print_new():
... print('I am ok')
... print('I am very fine')
... #交互模式必须要多敲一行空格,Python才知道赋值结束。
>>>
这里的def就是一个关键词,意思是这是在定义一个函数。
函数的名字就是print_new,函数的命名规则和变量命名规则基本差不多,都是字幕梳子或者下划线,但是不能用数字打头。另外也不能用关键词做函数名,还要注意尽量避免函数名和变量名发生重复。
函数名后面的括号是空的,意思是这个函数不需要参数。
语法:函数定义的第一行叫做头部,剩下的叫做函数体。函数头部的末尾必须有一个冒号,函数体必须是相对函数头部有缩进的,
距离行首相对于函数头要有四个空格的距离,留意上面的示例中print前面是有空格的。函数体可以有任意长度的语句。注意:缩进是Python最强制的要求,这个很重要。
在打印语句中,要打印的字符串需要用双引号或单引号括着。单引号和双引号效果一样,除非是字符串中已经出现了单引号,一般都用单引号。
定义函数会创建一个函数类的对象,有type函数。
>>> type(print_new)
<class 'function'>
调用新函数的语法和调用内置函数是一样的,直接打印函数名:
>>> print_new()
I am ok
I am very fine
一旦定义了一个函数,就可以在其它函数里面来调用这个函数,比如我们写个repeat_new的函数来测试一下。
>>> def repeat_new():
... print_new()
...
>>> repeat_new() #调用
I am ok
I am very fine
二,定义并使用
整合一下前面的小块代码:
>>> def print_new():
... print('I am ok')
... print('I am very fine')
...
>>> def repeat_new():
... print_new()
...
>>> repeat_new()
I am ok
I am very fine
这个代码块包含两个函数的定义:print_new以及repeat_new,函数定义的执行就和其他语句一样,但是效果是创建函数对象。
函数定义中的语句直到函数被调用的时候才会运行,函数的定义本身不会有任何输出。
三,运行流程
为了确保一个函数在首次被调用之前已经定义,我们必须要明白语句运行的顺序,也就是所谓"运行流程"。
一个Python程序都是从第一个语句开始运行的。从首至尾,每次运行一个语句。函数的定义并不会改变程序的运行流程,但要注意,函数体内部的语句只有在函数被调用的时候才会运行。
函数调用就像是运行流程有了绕道的行为,没有直接去执行下一个语句,运行流跳入到函数体内,运行里面的语句,然后再回来从离开的地方继续执行。
简要说,就是跳出跳入互相调用,完成整个程序的执行。
Python本身会实时追踪应该执行的位置,所以每次一个函数执行完毕了,程序都会回到当时跳出的位置,然后继续运行,等执行到了程序的末尾,就终止了。
有时候,我们要按照运行流程来读代码,才更好理解一些。
结束。