上QQ阅读APP看书,第一时间看更新
2.4 函数
Python支持用户自己定义函数,以实现丰富灵活的各种功能。
1.函数的定义与调用
Python用关键字def定义函数,语法如下:
def函数名(参数1,参数2...): 函数体 return返回1,返回2...
示例代码如下:
#//第2章/2.11.py def zhouchang(a,b): zc=2*(a+b) #计算矩形的周长 mj=a*b #计算矩形的面积 return zc,mj c,d=zhouchang(2,3) #调用函数 print('周长为',c) print('面积为',d) c,d=zhouchang(5,6) #调用函数 print('周长为',c) print('面积为',d)
运行结果如下:
周长为10 面积为6 周长为22 面积为30
由上可知,自定义函数可以传入多个参数,也可以返回多个结果,多个参数和多个返回值均用逗号分隔。
如果只定义函数而不调用函数,则函数不会被执行。
2.函数参数的传递
函数的参数在定义时可以指定默认值;若调用时没有给参数赋值,则函数采用默认值计算,示例代码如下:
#//第2章/2.12.py def zhouchang(a=2,b=10): zc=2*(a+b) #计算矩形的周长 mj=a*b #计算矩形的面积 return zc,mj c,d=zhouchang() #调用 print('周长为',c) c,d=zhouchang(3,4) #调用 print('周长为',c)
运行结果如下:
周长为24 周长为 14
如果不需要传递参数,参数则可以省略;如果不需要返回值,return则可以省略,此时返回值为None,示例代码如下:
def fjx(): print('*'*30) fjx()
运行结果如下:
******************************
3.变量的作用域
1)局部变量
局部变量是在函数内定义的变量,只能在函数内部访问,在函数的外部无法访问,示例代码如下:
#//第2章/2.13.py def zhouchang(a=2,b=10): zc=2*(a+b) print('内部a=',a) return zc f=zhouchang() print('外部a=',a)
运行结果如下:
内部a=2 Traceback(most recent call last): File"D:/arumenpython/15/ls.py",line 9,in<module> print('外部a=',a) NameError:name 'a'is not defined
函数的内部变量a被顺利地打印出来,当在函数外部访问a时,退出代码为1,程序报错而退出。
2)全局变量
全局变量是在函数之前定义的变量,无论在函数内部还是在函数外部,变量都可以访问,示例代码如下:
#//第2章/2.14.py a=2 b=10 def zhouchang(): print('内部a=',a) f=zhouchang() print('外部a=',a)
运行结果如下:
内部a=2 外部a=2
如果全局变量和局部变量相同,则在函数内部访问全局变量时需要用global声明,否则在函数内部访问的是局部变量,代码如下:
#//第2章/2.15.py a=2 def zhouchang(): #global a a=5 print('内部a=',a) f=zhouchang() print('外部a=',a)
运行结果如下:
内部a=5 外部a=2
由此可见,在函数内部访问变量时先在函数内部查找,当找不到时再去函数外部查找。如果把global a前面的注释去掉,声明a是外部的变量,语句a=5表示把外部变量a由2重新赋值为5,则运行结果如下:
内部a=5 外部a=5