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守护进程用法实例分析
Jun 04 Python
在Python的Django框架中显示对象子集的方法
Jul 21 Python
Python实现选择排序
Jun 04 Python
python实现八大排序算法(1)
Sep 14 Python
解决django 新增加用户信息出现错误的问题
Jul 28 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python+Django+MySQL实现基于Web版的增删改查的示例代码
May 13 Python
解决Django Haystack全文检索为空的问题
May 19 Python
Pycharm学生免费专业版安装教程的方法步骤
Sep 24 Python
python连接手机自动搜集蚂蚁森林能量的实现代码
Feb 24 Python
python可视化大屏库big_screen示例详解
Nov 23 Python
Python数组变形的几种实现方法
May 30 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
如何使用PHP中的字符串函数
2006/10/09 PHP
使用 eAccelerator加速PHP代码的目的
2007/03/16 PHP
解析PHP中如何将数组变量写入文件
2013/06/06 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
浅谈PHP中关于foreach使用引用变量的坑
2016/11/14 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
2018/04/20 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
IE下使用cloneNode注意事项分享
2012/11/22 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jQuery遍历json的方法分析
2016/04/16 Javascript
获取今天,昨天,本周,上周,本月,上月时间(实例分享)
2017/01/04 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
vue v-model表单控件绑定详解
2017/05/17 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
用vite搭建vue3应用的实现方法
2021/02/22 Vue.js
Cython 三分钟入门教程
2009/09/17 Python
Python 字符串定义
2009/09/25 Python
在Django的通用视图中处理Context的方法
2015/07/21 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
Python 通配符删除文件的实例
2018/04/24 Python
详解django2中关于时间处理策略
2019/03/06 Python
基于python实现高速视频传输程序
2019/05/05 Python
python实现根据给定坐标点生成多边形mask的例子
2020/02/18 Python
Python流程控制常用工具详解
2020/02/24 Python
Python程序慢的重要原因
2020/09/04 Python
CSS3弹性盒模型开发笔记(三)
2016/04/26 HTML / CSS
详解CSS3中使用gradient实现渐变效果的方法
2015/08/18 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
优秀导游先进事迹材料
2014/01/25 职场文书
平遥古城导游词
2015/02/03 职场文书
党性教育心得体会(共6篇)
2016/01/21 职场文书
门面租赁合同范文
2019/08/06 职场文书
Java GUI编程菜单组件实例详解
2022/04/07 Java/Android