零基础学python-18.1 函数的设计
2015-10-21 00:00
417 查看
这一章节我们来讨论一下函数的设计的一些习惯:
1.耦合性:输入使用参数,输出使用return
推荐方式:
反面教程:
2.耦合性:如非必要,不使用全局变量,这是因为减少函数与参数间的依赖关系
反面教材:
上面的代码显示一种非常不好的编程习惯,使用全局变量作为通信的手段
推荐方式:
3.不要改变可变类型里面的对象,除非调用者想这么干
反面教材:
推荐方式:
上面的代码使用了a这个列表,但是由于函数里面已经复制了一遍,所以不会修改a,而输出只是修改之后的另一个对象
当然,如果本身a就想改变,反面教材里面的例子倒是正确的
4.聚合:尽量使方法功能单一集中
反面例子:
推荐方式:
我们应该把方法分开了,这样如果以后需要单独的乘法,我们就可以重复使用muti或者plus方法
5.避免参与改变其他模块的变量
解决方案:可以使用一个中间模块来存储过程变量,或者直接使用数据库作为存储
总结:这一章节我们讨论了函数设计的一些习惯,希望大家能够养成,我们的目的就是函数跟外部的依赖越小越好,这样便于以后的复用
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
1.耦合性:输入使用参数,输出使用return
推荐方式:
>>> def test(x): print(x) return x+1 >>> a=1 >>> test(a) 1 2 >>>
反面教程:
>>> a=1 >>> def test(): global a a=a+2 >>> test() >>> a 3 >>>
2.耦合性:如非必要,不使用全局变量,这是因为减少函数与参数间的依赖关系
反面教材:
>>> a=1 >>> def test(): global a a=a+2 >>> test() >>> a 3 >>>
上面的代码显示一种非常不好的编程习惯,使用全局变量作为通信的手段
推荐方式:
>>> a=1 >>> def test(x): return x+2 >>> a=test(a) >>> a 3 >>>
3.不要改变可变类型里面的对象,除非调用者想这么干
反面教材:
>>> a=[1,2,3] >>> def test(x): x[2]=5 >>> test(a) >>> a [1, 2, 5] >>>
推荐方式:
>>> a=[1,2,3] >>> def test(x): tmp=x[:] tmp[2]=5 print(tmp) >>> test(a) [1, 2, 5] >>> a [1, 2, 3] >>>
上面的代码使用了a这个列表,但是由于函数里面已经复制了一遍,所以不会修改a,而输出只是修改之后的另一个对象
当然,如果本身a就想改变,反面教材里面的例子倒是正确的
4.聚合:尽量使方法功能单一集中
反面例子:
>>> def test(a,b): return (a+b),(a*b) >>> test(1,3) (4, 3) >>>上面的例子我们在一个方法里面做了乘法与加法
推荐方式:
>>> def plus(a,b): return a+b >>> def muti(a,b): return a*b >>> def test(a,b): return plus(a,b),muti(a,b) >>> test(4,3) (7, 12) >>>
我们应该把方法分开了,这样如果以后需要单独的乘法,我们就可以重复使用muti或者plus方法
>>> muti(4,3) 12 >>> plus(4,3) 7 >>>
5.避免参与改变其他模块的变量
解决方案:可以使用一个中间模块来存储过程变量,或者直接使用数据库作为存储
总结:这一章节我们讨论了函数设计的一些习惯,希望大家能够养成,我们的目的就是函数跟外部的依赖越小越好,这样便于以后的复用
这一章节就说到这里,谢谢大家
------------------------------------------------------------------
点击跳转零基础学python-目录
版权声明:本文为博主原创文章,未经博主允许不得转载。
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法