Python基础测试与笔记(二)

简介:

1. 高阶函数

1
2
3
4
5
6
7
8
9
10
# 类似于递归函数,常见于Java,C#自定义接口中
def  cmd_ignore_case(s1,s2)
     u1  =  s1.upper()
     u2  =  s2.upper()
     if  u1 < u2:
         return  - 1
     if  u1 > u2:
         return  1
     return  0
sorted ([ 'about' , 'bobo' , 'Zone' , 'dangerous' ], cmd_ignore_case)

2. 面向对象---定义

1
2
3
4
5
6
7
8
9
10
11
# 面向对象
class  Student( object ):
     pass
# 实例绑定一个属性:
=  Student()
s.name  =  'King'
# 定义一个函数作为实例方法
from  types  import  MethodType
s.set_age  =  MethodType(set_age, s, Student)
# 所有实例全部绑定方法
Student.set_score  =  MethodType(set_score,  None , Student)

3. 对象的浅拷贝与深拷贝

1
2
3
4
5
6
7
# 谈论这个话题的就只有对象了 list , tuple , class , dict  etc
# 浅拷贝  只复制对象的值(或者说被引用)
1.  切片   list [:]
2.  工厂函数   list ()  dict ()
3.  copy模块的copy函数
# 深拷贝  复制值还要另开辟新的空间地址
1.  copy模块的deepcopy函数

4. 面向对象---属性

1
2
3
4
5
6
7
8
9
10
11
12
13
class  Student( object ):
     # 此处特殊的写法 @ 就是装饰器的用法
     # 此属性有 getter,setter 操作类的成员
     @property
     def  score( self ):
         return  self ._score
     @score .setter
     def  score( self , value):
         if  not  isinstance (value,  int ):
             raise  ValueError( 'score must be an integer!' )
         if  value <  0  or  value >  100 :
             raise  ValueError( 'score must between 0 ~ 100!' )
         self ._score  =  value

5. 面向对象---多重继承 Minix

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class  animal( object ):
     @property
     def  alive( self ):
         return  self ._alive
     @alive .setter
     def  alive( self , value):
         self ._alive  =  value
                                                                                    
class  bunkMinix( object ):
     def  bunk( self ):
         print ( 'bunk' )
# 这里的dog对象不但继承了animal还继承实现了bunkMinix
class  dog(animal, bunkMinix):
     @property
     def  name( self ):
         return  self ._name
     @name .setter
     def  name( self , value):
         self ._name  =  value
.
.
# mixin多重继承   主线一般是单继承
class  Dog(Mammal, bunkMinix, eatMixin):
     pass

6. 类的常用内置函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# 用tuple定义允许绑定的属性名称
__slots__  =  ( 'name' 'age' )
.
# 默认类的调用打印信息    dog()
__str__   类似于Java语言   toString()
.
# 调试信息给开发者看
__repr__   类似于C #语言   @debug
.
# 迭代如果有可iter元素
__iter__    类似与C #语言   IEnumerable接口概念
# 出现了__iter__就必须要出现 next() 方法
例:
class  Fib( object ):
     def  __init__( self ):
         self .a,  self .b  =  0 1  # 初始化两个计数器a,b
     def  __iter__( self ):
         return  self  # 实例本身就是迭代对象,故返回自己
     def  next ( self ):
         self .a,  self .b  =  self .b,  self .a  +  self .b  # 计算下一个值
         if  self .a >  100000 # 退出循环的条件
             raise  StopIteration();
         return  self .a  # 返回下一个值
.
# __getitem__     取iter单个元素     类似与C#语言  对象索引器
class  Fib( object ):
     def  __getitem__( self , n):
         a, b  =  1 1
         for  in  range (n):
             a, b  =  b, a  +  b
         return  a
.
__getattr__      动态返回对象中没有定义的属性
class  Student( object ):
     def  __init__( self ):
         self .name  =  'Michael'
     def  __getattr__( self , attr):
         if  attr = = 'score' :
             return  99
.
# 判断类是否能被调用
__call__       callable ()
例:
def  __call__( self ):
     print ( 'My name is %s.'  %  self .name)
=  Student( 'King' )
s()

7. 异常处理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#  try..catch..finnlly
try :
     print  'try...'
     =  10  /  0
     print  'result:' , r
except  ZeroDivisionError, e:
     print  'except:' , e
finally :
     print  'finally...'
print  'END'
.
# 自定义异常处理
class  FooError(StandardError):
     print ( '这是一个自定义错误!!' )
def  foo(s):
     =  int (s)
     if  n = = 0 :
         raise  FooError( 'invalid value: %s'  %  s)
     return  10  /  n

8. 调试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 开启命令行调试功能(在Python开启pdb是多么惬意的一件事情)
python  - m pdb err.py
l  [n,m | main ]   查看当前指定代码或者main函数
set  listsize  20  只显示 20 行源代码
.
b [n | main]   设置断点,如果不设置则指定 n 下一步
info breakpoints   查看所有断点
.
变量名  查看当前变量的值
q  退出调试功能
.
n  调试到下一步不进入内部函数
n m  调试器走几步
s  调试到内部函数中
c  直到下一个断点
.
# 调试器从代码开头运行到最后,万一代码多怎么办?
# 需要调试的地方加入,这样我们就可以在命令行中不需要输入 -m pdb了
import  pdb
pdb.set_trace()

关于调试更多详情请见: docs.python.org

9. 文件读写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# 文件读 默认是只读状态打开文件
=  open ( '/Users/King/hhvm.conf' )
print  f.read( 30 )
for  line  in  f.readlines():
     print (line.strip())  # 把末尾的'\n'删掉
f.close()
#
# with可以偷懒少掉 close() 这一步
with  open ( '/Users/King/hhvm.conf' 'r' ) as f:
     print  f.read()
#
# 二进制模式要加 b
=  open ( '/Users/King/test.jpg' 'rb' )
f.read()
#
# 要读取非ASCII编码的文本文件,就必须以二进制模式打开,再解码。
=  open ( '/Users/King/gbk.txt' 'rb' )
=  f.read().decode( 'gbk' )
print  u
#
# 文件编码的另一种解决方案
import  codecs
with codecs. open ( '/Users/King/gbk.txt' 'r' 'gbk' ) as f:
     f.read()  # u'\u6d4b\u8bd5'
#
# 文件写  模式替换为 w
# 对应方法为   wirte  writeLine  编码与读雷同也有两种方案

测试: 如果你能看懂下面的代码,证明初级部分的Python已经没有问题,接下来就是Python标准库的学习了

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import  time
import  threading
import  Queue
#
class  Controm(threading.Thread):
     def  __init__( self , queue):
         threading.Thread.__init__( self )
         self ._queue  =  queue
#
     def  run( self ):
         while  True :
             msg  =  self ._queue.get()
             if  isinstance (msg,  str and  msg  = =  'quit' :
                 break
             print  'client message %s'  %  msg
         print  'bye'
#
def  Proceser():
     queue  =  Queue.Queue()
     worker  =  Controm(queue)
     worker.start()
#
     start_time  =  time.time()
     while  time.time()  -  start_time <  5 :
         queue.put( 'msg %s'  %  time.time())
         time.sleep( 1 )
     queue.put( 'quit' )
#
     worker.join()
#
if  __name__  = =  '__main__' :
     Proceser()

wKioL1NCk6ngbFa9AAEfzKhAvoI876.jpg



Update: 后续会进行Python标准库的更新...


     本文转自My_King1 51CTO博客,原文链接:http://blog.51cto.com/apprentice/1391811,如需转载请自行联系原作者




相关文章
|
29天前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
183 1
|
3月前
|
编解码 数据安全/隐私保护 Python
抖音批量发布视频工具,自动上传视频作品笔记,python发布软件
这个抖音批量发布工具包含三个主要模块:主上传程序、配置文件和视频预处理工具。主程序
|
2月前
|
运维 Linux 开发者
Linux系统中使用Python的ping3库进行网络连通性测试
以上步骤展示了如何利用 Python 的 `ping3` 库来检测网络连通性,并且提供了基本错误处理方法以确保程序能够优雅地处理各种意外情形。通过简洁明快、易读易懂、实操性强等特点使得该方法非常适合开发者或系统管理员快速集成至自动化工具链之内进行日常运维任务之需求满足。
153 18
|
2月前
|
安全 测试技术 API
Python 单元测试详解
单元测试是Python开发中不可或缺的环节,能确保代码按预期运行、发现Bug、提升代码质量并支持安全重构。本文从基础概念讲起,逐步介绍Python单元测试的实践方法,涵盖unittest框架、pytest框架、断言使用、Mock技巧及测试覆盖率分析,助你全面掌握单元测试技能。
152 0
|
3月前
|
IDE 测试技术 API
python调试与测试
python调试与测试
|
3月前
|
人工智能 Java 测试技术
Java or Python?测试开发工程师如何选择合适的编程语言?
测试工程师如何选择编程语言?Java 还是 Python?多位资深专家分享建议:Python 入门简单、开发效率高,适合新手及自动化测试;Java 生态成熟,适合大型项目和平台开发。建议结合公司技术栈、个人基础及发展方向选择。长远来看,两者兼通更佳,同时关注 Go 等新兴语言。快速学习与实践才是关键。
|
3月前
|
API 数据安全/隐私保护 Python
小红书批量发布协议, 抖音自动批量发布软件脚本,笔记作品视频自动发布工具【python】
这个工具框架包含了小红书和抖音的批量发布功能,支持图片和视频处理、定时发布等功能
|
3月前
|
Web App开发 数据安全/隐私保护 Python
抖音快手小红书哔哩哔哩,批量发布作品笔记视频工具,自动发布作品上传笔记视频【python】
这个工具实现了四大平台的视频批量上传功能,包含完整的异常处理和日志记录。使用时需要配置
|
3月前
|
存储 JSON API
小红书批量发布笔记工具,小红书批量上传软件,python框架分享
这个框架包含了配置文件、工具函数、API封装和主程序四个模块。使用时需要先配置账号信息,
|
4月前
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
120 10

热门文章

最新文章

  • 1
    Python零基础爬取东方财富网股票行情数据指南
    217
  • 2
    解析Python爬虫中的Cookies和Session管理
    167
  • 3
    Python日志模块配置:从print到logging的优雅升级指南
    123
  • 4
    【可视化大屏】全流程讲解用python的pyecharts库实现拖拽可视化大屏的背后原理,简单粗暴!
    92
  • 5
    (Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
    106
  • 6
    (Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
    200
  • 7
    (numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
    75
  • 8
    (numpy)Python做数据处理必备框架!(一):认识numpy;从概念层面开始学习ndarray数组:形状、数组转置、数值范围、矩阵...
    203
  • 9
    (Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
    59
  • 10
    (Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
    96
  • 推荐镜像

    更多