• 4 总结


    1 函数

    参数类型:必选参数、可选参数、数组参数、字典参数

    1 #必选参数
    2 def add(n1, n2):
    3     return n1+n2
    4 
    5 #调用
    6 print add(1,2)
    7 
    8 #结果
    9 3
    1 #可选参数
    2 def add(n1=1, n2=21):
    3     return n1+n2
    4 
    5 #调用
    6 print add()
    7 
    8 #结果
    9 22
     1 #元组参数
     2 def add(*num):
     3     d = 0
     4     for i in num:
     5         d += i
     6     return d
     7 
     8 #调用
     9 print add(1,2,3,4,5,6,7,8,9,10)
    10 
    11 #结果
    12 55
     1 #字典参数
     2 def add(**num):
     3     d = 0
     4     for key in num:
     5         d += num[key]
     6     return d
     7 
     8 #调用
     9 print add(num1=1,num2=21,num3=2)
    10 
    11 #结果
    12 24

     健壮性

     1 #可选参数
     2 def add(n1=1, n2=21):
     3     if isinstance(n1, int) and isinstance(n2, int):
     4         return n1+n2
     5     else:
     6         return 'It is not int'
     7 
     8 #调用
     9 print add(1,44)
    10 print add('a', 44)
    11 
    12 #结果
    13 45
    14 It is not int

     参数顺序

    • def func(a, b=1, *args, **kwargs):

    函数编写规范:

    • 命名规范:见名知意(下划线命名法、驼峰命名法)
    • 功能完整
    • 异常处理(参数类型判断、运行时异常处理) -- 健壮
    • 函数功能、参数类型、返回类型
    • 测试:不同类型参数测试、返回值和类型测试、单元测试

     递归函数:

     1 #递归
     2 def func(i):
     3     if i<100:
     4         return i + func(i+1)
     5     return i
     6 
     7 #调用
     8 print func(0)
     9 
    10 #结果
    11 5050

     2 模块

    导入模块

    • 添加路径

        import sys

        sys.path.append('/tmp/test')

    •  导入模块

        import 模块名

        from 模块名 import 方法名 as 别名

        from 模块名 import *

    • 限制 import *

        __all__ = [方法名1,方法名2]  (表示只能使用文件中的方法1 和 方法2)

        __all__可以写在.py文件中,也可以写在__init__.py文件中

     测试模块

    • if __name__=='__main__':  (单独运行文件时才会执行,测试用例可以放在其中)

     常用模块

    • python模块库:https://pypi.python.org/pypi
    • python内置模块:https://docs.python.org/2.7/ - Library Reference 
    • 模块用法:help(模块名) 可以找到模块文档的地址
    • 常用模块:time、datetime、os、logging、pickle
    • 举例:

        import pickle 对象序列化,对象持久化保存,将对象存储在文本等里面
        pickle.dump(对象) 序列化
        pickle.loads(对象) 反序列化

     3 异常处理

     异常在解释器运行时抛出的Error

    • 异常格式
    try:
        会抛出异常的代码
        异常下方的代码是不会执行的
    
    except IOError, e:(打不开网页异常)
        捕捉到打不开网页的异常后,如何处理
    
    except:(语法异常)
        捕捉到语法异常后,如何处理
    
    else:
        没有捕捉到异常,如何处理
    
    finally:
        不管如何种会执行
    • 异常举例
     1 import urllib
     2 url = 'http://www..com'
     3 try:
     4     d = urllib.urlopen(url)
     5 except IOError, e:
     6     print u'出错了!'
     7 else:
     8     content = d.read()
     9 finally:
    10     print u'一直会执行的代码'
    • 什么时候进行异常捕捉?
    1. 在开发阶段可以不用异常捕捉,尽可能解决暴露出来的问题
    2. 上线之前,有选择性的添加异常代码
    • 怎么用?
    1. 捕获正确的异常,不要直接try except
    2. 异常的处理要合理,要有日志
    •  断言打印
    1. 了解python内置异常
    2. exc = sys.exc_info() 返回一个异常元组
    3. print exc 打印异常
    •  自定义异常
     1 #自定义异常
     2 class myException(Exception):
     3     def__init__(self, error, msg):
     4         self.args = (error, msg)
     5         self.error = error
     6         self.msg = msg
     7 
     8 try:
     9     raise myException(1, 'my exception')
    10 except Exception as e:
    11     print str(e)
    • 文件操作
     1 #自定义异常
     2 class myException(Exception):
     3     def__init__(self, error, msg):
     4         self.args = (error, msg)
     5         self.error = error
     6         self.msg = msg
     7 
     8 try:
     9     raise myException(1, 'my exception')
    10 except Exception as e:
    11     print str(e)
    • 使用with操作文件
     1 #文件操作常用方法
     2 f = open('a', 'r')
     3 d.read()
     4 d.close()
     5 
     6 #with语句
     7 with open('a', 'r') as f:
     8     e = f.read()
     9 #使用with不需要关闭文件
    10 
    12 #自定义
    13 class sth(object):
    14     def __enter__(self):
    15         print u'登录'
    16     def __exit():
    17         print u'退出'
    18 #有__enter__()和__exti__()方法的才可以使用with
    • 普通变成和with读取文件的基础
     1 #文件操作常用方法
     2 f = open('a', 'r')
     3 d.read()
     4 d.close()
     5 
     6 #with语句
     7 with open('a', 'r') as f:
     8     e = f.read()
     9 #使用with不需要关闭文件
    10 
    11 
    12 #自定义
    13 class sth(object):
    14     def __enter__(self):
    15         print u'登录'
    16     def __exit():
    17         print u'退出'
    18 #有__enter__()和__exti__()方法的才可以使用with
    19 
    20 #python内置异常
    22 exc = sys.exc_info()    返回一个元组
    23 print exc    打印异常
    •  打印异常
    1 #python内置异常
    2 exc = sys.exc_info()    #返回一个元组
    3 print exc    #打印异常

       

  • 相关阅读:
    不能创建会计分录
    java反射,代码优化
    mybatis$和#的区别
    开发中积累的单词800
    mybatis递归,一对多代码示例
    mysql树形结构递归查询
    redis实现分布式锁工具类 灰常好用
    js代码小优化
    spring源码分析 contextConfigLocation属性的位置
    data:image/png;base64这什么玩意
  • 原文地址:https://www.cnblogs.com/lizitest/p/7358361.html
Copyright © 2020-2023  润新知