马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 景命 于 2017-7-9 10:13 编辑
知识点:
函数和过程:
函数(function):是有返回值的。
过程(procedure):是简单的、特殊并且没有返回值的。
很多编程语言会把函数和过程分开,但在Python中严格来说只有函数没有过程。
例:def hello(): #定义一个无返回值的函数
print("Hello World!")
>>> one = hello() #调用函数hello(),并且将返回值赋值给变量one
Hello World!
>>> print(one) #输出one
None #显示one为None(空)
>>> type(one) #查看one的类型
<class 'NoneType'> #显示one为NoneType
由此可以看出,就算再定义函数是不返回任何值,在调用函数后还是会返回None(空)对象的。
在Python中函数可以打包返回多个值:
(1)利用列表来返回多个值def back():
return [1,3.14,"布布"] #将要返回的值放入列表,实现返回多个值
>>> back()
[1, 3.14, '布布']
(2)利用元组来返回多个值def back():
return 1,3,14,"布布" #直接用逗号隔开的方式也可以实现返回多个值。
>>> back()
(1, 3, 14, '布布') #返回值类型默认为元组
函数变量的作用域问题(也叫做变量的可见性)
局部变量(local variable):
在函数内部定义的变量、参数他们都称之为局部变量,出了函数这些变量都是无效的。
全局变量(Global variable):
在整个代码段中都是可以被访问的,可以在函数的内部去访问他,但是不要试图在函数内部去修改他。如果试图在函数内去修改全局变量的话,Python会自动创建一个新的局部变量代替,名字和全局变量一样。
小甲鱼建议不到万不得已不要使用全局变量,简洁的概括为(小甲鱼原话):
1)代码可读性变差
2)代码安全性降低
以下关于全局变量的危言耸听是传来的,大家不妨也看下:
- a)它会造成不必要的常量频繁使用,特别当这个常量没有用宏定义“正名”时,代码阅读起来万分吃力。
- b)它会导致软件分层不合理:全局变量相当于一条快速通道,他容易使程序员模糊了“设备层”和“应用层”之间的边界,写出来的底层程序容易自作多情地关注起上层的应用,这在软件系统的构建初期的确效率很高,功能调试进度一日千里,但到了后期往往bug一堆,处处“补丁”,雷区密布,说是度日如年举 步维艰也不为过。
- c)由于软件的分层不合理,到了后期未尾,哪怕仅是增加修改删除小功能,往往要从上到下掘地三尺修改,涉及大多数模块,而原有的代码注释却忘了更改,这个时候,交给后来维护者的系统会越来越像一个“泥潭”,注释唯一的作用只是使泥潭上方在加一些迷烟瘴气。
- d)全局变量大量的使用,少不了有些变量流连忘返与中断于主回圈程序之间,这个时候如果处理不当,系统的bug就是随机出现的,无规律的,这时候初步显示出病入膏肓的特征来了,没有大牛来力挽狂澜,注定慢性死亡
- e)无需多言,如果你的系统中大量的使用全局变量,那么你已经成功得到一个畸形的系统,它处于一个神秘的稳定状态!你看着这台机器,机器也看着你,相对无言,心中发毛,你不确定他什么时候会崩溃,也不晓得下一次投诉什么时候到来。
|