Python代码缩进和测试模块示例详解
作者:尚学堂明辉 发布时间:2021-08-31 06:49:10
前言
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 被选中。
来源:https://segmentfault.com/a/1190000014731501
猜你喜欢
- FCKeditor的样式设置涉及到了两个文件,一个是你定义好的样式表文件.css,另一个是告诉fck样式表如何使用的xml文件,两个文件确一
- 1. 用户必须在几秒钟知道网站是做什么的。注意力是因特网上最有价值的货币。 如果访问者无法在几秒钟之内得知你的网站的方向,他很有可能转而访问
- 本文实例讲述了php mailer类调用远程SMTP服务器发送邮件实现方法。分享给大家供大家参考,具体如下:php mailer 是一款很好
- 概述一个状态管理工具Store:保存数据的地方,你可以把它看成一个容器,整个应用只能有一个 Store。State:包含所有数据,如果想得到
- 微博如火如荼,大家都选择用微博带来社会化流量,顺便推广产品和网站,几乎所有的网站都有分享到代码,但是还有一种更快捷的分享方式,javascr
- pytorch加载图片数据集有两种方法。1.ImageFolder 适合于分类数据集,并且每一个类别的图片在同一个文件夹, ImageFol
- 接着上一篇,统一思想,遵循标准。如何遵循标准,其实标准有很多,结构标准,表现标准,行为标准。选择标准规范,就优先选择W3C推荐的标准。结构标
- pprint的英文全称Data pretty printer,顾名思义就是让显示结果更漂亮。print()和pprint()都是python
- 1)添加下面一句话到模型中for p in self.parameters(): p.requires_grad = False比如加载了r
- 本文实例讲述了PHP实现更改hosts文件的方法。分享给大家供大家参考,具体如下:有这样一个需求,我有多个网址希望在不同的时候对应不同的 i
- 本文实例讲述了Python使用matplotlib绘制正弦和余弦曲线的方法。分享给大家供大家参考,具体如下:一 介绍关键词:绘图库官网:ht
- ASP是目前一种广为应用的用来快速构建动态WEB站点的编程语言,默认的内置开发语言是VBScript,由于ASP和微软Windows系列操作
- <?php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleto
- 疫情肆虐,憋在家实在无聊,索性写点东西,于是就有了这个极极极极极简的音乐播放器。这个极极极简的音乐播放器类似于“阅后即焚”的软件,播放器可以
- 我们知道,任何数据库系统都无法避免崩溃的状况,即使你使用了Clustered,双机热备……仍然无
- 一、Ajax简介Ajax被认为是(Asynchronous JavaScript and XML)的缩写,允许浏览器与服务器通信而无需刷新当
- 导航栏是一个很好的功能,是Bootstrap 网站的一个突出特点。导航栏是响应式元组件就,作为应用程序或网站的导航标题。导航栏在移动设备的视
- 为什么传输几千个表的数据时向导会失败?当前的向导体系结构会创建一个 DTS 软件包数据流以传输数据。但如果要处理几千个表,则会遇到可伸缩性限
- 在我们开始一个项目的设计的时候,脑子里肯定有无数的构想。是做视觉冲击强烈、夺人眼球的绚丽风格?还是复古的拼贴风?又或者目前最in的极简主义设
- 放到公用调用文件(如conn数据库链接文件),对所有GET或POST的数据进行过滤特殊字符串,以实现简单有效的SQL注入过滤Function