美文网首页Python回忆录
基础篇: 1. Python入门小应用

基础篇: 1. Python入门小应用

作者: 后视镜 | 来源:发表于2019-10-14 11:15 被阅读0次

    从厂里离职快2个月了,一直想做个完整的Python回忆录,回顾一下这5年的Python生涯。我对Python印象,都是在于这个语言编写速度快上面,以前做过Java和C++的开发,在于开发速度上面,Python的确无与伦比(我从来不喜欢比较哪个语言好坏,用什么语言要看团队和个人的偏好),简洁的语法,丰富的第三方包模块,在开发上面提供非常大的助力。

    1. 开发环境

    讲具体内容前,先说明一下我的开发环境与开发习惯:

    • 使用的系统: Debian 9(MacOS的PD或者VMWARE WORKSTATAION 11)
    • 编辑器: Sublime text 3
    • Python版本: 2.7.13

    我喜欢在Linux环境下编写和调试程序,这和Windows上面使用IDE有什么区别呢?第一,调试的环境与外网服务器运行环境保持了一致,这样会避免很多系统兼容问题,现在大部分的服务器都是Linux的发行版本,主要以Debian系和RedHat系两种为主,我以前厂里使用Debian系,所以我也习惯使用Debian作为开发环境,当然新手可以用Ubuntu也一样,Ubuntu基于Debian上开发的。第二,在Linux环境下编写程序,思维会更习惯服务器上面的运行环境架构,就像学英语在非英语国家内也可以学,但真正要掌握英语和外国人去沟通,有条件当然是去到英语国家生活更好。由于现在大部分公司都要求Windows系统,所以使用这些系统可以用VMWare和
    PD来安装,Vmware我用的是11,Mac的PD(Paralle desktop)用的哪个版本都差不多,目前我是用14。

    选择Sublime text 3,而不用大名鼎鼎的Pycharm,第一点是因为Subl够简单,而Pycharm实在很笨重。第二点是Subl更专注于编写程序上面,更体现一个人的对这个语言的掌握吧,有Pycharm提示是比较方便,但Python语言本来就足够简单了,初学者可以考虑使用Subl来锻炼自己对Python的一个掌握。

    然后是Python版本,我厂里一直都是用Python2.7,没升级到Python3,所以整篇回忆录都是基于Python2.7的,可能要问Python3好还是2.7好,我觉得当然是新的好,但有历史原因,历史原因是什么?就是以前很多程序都是用Python2.7来写的,升级上去的话,很多系统甚至脚本都需要调整,在业务繁忙的部门里面,这浩大的改造工程就只能等到不得不才进行。

    最后这些软件的安装可以参考网上的文章,我就不展开来谈了。

    2. 第一个例子:JSON格式化输出

    先来一个入门例子,做个JSON格式化输出,输入的参数一个JSON文件的文件名,运行方式是在终端Terminal下执行命令python json_pretty.py json_file.json,而json_pretty.py是程序文件名,而json_file.json是要格式化的json文件名,注意的是,这个程序并不会修改json_file.json的内容,只是将它内容格式化输出到屏幕上。下面是执行的结果输出:

    {
        "name": "Tom", 
        "nums": [
            1, 
            2, 
            3, 
            4, 
            5, 
            6, 
            7
        ]
    }
    

    json_pretty.py的内容如下:

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    import sys
    import json
    
    def main():
        # 从命令行中获取文件名参数,argv[0]是程序文件名
        fname = sys.argv[1]
        # f是文件描述符
        f = open(fname, "r")
        # 读取文件所有内容
        content = f.read()
        # 关闭文件描述符
        f.close()
        # 加载json,转换为python基本数据类型dict
        content_dict = json.loads(content)
        # 格式化输出,indent=4等于表示缩进4个空格
        pretty_content = json.dumps(content_dict, indent=4)
        # 打印
        print(pretty_content)
    
    
    if __name__ == '__main__':
        main()
    
    
    • 第1、2行是python的文件头,尽量所有python文件以两行开头,至于解决什么问题,后面再详细说。
    • 第3、4行是导入依赖模块,导入了sys和json包,这样才可以使用到它们提供的方法。
    • main是一个方法,if那个一行是如果识别到作为单独主文件来执行才会执行的main()方法。意思是当我们运行python json_pretty.py json_file.json就会判断到if为true,然后执行main方法,作为主文件执行时,__name__值为__main__,这些都是高级内容,有个简单了解就好。

    json_file.json的内容如下,它的

    {"name":"Tom",  "nums":[1,2,3,4,5,6,7]}
    

    目录结构是:

    ├── json_file.json
    └── json_pretty.py
    

    手打代码是学习最好的方式,不去真实地运行一遍,永远都不会发现实际遇到的问题。这个程序其实python直接就有提供可以使用的工具,执行python -m json.tool json_file.json命令,和上面输出的结果是一样的。

    3. 第二个例子: Hello World的FlaskWeb应用

    Flask是Python大名鼎鼎的Web框架,非常轻量而且功能强大,我厂的HTTP接口都是使用Flask开发的。先用Flask做一个简单的JSON接口,输出{"name": "hello world"}。Flask需要安装包到Pyth
    on目录里面,可以查阅文档看看怎么安装。安装了之后,编写文件

    ## 编辑文件hello.py
    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def hello_world():
        return '{"name": "hellow world"}'
    
    
    if __name__ == '__main__':
        app.run(port=8080)
    ## 
    # 终端下执行
    python hello.py
    # 在另一个终端,请求地址,也可以去到浏览器访问虚拟机上面的8080端口
    curl "http://localhost:8080/"
    
    

    上面的命令解释如下:

    1. 前两句是创建文件夹flask_app
    2. 编辑文件hello.py,这是Flask的web程序启动入口文件。
    3. 文件内容是从Flask中的例子进行修改的,原来例子还要使用flask run命令进行启动,而修改后就可以随意更换端口运行了,比较接近真相。
    4. @app.route是接口地址的装饰符,表示"/"都路由到这个接口,Flask的路由非常强大而简单。

    4. 小结

    通过上面的两个入门例子,来展现一下Python的强大,用这么少的代码就可以写出一个可用的json工具和web例子,相对比其他静态语言是不可想象的。所以Python有句话:”人生苦短,我用Python“,用更少的时间完成更多的功能,这样我们的人生可以有更多时间陪伴家人,而不是每天都在无止境的加班中。

    后视镜 20191014

    相关文章

      网友评论

        本文标题:基础篇: 1. Python入门小应用

        本文链接:https://www.haomeiwen.com/subject/cgpqmctx.html