网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
python中如何注释多行
0035 如何设置网页背景图和在网页中插入图片 流量视频课程
上节课讲了关于表格的一些更多知识和用表格配合p来进行网页排版。
这节课开始讲关于网页图片的相关知识。
上节课的课后练习
1.去网上搜索2个自己喜欢的图片,1个图片用来作为整个网页的背景,另一个图片可以进行重叠组成网页的背景。
学哥找了2个大尺寸的图片和2个小尺寸图片,如下图目录所示:
在index.html所在的目录下创建一个images目录,将4个图片全部放进去。
2.给技术经验的表格增加一个表头,标题分别是:技术类别,技术点,经验年数。文字加粗显示。
在技术经验的表格的第一行增加一个tr,里面增加3个td,然后复制一个CSS样式td1,改名为tdh,增加设置文字粗体,背景色设置为淡灰色。
css代码修改如下:
html代码修改如下:
刷新页面:
可以看到,表头的文字加粗,并且背景色为半透明浅灰色。
设置tdh的background-color:rgba(200,200,200,0.6);,这是一个新的写法,通过CSS的函数rgba可以设置一个RGBA颜色,这种颜色值带有一个alpha通道,可以设置颜色的透明度,也就是可以透过当前颜色的比率是多少。
RGBA 颜色值是这样规定的:rgba(red, green, blue, alpha)。alpha 参数是介于 0.0(完全透明)与 1.0(完全不透明)的数字。
rgba(200,200,200,0.6);就是一个灰色的,透明度为0.6的一个半透明浅灰色。
因为整个body的背景色也是灰色的,因此这里就看不出来tdh的背景色是半透明的,可以来调整body的背景为一个图片,就能看出来是半透明的了。
设置背景图片
之前讲了通过设置body的background-color属性来设置整个网页的背景色。
背景色设置有时候局限性比较大,很多网站都采用图片来设置背景图片,可以做到让网页更美观。
设置背景图片的CSS属性是像这样的:
background-image: url(./images/background.jpg);
url是一个CSS函数,里面参数是图片的目录路径。
一般采用相对目录路径,也就是假设index.html存放在哪一个目录下,则在这个目录下创建一个images目录,将background.jpg文件放到images目录里面去。
修改css文件的body的样式,增加background-image,同时删除bigtitle的width属性,因为p默认就是宽度为100%,为了防止该属性对背景图片的干扰,所以删除掉不必要的属性。
css代码修改如下:
刷新页面:
可以看到技术经验的表格的背景色是半透明的,但是4个大标题的背景色不是半透明的,将它也改为半透明色。
修改CSS样式bigtitle的background-color属性值为半透明颜色值。
css代码修改如下:
刷新页面:
可以看到,大标题的背景色都是半透明的颜色了,这样看起来比较美观了。
但是发现一个问题,由于背景图片的宽度正好是自动适应浏览器的宽度的,因此相应的高度不一定能正好完全填满浏览器的高度,因此背景图片默认是自动向y轴方向进行重复显示的,显示的高度根据当前显示的内容的高度来自动截断。
因此可以看到有一个明显的界限,就是图片开始重复显示了。
有2种办法解决这个不好的显示,一种是做一个比较高的图片,另一种方法是做一个图片最下方的图形颜色和最上方的图形颜色非常接近或相同的图片,这样图片在重复显示的时候,就看不出明显的界限了。
设置可以重复的背景图片
前面从网络上找到了,可以重复显示的背景图片,下面修改背景图片看看效果如何。
css代码修改如下:
刷新页面:
img标签和属性
背景图片是一个有效改变网页显示效果的方法,而图片更是一个网站上最常用的元素,利用好图片,可以让网页看起来更简洁美观大气,简称“高大上”。
现在就来讲讲如何在网页中添加图片元素。
计划这样修改网页:在技术经验右侧增加一个“成果展示”的部分,先修改成类似“工作经历”和“工作经验(部分)”一样,用表格来进行排版,然后在“成果展示”里面增加2个图片,用来展示曾经做过的项目成果物。
首先,修改“技术经验”部分,修改为一个2行2列的表格,并添加“成果展示”的大标题部分。
利用前面的table,将table最后一行注释掉不用了,然后修改为增加新的tr行,参照前面的写法,再增加2行2列。
html代码修改如下:
刷新页面:
可以看到出现了新的版块“成果展示”。里面有2个成果说明。
增加2个图片
首先准备好2个图片,图片格式可以是jpg,png,gif等等,讲图片存放到images目录下。
然后修改html代码,使用img标签来添加图片,使用形式是这样的:
img标签是空标签,类似于之前的
标签。它只包含属性,并且没有闭合标签。
使用属性src来设置要显示的图像URL地址。
这里的URL地址可以是一个本地的路径和文件名,也可以是一个网络URL地址。
例子:
显示当前html文件同目录下的images目录下的coke12.png图片文件。
显示一个网站的图片网络地址。
来增加成果展示的图片,修改html代码如下:
刷新页面:
可以看到第1个图片显示的非常成功。这里要注意在img标签设置了属性width="100%",这里的宽度是指相对于img标签元素的父元素而言的,并不是指相对于整个浏览器的宽度。也就是前面说过的标签元素的属性继承关系要非常清楚。
大家可以把width="100%"这个属性去除,刷新页面看看,体验一下。
第2个图片使用了一个网络地址,大家如果将这个网络地址直接复制到浏览器的地址栏里面去访问的话,会发现这个图片文件是不存在的。所以这里的网页上会呈现一个小图标,表示图片资源文件不存在的意思是。
可以通过给img标签设置alt属性的方式来给图像定义一串预备的替换文本,当浏览器无法载入图像时,浏览器会显示这个文本而不是图像。给页面上的图像都加上替换文本是一个好习惯,这样有助于更好的显示信息。
给2个图片都加上alt属性,修改html代码如下:
刷新页面:
可以看到第2个图片显示了替换文本。
图片不存在,终归是要修改的,来把图片修改为一个存在的文件。
修改html代码如下:
刷新页面:
可以看到这个图片是一个gif图片,有动画效果的。
HTML注释和CSS注释
刚才有一行代码: 比较特殊,这是一个HTML注释标签。
注释标签的格式 ,当中的注释内容是可以多行的。
注释标签的开始标签有一个惊叹号,结束标签中没有。
浏览器不会显示注释内容,类似于python代码中用#注释一行不会被执行的代码。
注释标签的作用,一般都是用来记录或者说明代码的用途作用等等给程序员来阅读的。
也可以临时保存暂时用不到的代码,方便以后可能的使用。
将html代码中的这行删除,这里不需要保留了。
前面说明了HTML注释,同样的CSS也可以添加注释。
使用//两个斜杠符号对单行CSS代码进行注释。
使用/* 注释内容 */对单行或者多行CSS代码进行注释。以“斜杠+型号”开始,“星号+斜杠”结束,均为英文半角小写。
一般都使用/* */进行注释,这个包含了单行注释,比较方便。
注释掉的CSS样式将不会体现在浏览器网页样式显示。
下面来验证一下CSS注释。
学哥觉得这次选择的背景图片不是太美观,还是之前的淡灰色的背景色比较美观大气,因此打算修改CSS文件的body的background设置,但是又不确定以后如果找到了更合适的背景图片,可能还会修改为背景图片,因此,可以暂时把代码注释掉,说不定以后会用的着。
css代码修改如下:
刷新页面:
关于代码缩进
代码写到现在,虽然只有2个文件,但是内容已经不少了。html文件有64行,css文件有100行。
大家可能发现,学哥的html代码没有注意缩进,也就是标签元素的层次没有通过缩进来显示。
这是因为,学哥为了截图的时候尽量让代码文字大一些,为了让大家看代码的时候不容易看错,而特意设置了一行文本最多显示60个英文字符。如果在每行前面再增加缩进,那么一行文字能够实际显示的字符数就更少了,迫不得已,学哥只能放弃缩进,让每行文字都顶格写。虽然这样写代码看起来不太美观,但学哥因为编程经验丰富,出错的可能性是比较小的。
那么对于初学者来说,一定要按照规范每一行都要缩进,让代码的层次更清楚。
下面学哥将2种书写代码的方式都截图,大家对比一下看看。一定注意要按照规范的缩进格式来编写代码,从而减少错误。
不规范的html代码(字大能看的更清楚):
不规范的的css代码(字大能看的更清楚):
规整的html代码(字小看不太清楚):
规整的css代码(字小看不太清楚):
课后练习
准备做2个新的网页,设计好里面的文字内容和图片。
往期教程
因为教程是系列教程,前后关联性非常强,请大家按照历史消息发布时间先后次序进行阅读。
python用正则爬取豆瓣电影排行榜,连老司机都不知道的奥秘 互联网视频课程
使用了tkinter做了简单页面
首先分析要爬取的url, 发现每个页面有25条内容, 总共有十页, 第一页的URL为https://movie.douban/top250?start=0&filter=
第二页的url为https://movie.douban/top250?start=25&filter=
第三页第四页也是类似的URL, 只是修改了start后面的数字, 第一页是0, 往后每增加25, 所以url的格式为https://movie.douban/top250?start=+{ID}
然后分析如何爬取内容:
首先爬取标题:
查看源代码后, 发现标题是放在这样的代码:
肖申克的救赎 / The Shawshank Redemption / 月黑高飞(港) / 刺激1995(台)12345发现电影的名称一般都放在
电影名称1这样的标记对中, 所以根据这个可以写出正则表达式:
(.*?)1不过在后面的测试中发现这样写的话, 每个电影名称能获取两个信息
肖申克的救赎 / The Shawshank Redemption12显然第二条信息不是我们想要的, 经过对比发现第二条信息中都会有两个空格的代码, 所以把&给过滤掉就可以了:
(.[^&]*?)1接下来爬取评分, 评分一般放在这样的代码中:
716019人评价
123456这个正则就很好写了:"v:average">(.*?)1这样就ok啦, 这个程序还是非常简单的, 上源代码:
# -*- coding: utf-8 -*-from Tkinter import *from ScrolledText import ScrolledTextimport requests, re, threadingdef replite(ID): varl.set('正在获取第%d页内容' % (ID / 25 + 1)) html = 'https://movie.douban/top250?start=' + str(ID) response = requests.get(html).text # response = unicode(response, 'GBK').encode('UTF-8') response = response.encode('utf-8 ') # print response # reg = r'(.*?).*?"v:average">(.*?)' regTitle = r'(.[^&]*?)' regStars = r'.*?"v:average">(.*?)' regTitle = repile(regTitle) regStars = repile(regStars) titles = re.findall(regTitle, response) stars = re.findall(regStars, response) info = list(zip(titles, stars)) return infodef write(): varl.set('开始爬取内容') ID = 0 nums = 1 while ID < 250: res = replite(ID) ID += 25 for each in res: text.insert(END, 'No.%d\t%-30s%s分\n' % (nums, each[0], each[1])) nums += 1 varl.set('获取内容成功')def start(): t1 = threading.Thread(target=write) t1.start()def save(): content = text.get("0.0", "end").encode('GBK') textfile = open(u'E:\\豆瓣电影排行250.txt', 'w') textfile.write(content) textfile.close()root = Tk()root.title('豆瓣电影top250')root.geometry('820x500+400+200')text = ScrolledText(root, font=('楷体', 15), width=80, height=20)text.grid()frame = Frame(root)frame.grid()# 启动爬虫功能startButton = Button(frame, text='开始', font=('楷体', 18), command=start)startButton.grid()startButton.pack(side=LEFT)# 保存爬取信息saveButton = Button(frame, text='保存文件', font=('楷体', 18), command=save)saveButton.grid()saveButton.pack(side=LEFT)# 退出程序exitButton = Button(frame, text='退出', font=('楷体', 18), command=frame.quit)exitButton.grid()exitButton.pack(side=LEFT)varl = StringVar()info_label = Label(root, fg='red', textvariable=varl)info_label.grid()varl.set('准备中....')root.mainloop()
下面给大家分享python正则详解:
正则表达式是一个很强大的字符串处理工具,几乎任何关于字符串的操作都可以使用正则表达式来完成,作为一个爬虫工作者,每天和字符串打交道,正则表达式更是不可或缺的技能,正则表达式的在不同的语言中使用方式可能不一样,不过只要学会了任意一门语言的正则表达式用法,其他语言中大部分也只是换了个函数的名称而已,本质都是一样的。下面,我来介绍一下python中的正则表达式是怎么使用的。
首先,python中的正则表达式大致分为以下几部分:
元字符模式函数re 内置对象用法分组用法环视用法 所有关于正则表达式的操作都使用 python 标准库中的 re 模块。
一、元字符 (参见 python 模块 re 文档)
. 匹配任意字符(不包括换行符)^ 匹配开始位置,多行模式下匹配每一行的开始$ 匹配结束位置,多行模式下匹配每一行的结束* 匹配前一个元字符0到多次+ 匹配前一个元字符1到多次? 匹配前一个元字符0到1次{m,n} 匹配前一个元字符m到n次\\ 转义字符,跟在其后的字符将失去作为特殊元字符的含义,例如\\.只能匹配.,不能再匹配任意字符[] 字符集,一个字符的集合,可匹配其中任意一个字符| 逻辑表达式 或 ,比如 a|b 代表可匹配 a 或者 b(...) 分组,默认为捕获,即被分组的内容可以被单独取出,默认每个分组有个索引,从 1 开始,按照"("的顺序决定索引值(?iLmsux) 分组中可以设置模式,iLmsux之中的每个字符代表一个模式,用法参见 模式 I(?:...) 分组的不捕获模式,计算索引时会跳过这个分组(?P I IGNORECASE, 忽略大小写的匹配模式, 样例如下 s = 'hello World!'regex = repile("hello world!", re.I)print regex.match(s).group()#output> 'Hello World!'#在正则表达式中指定模式以及注释regex = repile("(?#注释)(?i)hello world!")print regex.match(s).group()#output> 'Hello World!' L LOCALE, 字符集本地化。这个功能是为了支持多语言版本的字符集使用环境的,比如在转义符\w,在英文环境下,它代表[a-zA-Z0-9_],即所以英文字符和数字。如果在一个法语环境下使用,缺省设置下,不能匹配"é" 或 "04"。加上这L选项和就可以匹配了。不过这个对于中文环境似乎没有什么用,它仍然不能匹配中文字符。M MULTILINE,多行模式, 改变 ^ 和 $ 的行为 s = '''first linesecond linethird line'''# ^regex_start = repile("^\w+")print regex_start.findall(s)# output> ['first']regex_start_m = repile("^\w+", re.M)print regex_start_m.findall(s)# output> ['first', 'second', 'third']#$regex_end = repile("\w+$")print regex_end.findall(s)# output> ['line']regex_end_m = repile("\w+$", re.M)print regex_end_m.findall(s)# output> ['line', 'line', 'line'] S DOTALL,此模式下 '.' 的匹配不受限制,可匹配任何字符,包括换行符 s = '''first linesecond linethird line'''#regex = repile(".+")print regex.findall(s)# output> ['first line', 'second line', 'third line']# re.Sregex_dotall = repile(".+", re.S)print regex_dotall.findall(s)# output> ['first line\nsecond line\nthird line'] X VERBOSE,冗余模式, 此模式忽略正则表达式中的空白和#号的注释,例如写一个匹配邮箱的正则表达式email_regex = repile("[\w+\.]+@[a-zA-Z\d]+\.(com|cn)")email_regex = repile("""[\w+\.]+ # 匹配@符前的部分 @ # @符 [a-zA-Z\d]+ # 邮箱类别 \.(com|cn) # 邮箱后缀 """, re.X)U UNICODE,使用 \w, \W, \b, \B 这些元字符时将按照 UNICODE 定义的属性.正则表达式的模式是可以同时使用多个的,在 python 里面使用按位或运算符 | 同时添加多个模式 如 repile('', re.I|re.M|re.S) 每个模式在 re 模块中其实就是不同的数字 print re.I# output> 2print re.L# output> 4print re.M# output> 8print re.S# output> 16print re.X# output> 64print re.U# output> 32四、re 内置对象用法 SRE_Pattern 这个对象是一个编译后的正则表达式,编译后不仅能够复用和提升效率,同时也能够获得一些其他的关于正则表达式的信息属性: flags 编译时指定的模式groupindex 以正则表达式中有别名的组的别名为键、以该组对应的编号为值的字典,没有别名的组不包含在内。groups 正则表达式中分组的数量 pattern 编译时用的正则表达式s = 'Hello, Mr.Gumby : 2016/10/26'p = repile('''(?: # 构造一个不捕获分组 用于使用 | (?P 好了,今天的知识就分享到这里,欢迎关注爱编程的南风,私信关键词:学习资料,获取更多学习资源,如果文章对你有有帮助,请收藏关注,在今后与你分享更多学习python的文章。同时欢迎在下面评论区留言如何学习python。
Python,针对指定文件类型,过滤空行和注释,统计行数 营销视频课程
写在前面:
参考网络上代码编辑而成,无技术含量,可自行定制:
目前亲测有效,若有待完善之处,还望指出!
强调:将此统计py脚本放置项目的根目录下执行即可。
1、遍历文件,递归遍历文件夹中的所有
2、指定文件类型:项目的代码行数,故只考虑.py文件,当然也可在指定的文件类型列表whitelist中添加其他类型
3、过滤空行和注释,注意采用的读取文件模式为‘rb’
完整源码:
测试对象样本,test.py:
结果为:2
Python的编码注释 -*- coding:utf-8 -* 流量视频课程
如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。
[python] view plain copy
# -*- coding:utf-8 -*-
问题就来了,为什么要如此声明?
首先请参考python的PEP http://python.org/dev/peps/pep-0263/
概要如下
1.必须将编码注释放在第一行或者第二行
2.可选格式有
[python] view plain copy
# coding=
[python] view plain copy
#!/usr/bin/python # -*- coding:
[python] view plain copy
#!/usr/bin/python # vim: set fileencoding=
但是再往下看,发现其实只要注释里面有coding 和对应的编码就可以了,例如
[python] view plain copy
#!/usr/bin/python # vim: set fileencoding=
所以搞了半天对最标准的做法也有点糊涂了。
后来想了想,看了下VIM中对python的语法高亮文件,里面把如下的正则表达式确定为编码声明
[plain] view plain copy
\%^.*\?#.*coding[:=]\s*[0-9A-Za-z-_.]\+.*$
对于这个正则有些有点看不懂,但是大致如下必须有coding:[编码]或者coding=[编码]才行,这个应该可以视作为标准的声明方式吧。
但是为什么通常这种方式呢?
[python] view plain copy
# -*- coding:utf-8 -*-
答案在PEP-0263里面有所提及,那就是Emacs等编辑器使用这种方式进行编码声明。
话说PEP里面很多东西都是很值得参考的毕竟可以知道为什么程序这样设计。
自学python编程笔记之:python的注释 营销视频课程
python中有两种注释:
看以下程序示例(未使用注释):
看以下程序示例(使用注释):
一、注释的作用:
增加程序的可读性,让开发者或后续接手程序进行维护修改的程序员提供可读性。
好的程序代码通常有50%是注释!
只要是被注释的代码都不会被执行!
二、注释的分类:
2.1 单行注释:
以井号“#”符号开头,其右边的都是注释,#字符开头的都是单行注释,内容不能换行,如果注释内容换行了,那么要在新的一行的,行首加一个#
如:
#以下代码用来打打印一个信息
print("hello world")
#这里是单行注释
#这是另一单行注释
2.2 多行注释:
三个单引号或三个双引号之间的
'''
print("hello world")
print("hello world")
print("hello world")
print("hello world")
'''
"""
三个双引号之间的内容都是注释
print("hello world")
print("hello world")
print("hello world")
"""
三、相关错误提示
代码:
#coding=utf-8
#这是一行注释
print("hello world")
'''
三个单引号之间的内容都是注释
print("hello world")
print("hello world")
print("hello world")
'''
"""
三个双引号之间的内容都是注释
print("hello world")
print("hello world")
print("hello world")
"""
执行以上代码,会提示如下错误:
SyntaxError: (unicode error) 'utf-8' codec can't decode
这是因为文件存储的格式是ANSI,只需用notepad++打开代码文件,以UTF-8格式编码保存即可。
菜鸟学Python之二:关于注释的那些事 公司视频课程
菜鸟学Python之二:关于注释的那些事
大家好,我是@爱玩电脑,今天跟大家一起零基础入门学习Python的第二个知识点,关于注释的那些事,纯粹零基础入门,高手绕行。
镇楼图
普遍认为,在程序代码中写注释是很重要的。注释的作用我了解的大概有二个:一是对你写的代码进行说明,免得自己过一段时间后忘记写代码时候的思路了,或者别人接手你的代码,完全搞不清楚你写的什么玩意儿;二是临时把代码禁用掉,方便调试程序。当然,也有高手声称好的代码就是注释,坏的注释反而影响代码美观,反正是见仁见智,我们且不去争辩,先来看看Python中添加注释的方法吧。
一、单行注释
单行注释的符号是"#",在程序段中输入井号后,整行的句子都变成注释语句了。
我们在IDLE中输入如下代码试试:
图一 单行注释
按F5,程序运行结果是这样的:
图二 运行结果
如果我们在第二个print语句前加上井号,
图三 把语句给注释掉
可以看到第二句print语句全部变成红色了。具体效果你可以自己试试。
二、多行注释
"#"在Python中只能用于注释一行语句,如果要注释一大段语句,用"#"来一句句的注释就显得太麻烦了,在Python中可以使用三个引号来进行多行注释的操作,如下图:
图四 多行注释
英文输入法下面的三个双引号效果也是一样的。
好吧,《菜鸟学Python之 二:关于注释的那些事》就讲到这里。文章由@爱玩电脑原创,转载请注明出处。
python入门——注释的妙用 互联网视频课程
坚持每天更新,帮助入门python
小伙伴们,夜深了,给大家讲一讲python注释的吧。大家如果学习过c语言,就会知道程序的注释有什么用。这里多提一句吧,C语言的注释分两种,单行注释和多行注释。C语言的单行注释是最常用的是//,多行注释最常用的是/* */
好了,言归正传我们继续来学习python吧,python常用单行注释是#,常用多行注释是三对单引号''' '''
全理论太抽象,我们一起来看一看例子吧~~~
一、单行注释
单行注释
第一个print
print 'woaipython','hello,world'
打印出来
woaipython hello,world
我们加上注释符#后,
print 'woaipython'#,'hello,world'
打印出来
woaipython
我们可以发现,注释符#后的代码是不会执行的。
二、多行注释
首先,我们来写一个有多行的小程序。
rint 'woaipython'print 'ilovepython'print 'hello'print 'world'print 'python'
我们运行一下这个小程序
我么可以看见打印出了许多数据,接下来我们给第2~4行加上多行注释
print 'woaipython'''' print 'ilovepython'print 'hello'print 'world' '''print 'python'
运行一下
我们可以看见只有第一行和第五行显示了。我们注释掉的2~4行没运行。
总结一下,注释符除了望文生义作注释用、解释程序意思的作用外,还可以把你不想运行也不想删除的程序段给屏蔽起来。
注:刚刚使用的编辑器是gnome桌面自带的gedit编辑器,需要先建一个拓展名为.py文件(命令:touch python.py)。编写完后保存,再使用命令python python.py就可以打印结果了。
每天学一点,积少成多。
后期会循序渐进、由浅入深的讲解python知识,如果想学习python入门,欢迎订阅。
如果还有不明白的小伙伴,欢迎留言评论或私信告诉我。
Python中如何添加注释?Python注释形式 推广视频课程
注释是对一段代码的解释和说明,可提高程序代码的可读性,让人们能够更加轻松地了解代码,尤其在大型项目开发和团队项目中,注释是必不可少的!
任何编程语言都少不了注释,Python也不例外,以下是Python注释的具体用法:
1. 单行注释
Python编程语言的单行注释常以#开头,单行注释可以作为单独的一行放在被注释代码行之上,也可以放在语句或者表达式之后。
实例:
# -*- coding: UTF-8 -*-
print ("hello world!"); #您好,世界
2. 多行注释
Python中多行注释使用三个单引号(’’’)或者三个双引号(”””)来标记,而实际上这是多行字符串的书写方式,并不是Python本身提倡的多行注释方法。
实例:
'''
这是多行注释,使用单引号。
这是多行注释,使用单引号。
'''
"""
这是多行注释,使用双引号。
这是多行注释,使用双引号。
"""
3. 编码注释
在进行Python开发时,需进行编码声明,如采用UTF-8编码,需在源码上方进行 # -*- coding: UTF-8 -*- 声明,从Python3开始,Python默认使用UTF-8编码,所以Python3.x的源文件不需要特殊声明UTF-8编码。
4. 平台注释
如果需要使Python程序运行在Windows平台上,需在Python文件的上方加上 #!/usr/bin/python 注释说明。
Python注释除了可以起到说明文档的作用外,还可以进行代码的调试,将一部分代码注释掉,对剩余的代码进行排查,从而找出问题所在,进行代码的完善!