Python代码缩进和测试模块示例详解


Posted in Python onMay 07, 2018

前言

Python代码缩进和测试模块是大家学习python必不可少的一部分,本文主要介绍了关于Python代码缩进和测试模块的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

一、Python代码缩进

Python 函数没有明显的 begin 和 end ,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号 ( : ),接着代码本身是缩进的。

例如:缩进 buil dCon necti onStr ing 函数

def buildConnectionString(params):
"""Build a connection string from a dictionary of parameters.
Returns string."""
return ";".join(["%s=%s" % (k, v) for k, v in params.items()])

代码块是通过它们的缩进来定义的。我所说的“代码块”是指:函数、 if 语句、for 循环、 while 循环,等等。开始缩进表示块的开始,取消缩进表示块的结束。不存在明显的括号,大括号或关键字。这就意味着空白是重要的,并且要一致。在这个例子中,函数代码 (包括 doc string ) 缩进了 4 个空格。不一定非要是 4 个,只要一致就可以了。没有缩进的第一行则被视为在函数体之外。

例如: “if 语句” 展示了一个 if 语句缩进的例子。

def fib(n): (1)
print 'n =', n (2)
if n > 1: (3)
return n * fib(n - 1)
else: (4)
print 'end of the line'
return 1

(1) 这是一个名为 fib 的函数,有一个参数 n 。在函数内的所有代码都是缩进的。

(2) 在 Python 中向屏幕输出内容非常容易,只要使用 print 即可。 print 语句可以接受任何数据类型,包括字符串、整数和其它类型,如字典和列表 。甚至可以混在一起输出,只需用逗号隔开。所有值都输出到同一行,用空格隔开 (逗号并不打印出来)。所以当用 5 来调用 fib时,将输出“n = 5”。

(3) if 语句是一种的代码块。如果 if 表达式计算为 true,紧跟着的缩进块会被执行,否则进入 else 块执行。

(4) 当然 if 和 else 块可以包含许多行,只要它们都同样缩进。这个 else 块中有两行代码。对于多行代码块没有其它特殊的语法,只要缩进就行了。在经过一些最初的抗议和几个与 Fortran 的嘲讽的类比之后,您会心平气和地
对待代码缩进,并且开始看到它的好处。一个主要的好处就是所有的 Python程序看上去都差不多,因为缩进是一种语言的要求而不是一种风格。这样就使得阅读和理解他人的 Python 代码容易得多。

Note: Python vs. Java: 语句和语句分割

Python 使用硬回车来分割语句,冒号和缩进来分割代码块。C++ 和 Java 使用分号来分割语句,花括号来分割代码块。

二、Python测试模块

所有的 Python 模块都是对象,并且有几个有用的属性。您可以使用这些属性方便地测试您所编写的模块。下面是一个使用 if name 的技巧。

if name == "__main__":

在继续学习新东西之前,有几个重要的观察结果。首先, if 表达式无需使用圆括号括起来。其次, if 语句以冒号结束,紧跟其后的是缩进代码。

Note: Python vs. C: 比较和赋值

与 C 一样,Python 使用 == 做比较,使用 = 做赋值。与 C 不一样,Python 不支持行内赋值,所以不会出现想要进行比较却意外地出现赋值的情况。

那么为什么说这个特殊的 if 语句是一个技巧呢?模块是对象,并且所有的模块都有一个内置属性 name 。一个模块的 name 的值取决于您如何应用模块。如果 import 模块,那么 name 的值通常为模块的文件名,不带路径或者文件扩展名。但是您也可以像一个标准的程序一样直接运行模块,在这种情况下 name 的值将是一个特别的缺省值, main 。

>>> import odbchelper
>>> odbchelper.__name__
'odbchelper'

只要了解到这一点,您就可以在模块内部为您的模块设计一个测试套件,在其中加入这个 if 语句。当您直接运行模块, name 的值是 main ,所以测试套件执行。当您导入模块, name 的值就是别的东西了,所以测试套件被忽略。这样使得在将新的模块集成到一个大程序之前开发和调试容易多了。

Tip: Mac OS 上的 if name __

在 MacPython 上,需要一个额外的步聚来使得 if name 技巧有效。点击窗口右上角的黑色三角,弹出模块的属性菜单,确认 Run as main 被选中。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python(Tornado)模拟登录小米抢手机
Nov 12 Python
python通过BF算法实现关键词匹配的方法
Mar 13 Python
Python全局变量用法实例分析
Jul 19 Python
python开发利器之ulipad的使用实践
Mar 16 Python
Python学习_几种存取xls/xlsx文件的方法总结
May 03 Python
对python中执行DOS命令的3种方法总结
May 12 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
May 24 Python
Python Flask前后端Ajax交互的方法示例
Jul 31 Python
python3 cvs将数据读取为字典的方法
Dec 22 Python
详解python3安装pillow后报错没有pillow模块以及没有PIL模块问题解决
Apr 17 Python
python实现FTP循环上传文件
Mar 20 Python
python 使用多线程创建一个Buffer缓存器的实现思路
Jul 02 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 #Python
利用python的socket发送http(s)请求方法示例
May 07 #Python
Python爬虫抓取代理IP并检验可用性的实例
May 07 #Python
Python视频爬虫实现下载头条视频功能示例
May 07 #Python
十分钟利用Python制作属于你自己的个性logo
May 07 #Python
Redis使用watch完成秒杀抢购功能的代码
May 07 #Python
Python文本统计功能之西游记用字统计操作示例
May 07 #Python
You might like
Laravel 批量更新多条数据的示例
2017/11/27 PHP
php中访问修饰符的知识点总结
2019/01/27 PHP
PHP sdk文档处理常用代码示例解析
2020/12/09 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
jquery的ajax()函数传值中文乱码解决方法介绍
2012/11/08 Javascript
jQuery Pagination Ajax分页插件(分页切换时无刷新与延迟)中文翻译版
2013/01/11 Javascript
JS仿百度搜索自动提示框匹配查询功能
2013/11/21 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
javascript鼠标滑动评分控件完整实例
2015/05/13 Javascript
js实现鼠标点击文本框自动选中内容的方法
2015/08/20 Javascript
JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解
2015/12/14 Javascript
基于JS实现的随机数字抽签实例
2016/12/08 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
为什么要使用Vuex的介绍
2019/01/19 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[00:29]2019完美世界全国高校联赛(秋季赛)总决赛海口落幕
2019/12/10 DOTA
如何解决django配置settings时遇到Could not import settings 'conf.local'
2014/11/18 Python
Python使用MYSQLDB实现从数据库中导出XML文件的方法
2015/05/11 Python
浅析AST抽象语法树及Python代码实现
2016/06/06 Python
Python多进程库multiprocessing中进程池Pool类的使用详解
2017/11/24 Python
python+selenium实现登录账户后自动点击的示例
2017/12/22 Python
python距离测量的方法
2018/03/06 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Python类中的魔法方法之 __slots__原理解析
2019/08/26 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
JetBrains PyCharm(Community版本)的下载、安装和初步使用图文教程详解
2020/03/19 Python
Python decorator拦截器代码实例解析
2020/04/04 Python
加拿大健康、婴儿和美容产品在线购物:Well.ca
2016/11/30 全球购物
strstr()的简单实现
2013/09/26 面试题
市级青年文明号申报材料
2014/05/26 职场文书
房地产营销活动策划方案
2014/09/15 职场文书
小学音乐课教学反思
2016/02/18 职场文书
大学生饮品店创业计划书范文
2019/07/10 职场文书