zoukankan      html  css  js  c++  java
  • 零基础学python-18.1 函数的设计

    这一章节我们来讨论一下函数的设计的一些习惯:

    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-目录





    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    书摘--可能与不可能的边界
    电影-茶室
    使用unittest,if __name__ == '__main__':里代码不执行的解决办法
    Pycharm中配置鼠标悬停快速提示方法参数
    Python 解决pip使用超时的问题
    Linux性能监控命令——sar详解
    Linux系统管理
    Linux top命令的用法详细详解
    CentOs7排查CPU高占用
    centos 7 查看磁盘io ,找出占用io读写很高的进程
  • 原文地址:https://www.cnblogs.com/raylee2007/p/4896730.html
Copyright © 2011-2022 走看看