注释是存在于计算机程序中被编译器和解释器忽略的行。在程序中包含注释使得代码对于人类更可读,那么python如何注释呢?一起来了解下吧:
python如何注释
[图片0]
注释语法
Python中的注释以哈希标记( # )和空格字符开头,并继续到行的结尾。 一般来说,注释看起来像这样:
# This is a comment
因为注释不执行,当你运行一个程序,你不会看到任何指示的评论。注释在源代码中供人阅读,而不是由计算机执行。 在“Hello,World!”程序中,注释可能如下所示:
# Print “Hello, World!” to console
print("Hello, World!")
在迭代列表的for循环中,注释可能如下所示:
# Define sharks variable as a list of strings
sharks = ['hammerhead', 'great white', 'dogfish', 'frilled', 'bullhead', 'requiem']
# For loop that iterates over sharks list and prints each string item
for shark in sharks:
print(shark)
注释应该与注释的代码相同。也就是说,没有缩进的函数定义将具有没有缩进的注释,并且每个缩进级别将具有与其注释的代码对齐的注释。 例如,下面是如何在Python 3教程中如何使一个简单的计算器程序的again()函数被注释,在代码的每个缩进级别后面的注释:
...
# Define again() function to ask user if they want to use the calculator again
def again():
# Take input from user
calc_again = input('''
Do you want to calculate again?
Please type Y for YES or N for NO.
''')
# If user types Y, run the calculate() function
if calc_again == 'Y':
calculate()
# If user types N, say good-bye to the user and end the program
elif calc_again == 'N':
print('See you later.')
# If user types another key, run the function again
else:
again()
注释用于帮助程序员,无论是原始程序员还是其他人在项目中使用或协作。如果注释不能与代码库一起正确维护和更新,最好不要包含注释,而不要编写与代码相矛盾或将与代码冲突的注释。 当评论代码时,你应该寻找回答代码背后的原因 ,而不是什么或如何 。除非代码特别棘手,看代码通常可以告诉代码正在做什么或如何做。
块注释
块注释可以用来解释更复杂的代码或代码,你不希望读者熟悉。这些较长形式的注释适用于随后的部分或全部代码,并且也缩进为与代码相同的级别。 在块注释中,每行以哈希标记和单个空格开头。如果您需要使用多个段落,它们应该由包含单个散列标记的线分隔。 下面是一个块注释的例子,它定义了下面定义的main()函数中发生的事情:
# The main function will parse arguments via the parser variable. These
# arguments will be defined by the user on the console. This will pass
# the word argument the user wants to parse along with the filename the
# user wants to use, and also provide help text if the user does not
# correctly pass the arguments.
def main():
parser = ()
(
"word",
help="the word to be searched for in the text file."
)
(
"filename",
help="the path to the text file to be searched through"
)
...
块注释通常在操作不那么直接并因此需要彻底解释时使用。您应该尽量避免对代码进行过度注释,并且应该倾向于信任其他程序员来理解Python,除非您是为特定受众编写的。
内联注释
内联注释发生在语句的同一行,跟在代码本身后面。像其他注释一样,它们以哈希标记和单个空格字符开头。 一般来说,内联注释看起来像这样:
[code] # Inline comment about the code
应该谨慎使用内联注释,但可以有效地解释代码的棘手或非显而易见的部分。如果您认为您可能不记得以后编写的代码行,或者您与知道的人员可能不熟悉代码的所有方面进行协作,它们也可能很有用。 例如,如果你不在你的Python程序中使用大量的数学,你或你的协作者可能不知道以下内容创建了一个复数,所以你可能想包括一个在线注释:
z = + 3j # Create a complex number
内联注释也可以用来解释背后做什么的原因,或者一些额外的信息,如:
x = 8 # Initialize x with an arbitrary number
只有在必要时,并且当他们可以为阅读程序的人提供有用的指导时,才应使用一致的评论。
注释测试代码
[图片1]
除了使用注释作为文档代码的方式之外,哈希标记还可以用于注释掉在您正在创建的程序测试或调试期间不想执行的代码。也就是说,当您在实施新代码之后遇到错误时,您可能需要评论其中的一些,以查看您是否可以排查疑难问题。 使用哈希标记还可以让您在确定如何设置代码时尝试替代方法。例如,你可能决定在Python游戏中使用while循环或for循环,并且可以在测试和确定哪个可能是最好的时候注释掉一个或另一个:
import random
number = (1, 25)
# number_of_guesses = 0
for i in range(5):
# while number_of_guesses < 5:
print('Guess a number between 1 and 25:')
guess = input()
guess = int(guess)
# number_of_guesses = number_of_guesses + 1
if guess < number:
print('Your guess is too low')
if guess > number:
print('Your guess is too high')
if guess == number:
break
if guess == number:
print('You guessed the number!')
else:
print('You did not guess the number. The number was ' + str(number))
使用哈希标记注释代码可以允许您尝试不同的编程方法,以及通过系统地注释掉和运行程序的一部分来帮助您找到错误的来源。
在Python程序中使用注释有助于使程序对于人类更可读,包括未来的自我。包括相关和有用的适当的注释可以使其他人更容易与您在编程项目上合作,并使代码的价值更明显。 从这里,你可能想阅读关于Python的Docstrings在PEP 257 ,为您提供更多的资源,以正确地记录您的Python项目。
python开头如何注释
1. #!/usr/bin/env python 与 #!/usr/bin/python 的区别
这些注释并不仅仅是写给读者看的注释,它也写给操作系统看的,这些注释决定了系统将如何运行这些文件。
linux自带python解释器。在编写.py文件时,只要写上了#!/usr/bin/python这行注释,用户就可以直接在命令行用文件名来执行py文件,例如:
它的意义就类似于在window命令行中,你必须得写 python 或 javac 或 java 来运行文件,你要通过文件名前面的关键字才能去启动对应的解释器。而有了这行注释,Linux系统就知道了你要用什么来执行这个文件,你就可以直接用文件名去跑它了。
#!/usr/bin/python 注释的问题在于,Linux只系统默认的py解释器(也就是自带的那个)来运行文件。这样用户就无法使用自己的python版本了,不同的py版本之间语法有些差异,尤其是变动比较大的py2和py3,这些差异会使得整个程序无法正常运行。而#!/usr/bin/env python 的出现可则让用户可以自行选择python版本,用户可以在环境变量中配置自己的py解释器(ps:用户安装的版本默认定位在linux的local文件夹中)。#!/usr/bin/env python 这行注释,会使linux在解析文件时,知道要去使用环境变量中的py解释器而非系统自带的那个。
所以如果你要使用该注释,推荐使用#!/usr/bin/env python 的注释,而非 #!/usr/bin/python。
如果是在windows环境中执行文件的话,这行注释就无所谓了,因为你在cmd中,需要先定位到你py文件所在的文件夹后,再使用 python 这样的语句来执行文件。window系统也不会去看这行注释.
2.# -*- coding:utf-8 -*-
它的作用:在Linux下指定文件的编码方式,用于支持中文。
python2需要在首行写-*- coding:utf-8 -*-才能支持中文,python3开始默认支持中文了,就可以省去这行注释。
废话一段编码历史:
关于编码体系:
ASCII: 是最早的计算机编码方式,它不支持中文韩文日文等等
GB2312:由中国国家标准总局1980年发布,它是最早支持中文的编码方式,共收入汉字6763个和非汉字图形字符682个.(它普遍用于早年的手机,MP4,移动端等,所以那时候很多电脑上可以看的文字到了手机上会变成乱码)
GBK: 使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。GBK编码方案于1995年10月制定, 1995年12月正式发布GBK.
UTF-8:UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。UTF-8用1到6个字节编码Unicode字符。用在网页上可以统一页面显示中文简体繁体及其它语言(如英文,日文,韩文).utf-8是动态编码方式,英文占一个字节,中文占3-4个字节
3.所以如果是在windows的Python3下运行你的程序,你完全可以不去写前两行注释的,但是出于好习惯,也为了方便跨平台以及兼容,写一写还是好的。
python如何采用中文注释
如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。
[python] view plain copy
# -*- coding:utf-8 -*-
问题就来了,为什么要如此声明?
首先请参考Python的PEP /dev/peps/pep-0263/
概要如下
1.必须将编码注释放在第一行或者第二行
2.可选格式有
[python] view plain copy
# coding=<encoding name>
[python] view plain copy
#!/usr/bin/python
# -*- coding: <encoding name> -*-
[python] view plain copy
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
但是再往下看,发现其实只要注释里面有coding 和对应的编码就可以了,例如
[python] view plain copy
#!/usr/bin/python
# vim: set fileencoding=<encoding name> :
所以搞了半天对最标准的做法也有点糊涂了。
后来想了想,看了下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的注释符
1. 单行注释 #
1 #!/usr/bin/env python
2 #-*- coding:utf-8 -*-
3
4 #定义一个函数,用来输出Hello,Mary字符串。
5 def sayHello():
6 print('hello','Mary',sep=',',end='n',flush=True)
2. 多行注释 使用三个单引号 '''内容''' 也可以使用三个双引号 """内容"""
1 '''
2 输出 Hello,Maryt
3
4 '''
5 def sayHello():
6 print('Hello','Mary',sep=',',end='t',flush=True)