• python安装、输入输出、注释、中文编码、编码规范等基础语法


    一、概述

    1、简介

    Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,Guido开始写Python语言的编译器。Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之间,功能全面,易学易用,可拓展的语言。

    现在,全世界差不多有600多种编程语言,但流行的编程语言也就那么20来种。如果你听说过TIOBE排行榜,你就能知道编程语言的大致流行程度。这是最近10年最常用的10种编程语言的变化图:

    总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。

    当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。

    Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。

    除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

    许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

    龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

    2、Python的缺点

    任何编程语言都有缺点,Python也不例外。优点说过了,那Python有哪些缺点呢?

    第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

    但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。

    第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

    3、Python的解释器种类

    想要学一门编程语言:安装Python解释器、学习python语法并编写代码、使用Python解释器去执行编写好的代码。

    Python在全球非常的火,很多公司都会想要来层热度。

    由于Python太火了,所有就有很多的公司都开发了Python解释器(用来翻译python代码成为计算机能够识别的命令)。

    • CPython【主流】,底层是由C语言开发出来的Python解释器。
    • Jython,是由Java语言开发出来的Python解释器,方便与让Python和Java代码做集成。
    • IronPython,是基于C#语言开发出来的Python解释器,方便与让Python和C#代码做集成。
    • RubyPython,...
    • PyPy,是对CPython的优化,他的执行效率提高了。引入编译器的功能,本质上将Python代码进行编译,再去执行编译后的代码。
    • ...

    注意:常说的Python解释器默认指的就是CPython解释器。

    4、CPython解释器的版本

    CPython的解释器主要有两大版本:

    • 2.x,目前最新的Python2.7.18。(2020后不再维护)

    • 3.x,目前最新的3.9.0版本(授课)

    二、安装

    目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,我们的教程将以最新的Python 3.8版本为基础。请确保你的电脑上安装的Python版本是最新的3.8.x

    1、下载地址

    https://www.python.org/downloads/

    2、在Mac上安装Python

    如果你正在使用Mac,系统是OS X>=10.9,那么系统自带的Python版本是2.7。要安装最新的Python 3.8,有两个方法:

    方法一:从Python官网下载Python 3.8的安装程序,下载后双击运行并安装;

    方法二:如果安装了Homebrew,直接通过命令brew install python3安装即可

    3、Windows版本

    首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.8对应的安装程序,然后运行下载的exe安装包

    特别要注意勾上Add Python 3.8 to PATH,然后点“Install Now”即可完成安装

    安装完终端输入python查看

    1. C:\Users\Admin>python
    2. Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>>

    三、第一个程序 

    在命令行模式下敲命令python,就看到类似如下的一堆文本输出,然后就进入到Python交互模式,它的提示符是>>>

    在Python交互模式下输入exit()并回车,就退出了Python交互模式,并回到命令行模式

    在交互模式的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果

    1. C:\Users\Admin>python
    2. Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>> 1+1
    5. 2
    6. >>>

    如果要让Python打印出指定的文字,可以用print()函数,然后把希望打印的文字用单引号或者双引号括起来,但不能混用单引号和双引号: 

    1. C:\Users\Admin>python
    2. Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32
    3. Type "help", "copyright", "credits" or "license" for more information.
    4. >>> 1+1
    5. 2
    6. >>> print('你好 python')
    7. 你好 python
    8. >>>

    在命令行模式下,可以执行python进入Python交互式环境,也可以执行python hello.py运行一个.py文件。

    执行一个.py文件只能在命令行模式执行

    记事本编写一个简单程序

    print("你好 hello")

    将其保存为py文件hello.py

    然后执行

    1. Microsoft Windows [版本 10.0.19044.1766]
    2. (c) Microsoft Corporation。保留所有权利。
    3. D:\>hello.py
    4. 你好 hello

    命令行参数 

    很多程序可以执行一些操作来查看一些基本信息,Python 可以使用 -h 参数查看各参数帮助信息:

    1. $ python -h
    2. usage: python [option] ... [-c cmd | -m mod | file | -] [arg] ...
    3. Options and arguments (and corresponding environment variables):
    4. -c cmd : program passed in as string (terminates option list)
    5. -d : debug output from parser (also PYTHONDEBUG=x)
    6. -E : ignore environment variables (such as PYTHONPATH)
    7. -h : print this help message and exit
    8. [ etc. ]

     我们在使用脚本形式执行 Python 时,可以接收命令行输入的参数,

    获取命令行参数使用 sys 的 sys.argv 来获取或者Python 提供了 getopt 模块来获取命令行参数。

    sys 的 sys.argv 来获取
    1. #!/usr/bin/python
    2. # -*- coding: UTF-8 -*-
    3. import sys
    4. print '参数个数为:', len(sys.argv), '个参数。'
    5. print '参数列表:', str(sys.argv)

    执行以上代码,输出结果为:

    1. $ python test.py arg1 arg2 arg3
    2. 参数个数为: 4 个参数。
    3. 参数列表: ['test.py', 'arg1', 'arg2', 'arg3']

    getopt 模块来获取

    getopt模块是专门处理命令行参数的模块,用于获取命令行选项和参数,也就是sys.argv。命令行选项使得程序的参数更加灵活。支持短选项模式 - 和长选项模式 --。

    该模块提供了两个方法及一个异常处理来解析命令行参数。

    getopt.getopt 方法

    getopt.getopt 方法用于解析命令行参数列表,语法格式如下:

    getopt.getopt(args, options[, long_options])

    方法参数说明:

    • args: 要解析的命令行参数列表。

    • options : 以字符串的格式定义,options 后的冒号 : 表示如果设置该选项,必须有附加的参数,否则就不附加参数。

    • long_options : 以列表的格式定义,long_options 后的等号 = 表示该选项必须有附加的参数,不带等号表示该选项不附加参数。

    • 该方法返回值由两个元素组成: 第一个是 (option, value) 元组的列表。 第二个是参数列表,包含那些没有 - 或 -- 的参数。

    另外一个方法是 getopt.gnu_getopt,这里不多做介绍

    在没有找到参数列表,或选项的需要的参数为空时会触发Exception getopt.GetoptError异常。

    异常的参数是一个字符串,表示错误的原因。属性 msg 和 opt 为相关选项的错误信息。

    实例

    1. #!/usr/bin/python
    2. # -*- coding: UTF-8 -*-
    3. import sys, getopt
    4. def main(argv):
    5.    inputfile = ''
    6.    outputfile = ''
    7.    try:
    8.       opts, args = getopt.getopt(argv,"hi:o:",["ifile=","ofile="])
    9.    except getopt.GetoptError:
    10.       print 'test.py -i -o '
    11.       sys.exit(2)
    12.    for opt, arg in opts:
    13.       if opt == '-h':
    14.          print 'test.py -i -o '
    15.          sys.exit()
    16.       elif opt in ("-i", "--ifile"):
    17.          inputfile = arg
    18.       elif opt in ("-o", "--ofile"):
    19.          outputfile = arg
    20.    print '输入的文件为:', inputfile
    21.    print '输出的文件为:', outputfile
    22. if __name__ == "__main__":
    23.    main(sys.argv[1:])

    执行以上代码,输出结果为:

    1. $ python test.py -h
    2. usage: test.py -i -o
    3. $ python test.py -i inputfile -o outputfile
    4. 输入的文件为: inputfile
    5. 输出的文件为: outputfile

    文本编辑器推荐微软出品的Visual Studio Code,它不是那个大块头的Visual Studio,它是一个精简版的迷你Visual Studio,并且,Visual Studio Code可以跨!平!台!Windows、Mac和Linux通用。

    请注意,不要用Word和Windows自带的记事本。Word保存的不是纯文本文件,而记事本会自作聪明地在文件开始的地方加上几个特殊字符(UTF-8 BOM),结果会导致程序运行出现莫名其妙的错误。

    关于Visual Studio和Visual Studio Code(VSCode)的区别

    Visual Studio和Visual Studio Code(VSCode)的区别及如何选择-前端开发自学笔记(7) - 知乎 (zhihu.com)

    四、输入输出

    输出

    print()在括号中加上字符串,就可以向屏幕上输出指定的文字。比如输出'hello, world',用代码实现如下:

    >>> print('hello, world')
    

    print()函数也可以接受多个字符串,用逗号“,”隔开,就可以连成一串输出:

    1. >>> print('The quick brown fox', 'jumps over', 'the lazy dog')
    2. The quick brown fox jumps over the lazy dog

    print()会依次打印每个字符串,遇到逗号“,”会输出一个空格,因此,输出的字符串是这样拼起来的:

    print()也可以打印整数,或者计算结果:

    1. >>> print(300)
    2. 300
    3. >>> print(100 + 200)
    4. 300

    因此,我们可以把计算100 + 200的结果打印得更漂亮一点:

    1. >>> print('100 + 200 =', 100 + 200)
    2. 100 + 200 = 300

    注意,对于100 + 200,Python解释器自动计算出结果300,但是,'100 + 200 ='是字符串而非数学公式,Python把它视为字符串,请自行解释上述打印结果。

    输入

    现在,你已经可以用print()输出你想要的结果了。但是,如果要让用户从电脑输入一些字符怎么办?Python提供了一个input(),可以让用户输入字符串,并存放到一个变量里。比如输入用户的名字:

    1. >>> name = input()
    2. Michael

    当你输入name = input()并按下回车后,Python交互式命令行就在等待你的输入了。这时,你可以输入任意字符,然后按回车后完成输入。

    输入完成后,不会有任何提示,Python交互式命令行又回到>>>状态了。那我们刚才输入的内容到哪去了?答案是存放到name变量里了。可以直接输入name查看变量内容:

    1. >>> name
    2. 'Michael'

    **什么是变量?**请回忆初中数学所学的代数基础知识:

    设正方形的边长为a,则正方形的面积为a x a。把边长a看做一个变量,我们就可以根据a的值计算正方形的面积,比如:

    若a=2,则面积为a x a = 2 x 2 = 4;

    若a=3.5,则面积为a x a = 3.5 x 3.5 = 12.25。

    在计算机程序中,变量不仅可以为整数或浮点数,还可以是字符串,因此,name作为一个变量就是一个字符串。

    要打印出name变量的内容,除了直接写name然后按回车外,还可以用print()函数:

    1. >>> print(name)
    2. Michael

    有了输入和输出,我们就可以把上次打印'hello, world'的程序改成有点意义的程序了:

    1. name = input()
    2. print('hello,', name)

    运行上面的程序,第一行代码会让用户输入任意字符作为自己的名字,然后存入name变量中;第二行代码会根据用户的名字向用户说hello,比如输入Michael

    1. C:\Workspace> python hello.py
    2. Michael
    3. hello, Michael

    但是程序运行的时候,没有任何提示信息告诉用户:“嘿,赶紧输入你的名字”,这样显得很不友好。幸好,input()可以让你显示一个字符串来提示用户,于是我们把代码改成:

    1. name = input('please enter your name: ')
    2. print('hello,', name)

    再次运行这个程序,你会发现,程序一运行,会首先打印出please enter your name:,这样,用户就可以根据提示,输入名字后,得到hello, xxx的输出:

    1. C:\Workspace> python hello.py
    2. please enter your name: Michael
    3. hello, Michael

    每次运行该程序,根据用户输入的不同,输出结果也会不同。

    五、注释

    作为程序员,写代码注释是非常基础且有用的技能,方便以后对代码进行维护和理解

    文件夹注释

    文件注释

    1. """
    2. 这个文件主要为项目提供工具和转换的功能,初次之外还有日志....
    3. 例如:
    4. 1.
    5. 2.
    6. 3.
    7. """

     代码注释

    1. name = "alex"
    2. # 在名称后面添加一个大烧饼
    3. data = name + "dsb"
    4. print(data)
    5. name = "alex"
    6. """
    7. 在名称后面添加一个大烧饼,内部的实现机制:
    8. 1. xxx
    9. 2. xxx
    10. 3. xx
    11. """
    12. data = name + "dsb"
    13. print(data)

    六、中文编码 

    如何使用的是Python 2.0+

    Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。

    解决方法为只要在文件开头加入 # -*- coding: UTF-8 -*- 或者 # coding=utf-8 就行了

    1. #!/usr/bin/python
    2. # -*- coding: UTF-8 -*-
    3. print( "你好,世界" )

    注意:Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。

    注意:如果你使用编辑器,同时需要设置 py 文件存储的格式为 UTF-8,否则会出现类似以下错误信息:

    SyntaxError: (unicode error) ‘utf-8’ codec can’t decode byte 0xc4 in position 0:
    invalid continuation byte

     Pycharm 设置步骤:

    七、Python 标识符

    在 Python 里,标识符由字母、数字、下划线组成。

    在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。

    Python 中的标识符是区分大小写的。

    以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。

    以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数。

    Python 可以同一行显示多条语句,方法是用分号 ; 分开,如:

    >>> print ('hello');print ('runoob');
    hello
    runoob

     八、Python 保留字符

    下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。

    所有 Python 的关键字只包含小写字母。

    andexecnot
    assertfinallyor
    breakforpass
    classfromprint
    continueglobalraise
    defifreturn
    delimporttry
    elifinwhile
    elseiswith
    exceptlambdayield

    九、编码规范

    在Python开发过程中会创建文件夹/文件/变量等,这些在命名有一些潜规则(编写代码时也要注意pep8规范)。

    • 文件夹,小写 & 小写下划线连接,例如:commandsdata_utils等。

    • 文件,小写 & 小写下划线连接,例如:page.pydb_convert.py等。

    • 变量

      • 全局变量,大写 & 大写下划线连接,例如:NAME = "武沛齐" 、BASE_NAME = 18
      • 局部变量,小写 & 小写下划线连接,例如:data = [11,22,33]user_parent_id = 9等。

    最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。

    Python使用缩进来组织代码块,请务必遵守约定俗成的习惯,坚持使用4个空格的缩进。

    在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格

     Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。

    缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。

    比如以下程序

    1. #!/usr/bin/python
    2. # -*- coding: UTF-8 -*-
    3. # 文件名:test.py
    4. if True:
    5.     print ("Answer")
    6.     print ("True")
    7. else:
    8.     print ("Answer")
    9.     # 没有严格缩进,在执行时会报错
    10.   print ("False")

     执行以上代码,会出现如下错误提醒:

      File "test.py", line 11
        print ("False")
                      ^
    IndentationError: unindent does not match any outer indentation level

    IndentationError: unindent does not match any outer indentation level错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。

    如果是 IndentationError: unexpected indent 错误, 则 python 编译器是在告诉你"Hi,老兄,你的文件里格式不对了,可能是 tab 和空格没对齐的问题",所以 python 对格式要求非常严格。

    因此,在 Python 的代码块中必须使用相同数目的行首缩进空格数。

    建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用

    十、多行语句

    Python语句中一般以新行作为语句的结束符。

    但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:

    total = item_one + \
            item_two + \
            item_three

    语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:

    days = ['Monday', 'Tuesday', 'Wednesday',
            'Thursday', 'Friday']

    十一、Python 引号

    Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须是相同类型的。

    其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。

    word = 'word'
    sentence = "这是一个句子。"
    paragraph = """这是一个段落。
    包含了多个语句"""

    十二、Python空行

    函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。

    空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。

    记住:空行也是程序代码的一部分。

    十三、同一行显示多条语句

    Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,以下是一个简单的实例:

    1. #!/usr/bin/python
    2. import sys; x = 'runoob'; sys.stdout.write(x + '\n')

    执行以上代码,输出结果为:

    1. $ python test.py
    2. runoob

  • 相关阅读:
    log4j2.xml 获取当前系统属性
    语音合成:概述【不等长序列关系建模的生成任务】
    opensbi firmware源码分析(1)
    【数学建模绘图系列教程】绘图模板总结
    工业自动化产品抗干扰笔记
    数据挖掘与机器学习:数据变换
    3.vue知识点v-slot(插槽)
    Java、对数列求和
    el-input只能输入数字且有小数点最多保留两位
    js前端条件语句优化
  • 原文地址:https://blog.csdn.net/qq_34491508/article/details/133920235