函数根据有没有参数,有没有返回值,可以相互组合,一共有4种
* 无参数,无返回值
* 无参数,有返回值
* 有参数,无返回值
* 有参数,有返回值

<1>无参数,无返回值的函数此类函数,不能接收参数,也没有返回值,一般情况下,打印提示灯类似的功能,使用这类的函数 def printMenu(): print(’--------------------------’) print(’ xx涮涮锅 点菜系统’) print(’’) print(’ 1. 羊肉涮涮锅’) print(’ 2. 牛肉涮涮锅’) print(’ 3. 猪肉涮涮锅’) print(’--------------------------’)<2>无参数,有返回值的函数此类函数,不能接收参数,但是可以返回某个数据,一般情况下,像采集数据,用此类函数 # 获取温度 def getTemperature(): #这里是获取温度的一些处理过程 #为了简单起见,先模拟返回一个数据 return 24 temperature = getTemperature() print(‘当前的温度为:%d’%temperature)结果: 当前的温度为: 24<3>有参数,无返回值的函数此类函数,能接收参数,但不可以返回数据,一般情况下,对某些变量设置数据而不需结果时,用此类函数<4>有参数,有返回值的函数此类函数,不仅能接收参数,还可以返回某个数据,一般情况下,像数据处理并需要结果的应用,用此类函数 # 计算1~num的累积和 def calculateNum(num): result = 0 i = 1 while i<=num: result = result + i i+=1 return result result = calculateNum(100) print(‘1~100的累积和为:%d’%result)结果: 1~100的累积和为: 5050<5>小总结
* 函数根据有没有参数,有没有返回值可以相互组合
* 定义函数时,是根据实际的功能需求来设计的,所以不同开发人员编写的函数类型各不相同

函数的嵌套调用
一个函数里面又调用了另外一个函数,这就是所谓的函数嵌套调用
如果函数A中,调用了另外一个函数B,那么先把函数B中的任务都执行完毕之后才会回到上次 函数A执行的位置

变量起作用的代码范围称为变量的作用域,不同作用域内同名变量之间互不影响就像不同文件夹的同名文件间互不影响一样。一个变量在函数外部定义和在内部定义,其作用域是不同的,函数内部定义的变量一般称为局部变量在函数外部定义的变量一般称为去全局变量局部变量
* 局部变量,就是函数内部定义的变量
* 不同的函数,可以定义相同的名字的局部变量,但是各用个的互不影响
* 局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是他的作用

在函数内部定义的普通变量值在该函数内起作用,当函数运行结束后,在其内部定义的局部变量将被自动删除而不可访问。在函数内部定义的全局变量当函数结束后仍然存在并且可以访问全局变量
* 如果一个变量,既能在一个函数中使用,也能在其他函数中使用,这样的变量就是全局变量

定义全局变量a = 100def test1():print(a)def test2():print(a)# 调用函数test1()test2()注意修改全局变量既然全局变量,就是能够在所有的函数中进行使用,那么可否进行修改呢?1、在函数外边定义的变量叫做全局变量2、全局变量能够在所有的函数中进行访问3、如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错4、如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,强龙不压地头蛇>>> a = 1>>> def f():… a += 1… print (a)…>>> f()Traceback (most recent call last):File “”, line 1, in File “”, line 2, in fUnboundLocalError: local variable ‘a’ referenced before assignment>>>>>>>>> li = [1,]>>> def f2():… li.append(1)… print li…>>> f2()[1, 1]>>> li[1, 1]1、在函数中不使用global声明全局变量时不能修改全局变量的本质是不能修改全局变量的指向,即不能将全局变量指向新的数据。2、对于不可变类型的全局变量来说,因其指向的数据不能修改,所以不使用global时无法修改全局变量。3、对于可变类型的全局变量来说,因其指向的数据可以修改,所以不使用global时也可修改全局变量。