python开发_python开发工具 - CSDN
精华内容
参与话题
  • Python开发全教程

    千人学习 2019-10-30 15:16:19
    本课程是一套全面的Python教学课程如果你想理解Python应用的方方面面,那么本课程将是你的不二之选。讲解Python语言的基础知识,编程规范和语法特点。讲解Python的面向对象开发思路和面向对象的相关知识。讲解使用...
  • Python开发工具

    千次阅读 2019-07-16 19:13:47
    刚开始学习Python就开始遇到难题了,对于Python IDE都比较纠结,希望找到一些适合自己的、Python开发工具。本篇给大家分享几款Python开发工具,供正在纠结用哪种开发工具的小伙伴们参考~ 对于学习Python的小伙伴,...

    刚开始学习Python就开始遇到难题了,对于Python IDE都比较纠结,希望找到一些适合自己的、Python开发工具。本篇给大家分享几款Python开发工具,供正在纠结用哪种开发工具的小伙伴们参考~

    对于学习Python的小伙伴,小编首推的Pycharm。

    首先,PyCharm用于一般IDE具备的功能,比如, 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制

    另外,PyCharm还提供了一些很好的功能用于Django开发,同时支持Google App Engine,更酷的是,PyCharm支持IronPython。

    PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

    其次是sublime text啦,看看下图,是不是觉得很漂亮呢?它就是sublime text~~

    Sublime Text 支持多种编程语言的语法高亮、拥有优秀的代码自动完成功能,还拥有代码片段(Snippet)的功能,可以将常用的代码片段保存起来,在需要时随时调用。支持 VIM 模式,可以使用Vim模式下的多数命令。支持宏,简单地说就是把操作录制下来或者自己编写命令,然后播放刚才录制的操作或者命令。

    Sublime Text 还具有良好的扩展能力和完全开放的用户自定义配置与神奇实用的编辑状态恢复功能。支持强大的多行选择和多行编辑。强大的快捷命令"可以实时搜索到相应的命令、选项、snippet 和 syntex, 按下回车就可以直接执行,减少了查找的麻烦。即时的文件切换。随心所欲的跳转到任意文件的任意位置。多重选择功能允许在页面中同时存在多个光标。

    还有Jupyter, Jupyter Notebook(此前被称为 IPython notebook)是一个交互式笔记本,支持运行 40 多种编程语言。

    Jupyter Notebook 的本质是一个 Web 应用程序,便于创建和共享文学化程序文档,支持实时代码,数学方程,可视化和 markdown。 用途包括:数据清理和转换,数值模拟,统计建模,机器学习等等 。数据挖掘领域中最热门的比赛 Kaggle 里的资料都是Jupyter 格式 。

    最后就是最基本的nopad++,最开始的时候是实用这款作为开发工具进行基础练习。

    Notepad++是一套自由软件的纯文本编辑器。该软件以GPL发布,有完整的中文化接口及支持多国语言撰写的功能(采用万国码UTF-8技术)。它的功能比Windows中的记事本(Notepad)强大,除了可以用来制作一般的纯文字的帮助文档,也十分适合用作撰写电脑程序的编辑器。

    建议在学习Python基础的时候还是多使用Python自带的IDLE。IDLE是开发python程序的基本IDE(集成开发环境),具备基本的IDE的功能,是非商业Python开发的不错的选择。当安装好python以后,IDLE就自动安装好了,不需要另外去找。学习python过程中有不懂的可以加入我的python零基础系统学习交流秋秋qun:前面是784,中间758,后面是214,与你分享Python企业当下人才需求及怎么从零基础学习Python,和学习什么内容。相关学习视频资料、开发工具都有分享

    同时,使用Eclipse这个强大的框架时IDLE也可以非常方便的调试Python程序。基本功能:语法加亮;段落缩进;基本文本编辑;TABLE键控制;调试程序。

    如果小伙伴们有其他好用的Python IDE,欢迎在下边留言哈~~~

    展开全文
  • Python 开发过那些牛逼的 App

    万次阅读 2019-03-11 19:24:38
    如今 Python 越来越火,大有登顶编程语言榜首的趋势,很多人开始知道或者学习 Python,今天就介绍几款由 Python 开发的世界大牌 App,让你再次认识它。 下面一睹为快,看看有没有你不知道的。 ▌Instagram 这款...

    如今 Python 越来越火,大有登顶编程语言榜首的趋势,很多人开始知道或者学习 Python,今天就介绍几款由 Python 开发的世界大牌 App,让你再次认识它。

    下面一睹为快,看看有没有你不知道的。

    ▌Instagram

    这款 App 想必你应该很熟悉,不少人也玩过,前几年还可以随便上,现在不行了。

    简单介绍一下它,自 2010 年 10 月诞生之日起,就一直稳坐「在线图片及视频分享社交应用软件」的世界老大位置。

    它有多牛逼呢,用两组数据说明一下就知道了。

    更多Python视频、源码、资料加群683380553免费获取

    其一,根据 Alexa 世界 500 强网站流量排名,Instagram 位居 美国第 11 位,世界第 17 位,排它后面的是「微博」。

    世界 TOP 20 网站排名(点击放大)

    其二,日活跃用户达到 3 亿,月活用户达到 10 亿。

    这个数字你可能没概念,拿国内最近风光无限的「抖音」来对比一下就知道了,根据抖音 1 月公布的官方数据,抖音日活用户 达到 2.5 亿,月活用户有 5 亿

    还是比不过 Instagram,不过抖音后劲非常猛,海外版 Tik Tok 已登陆全球 150 个国家,微信都没走出国门,它走出去了。

    话说回来, Instagram 能这么牛逼,主要是因为它有一个更牛逼的爹:脸书「 Facebook 」。

    ▌Reddit

    Reddit 是美国最大的娱乐、社交及新闻网站,由两个维吉尼亚大学的学生在 2005 年创建,最初采用 Common Lisp 语言编写,后面改用 Python 。

    相比 Instagram,它在国内知名度要低一些,而实际上它比 Ins 要牛逼,是 美国排名第 5 的网站,排它前面的只有:Google、Youtube、Amazon 和 Facebook 这四大巨头。

    ▌Uber

    Uber 你应该熟悉,前两年和滴滴打得不可开交,目前拥有 1 亿用户,它使用便捷的 Python 来处理大数据。

    ▌Dropbox

    如果你经常使用网盘,那应该会比较熟悉 Dropbox ,它也是用 Python 开发的一款顶级 App。

    提到网盘,就不得不说国内的百度网盘,简单对比一下,在存储空间大小上,百度网盘还是很良心的,免费提提供 2T 存储空间,而 Dropbox 仅提供 2G 免费空间,差了 1000 倍。

    Dropbox 虽然在容量上输给了百度网盘,但在安全性、协同合作等方面,能甩百度网盘好几条街。

    ▌Pinterest

    如果你是一个设计师,那么 Pinterest 你一定不陌生,该网站和 App 也是由 Django 搭建的。

    作为一个图片分享网站,它最大的特点是可以方便地采集和收藏喜欢的图片。比如你喜欢 PPT ,就可以在上面采集 PPT 作品作为灵感储备,类似中国版的「花瓣网」。

    ▌Spotify

    Spotify 是一个起源于瑞典的音乐流服务公司,也是 当前全球最大的流音乐服务商,国内众多音乐 App 中,能接近它的也只有网易云音乐。

    ▌Disqus

    Disqus 是一家提供网站留言的公司,超过 75 万个网站使用了它的留言系统功能,它也使用了 Django 的部分功能。

    展开全文
  • [539]利用python开发app

    万次阅读 2019-12-14 19:27:31
    python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习、或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总而言之,劝君莫轻入。 准备工作 利用...

    image.png

    说在前面的话

    python语言虽然很万能,但用它来开发app还是显得有点不对路,因此用python开发的app应当是作为编码练习、或者自娱自乐所用,加上目前这方面的模块还不是特别成熟,bug比较多,总而言之,劝君莫轻入。

    准备工作

    利用python开发app需要用到python的一个模块–kivy,kivy是一个开源的,跨平台的Python开发框架,用于开发使用创新的应用程序。简而言之,这是一个python桌面程序开发框架(类似wxpython等模块),强大的是kivy支持linux、mac、windows、android、ios平台,这也是为什么开发app需要用到这个模块。

    虽然kivy是跨平台的,但是想要在不同的平台使用python代码,还需要将python代码打包成对应平台的可执行程序,好在kivy项目下有个打包工具项目–buildozer,这是官方推荐的打包工具,因为相对比较简单,自动化程度高,其他项目比如:python-for-android也能起到类似的作用,这里不展开介绍。

    搭建kivy开发环境

    需要在pc上安装kivy开发环境,这里演示下mac与linux下的安装过程。

    • install kivy for mac

    安装一些依赖包:

    brew install pkg-config sdl2 sdl2_image sdl2_ttf sdl2_mixer gstreamer
    

    安装cython以及kivy:

    pip install cython==0.25
    pip install kivy
    

    如果安装kivy报错,则使用下面的方式安装kivy:

    git clone https://github.com/kivy/kivy
    python setup.py install
    

    安装后测试:

    $python
    Python 2.7.10 (default, Jul 15 2017, 17:16:57)
    [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)] on darwin
    Type "help", "copyright", "credits" or "license" for more information.
    >>>
    >>> import kivy
    [INFO   ] [Logger      ] Record log in /Users/didi/.kivy/logs/kivy_18-05-08_4.txt
    [INFO   ] [Kivy        ] v1.10.1.dev0, git-5f6c66e, 20180507
    [INFO   ] [Python      ] v2.7.10 (default, Jul 15 2017, 17:16:57)
    [GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.31)]
    

    说明:导入kivy模块没有报错则说明安装成功。

    • install kivy for centos7

    先安装依赖:

    yum install \
    make \
    mercurial \
    automake \
    gcc \
    gcc-c++ \
    SDL_ttf-devel \
    SDL_mixer-devel \
    khrplatform-devel \
    mesa-libGLES \
    mesa-libGLES-devel \
    gstreamer-plugins-good \
    gstreamer \
    gstreamer-python \
    mtdev-devel \
    python-devel \
    python-pip \
    java-devel
    

    安装cython以及kivy:

    pip install Cython==0.20
    pip install kivy
    

    centos安装kivy参考:https://kivy.org/docs/installation/installation-linux.html#using-software-packages

    说明:其他安装kivy方式可移步:https://kivy.org/#download(需要翻墙)

    用kivy开发第一个python app

    安装完kivy就可以开发app程序了,这里演示下hello-world程序,关于kivy更复杂的用法不是本文重点,后面再成文介绍。

    1. 创建一个main.py文件,写入:
    #! -*- coding:utf-8 -*-
    from kivy.app import App
    class HelloApp(App):
    pass
    if __name__ == '__main__':
    HelloApp().run()
    

    2)创建一个hello.kv文件,写入:

    Label:
    text: 'Hello, World! I am nMask'
    

    简单说明:main.py是入口函数,定义了一个HelloApp类,该类继承kivy.app;hello.kv文件是kivy程序,相当于定义界面风格等,该文件命名规则为类名小写且去除app。

    运行第一个python app

    python main.py
    

    运行结果:
    image.png

    安装buildozer工具

    通过以上的编码,我创建了自己的第一个python app程序,该程序可以直接在mac、linux、windows平台下运行,那么如何让它在安卓或者苹果手机上运行呢?我们知道在安卓上运行,需要将其打包成apk安装程序,因此就需要用到前面提到过的buildozer工具,(buildozer工具可以打包kivy程序,支持android、ios等),buildozer的安装过程比较简单:

    pip install buildozer
    

    使用buildozer工具将kivy程序打包成apk

    在python项目目录下运行:

    buildozer init
    

    运行成功将会创建一个配置文件buildozer.spec,可以通过修改配置文件更改app的名称等,然后运行:

    buildozer android debug deploy run
    

    运行以上命令将会生成跨平台的安装包,可适用安卓、ios等,如果用于安卓,则是利用python-for-android项目。

    在第一次运行以上命令的时候,会自动在系统中下载安卓sdk等必要文件,如下图。(过程需要翻墙,而且有很多依赖需要下载)
    image.png
    说明:这里只演示打包成apk文件,iso平台的可自行研究,参考文档:https://github.com/kivy/buildozer

    python apk程序测试

    如果以上步骤都运行成功的话,应该会在项目目录下的bin目录下生成一个apk文件,类似如下:
    image.png

    然后将apk下载到安卓系统的手机上,安装即可,测试效果如下:
    image.png

    打开app:
    image.png

    buildozer使用说明

    Usage:
    buildozer [--profile <name>] [--verbose] [target] <command>...
    buildozer --version
    Available targets:
    android        Android target, based on python-for-android project
    ios            iOS target, based on kivy-ios project
    android_old    Android target, based on python-for-android project (old toolchain)
    Global commands (without target):
    distclean          Clean the whole Buildozer environment.
    help               Show the Buildozer help.
    init               Create a initial buildozer.spec in the current directory
    serve              Serve the bin directory via SimpleHTTPServer
    setdefault         Set the default command to run when no arguments are given
    version            Show the Buildozer version
    Target commands:
    clean      Clean the target environment
    update     Update the target dependencies
    debug      Build the application in debug mode
    release    Build the application in release mode
    deploy     Deploy the application on the device
    run        Run the application on the device
    serve      Serve the bin directory via SimpleHTTPServer
    Target "android_old" commands:
    adb                Run adb from the Android SDK. Args must come after --, or
    use --alias to make an alias
    logcat             Show the log from the device
    Target "ios" commands:
    list_identities    List the available identities to use for signing.
    xcode              Open the xcode project.
    Target "android" commands:
    adb                Run adb from the Android SDK. Args must come after --, or
    use --alias to make an alias
    logcat             Show the log from the device
    p4a                Run p4a commands. Args must come after --, or use --alias
    to make an alias
    

    buildozer打包过程中的坑点

    如果在打包过程中遇到报错,可以修改buildozer.spec配置文件中的log_level为2,然后重新运行,可以看具体的错误信息。

    报错:You might have missed to install 32bits libs

    这个错是我在centos7上运行时报的错,大意是系统缺少了某些32位的依赖文件。
    解决方案:

    yum -y install --skip-broken glibc.i686 arts.i686 audiofile.i686 bzip2-libs.i686 cairo.i686 cyrus-sasl-lib.i686 dbus-libs.i686 directfb.i686 esound-libs.i686 fltk.i686 freeglut.i686 gtk2.i686 hal-libs.i686 imlib.i686 lcms-libs.i686 lesstif.i686 libacl.i686 libao.i686 libattr.i686 libcap.i686 libdrm.i686 libexif.i686 libgnomecanvas.i686 libICE.i686 libieee1284.i686 libsigc++20.i686 libSM.i686 libtool-ltdl.i686 libusb.i686 libwmf.i686 libwmf-lite.i686 libX11.i686 libXau.i686 libXaw.i686 libXcomposite.i686 libXdamage.i686 libXdmcp.i686 libXext.i686 libXfixes.i686 libxkbfile.i686 libxml2.i686 libXmu.i686 libXp.i686 libXpm.i686 libXScrnSaver.i686 libxslt.i686 libXt.i686 libXtst.i686 libXv.i686 libXxf86vm.i686 lzo.i686 mesa-libGL.i686 mesa-libGLU.i686 nas-libs.i686 nss_ldap.i686 cdk.i686 openldap.i686 pam.i686 popt.i686 pulseaudio-libs.i686 sane-backends-libs-gphoto2.i686 sane-backends-libs.i686 SDL.i686 svgalib.i686 unixODBC.i686 zlib.i686 compat-expat1.i686 compat-libstdc++-33.i686 openal-soft.i686 alsa-oss-libs.i686 redhat-lsb.i686 alsa-plugins-pulseaudio.i686 alsa-plugins-oss.i686 alsa-lib.i686 nspluginwrapper.i686 libXv.i686 libXScrnSaver.i686 qt.i686 qt-x11.i686 pulseaudio-libs.i686 pulseaudio-libs-glib2.i686 alsa-plugins-pulseaudio.i686 python-matplotli
    

    参考:https://ask.fedoraproject.org/en/question/9556/how-do-i-install-32bit-libraries-on-a-64-bit-fedora/

    报错:Error compiling Cython file

    错误大意为cython文件出错,可能是cython模块没有安装,或者版本有问题。
    解决方案:

    pip install cython==0.25
    

    报错:IOError: [Errno 2] No such file or directory……

    这是在打包的最后一步,将apk文件copy到项目bin目录下时报的错,是buildozer的一个bug。
    解决方案:
    修改/usr/local/lib/python2.7/dist-packages/buildozer/tagets/android.py文件:
    (1)在文件开头导入:

    from distutils.version import LooseVersion
    

    (2) 将786行:XXX found how the apk name is really built from the title这一行以下的代码替换为:

    __sdk_dir = self.android_sdk_dir
    build_tools_versions = os.listdir(join(__sdk_dir, 'build-tools'))
    build_tools_versions = sorted(build_tools_versions, key=LooseVersion)
    build_tools_version = build_tools_versions[-1]
    gradle_files = ["build.gradle", "gradle", "gradlew"]
    is_gradle_build = any((exists(join(dist_dir, x)) for x in gradle_files)) and build_tools_version >= ’25.0'
    

    buildozer虚拟机

    kivy官方推出了一个buildozer虚拟机镜像,已经安装好了buildozer以及一些依赖文件,为buildozer打包测试提供平台。由于之前我在mac上利用buildozer打包一直报错,后来换成centos也依然没有成功,因此便下载了此虚拟机,测试效果如下:

    image

    虚拟机下载地址:http://txzone.net/files/torrents/kivy-buildozer-vm-2.0.zip

    说明:对于无法解决依赖问题的朋友,可以使用此虚拟机进行程序打包,开发环境还是推荐用自己的本机。

    kivy开发实例

    因为本文重点在于介绍如何利用kivy+buildozer开发一款python app,因此对于kivy的开发过程,以及app功能进行了最简化。想要学习如何开发更复杂的app,可参考:https://muxuezi.github.io/posts/kivy-perface.html#

    来源:https://zhuanlan.zhihu.com/p/36590576

    展开全文
  • Python中WEB开发(一)

    万次阅读 2018-06-26 16:15:08
    CS即客户端、服务器编程:客户端、服务端之间...BS编程,即Browser、Server开发:Browser浏览器,一种特殊的客户端,支持HTTP(s)协议,能够通过URL向服务端发起请求,等待服务端返回HTML等数据,并在浏览器内可视...

    CS即客户端、服务器编程:

    客户端、服务端之间需要使用Socket,约定协议、版本(往往使用的协议是TCP或者UDP),制定地址和端口,就可以通信了。

    客户端、服务端传输数据,数据可以有一定的格式,双方必须线约定好。

    BS编程,即Browser、Server开发:

    Browser浏览器,一种特殊的客户端,支持HTTP(s)协议,能够通过URL向服务端发起请求,等待服务端返回HTML等数据,并在浏览器内可视化展示的程序。

    Server,支持HTTP(s)协议,能够接受众多客户端发起的HTTP协议请求,经过处理,将HTML等数据返回给浏览器。

    本质上来说,BS是一种特殊的CS,即客户端必须是一种支持HTTP协议且能解析并渲染HTML的软件,服务端必须是能够接收客户端HTTP访问的服务软件。

    HTTP协议底层基于TCP协议实现。

    BS开发分为两端开发:

    (1) 客户端开发,或称前端开发。HTML,CSS,JavaScript等。

    (2)服务端开发,Python有WSGI、Flask、Tornado等。

    HTTP协议

    协议

    HTTP协议是无状态协议。

    同一个客户端的两次请求之间没有任何关系,从服务器端角度来说,它不知道这两个请求来自同一个客户端。

    cookie

    键值对信息。

    浏览器发起每一请求时,都会把cookie信息发给服务器端。

    是一种客户端、服务端传递数据的技术。

    服务端可以通过判断这些信息,来确定这次请求是否和之前的请求有关联。

    一般来说cookie信息实在服务器端生成,返回给客户端的。

    客户端可以自己设置cookie信息。

    URL组成

    URL可以说就是地址,uniform resource locator 统一资源定位符,每一个链接指向一个资源供客户端访问。

    schema://host[:port#]/path/.../[;url-params][?query-string][#anchor]

    例如,通过下面URL访问网页:

    http://www.magedu.com/pathon/index.html?id=5&name=python

    访问静态资源时,通过上面的这个URL访问的是网站的某路径下的Index.html文件,而这个文件对应磁盘上的真实的文件。就会从磁盘上读取这个文件,并把文件的内容发挥浏览器端。

    scheme模式、协议:

    http、ftp、https、file、mailto等等。mysql等都是类似这样写。

    host:port   :

    www.magedu.com:80,80端口是默认端口可以不写。域名会使用DNS解析,域名会解析成IP才能使用。实际上会对解析后返回的IP的TCP的80端口发起访问。

    /path/to/resource:

    path,指向资源的路径。

    ?key1=value1&key2=value2:

    query string , 查询字符串,问号分割,后面key=value形式,且使用&符号分割。

    HTTP消息 

    消息分为Request、Response。

    Request:浏览器向服务器发起的请求。

    Response:服务器对客户端请求的响应。

    请求和响应消息都是由请求行、Header消息报头、Body消息正文组成。

    请求

    请求消息行:请求方法Method 请求路径 协议版本 CRLF


    请求方法Method:

    GET    请求获取URL对应的资源

    POST    提交数据至服务器端

    HEAD    和GET类似,不过不返回消息正文

    常见传递信息的方式:

    (1)  GET方法使用Query String

    http://www.magedu.com/pathon/index.html?id=5&name=python

    通过查询字符串在URL中传递参数

    (2) POST方法提交数据


    (3) URL中本身就包含着信息

    http://www.magedu.com/python/student/001

    响应

    响应消息行:协议版本 状态码 消息描述 CRLF


    status code状态码:

    状态码在响应头第一行:

        1xx :提示信息,表示请求已被成功接收,继续处理

        2xx: 表示正常响应

                  200 正常返回了网页内容

        3xx:    重定向

                   301 页面永久性移走,永久重定向。返回新的URL,浏览器会根据返回的URL发起新的Request请求。

                   302 临时重定向

                   304 资源未修改,浏览器使用本地缓存

        4xx:    客户端请求错误

                   404  Not Found , 网页找不到,客户端请求的资源有错

                   400  请求语法错误

                   401  请求要求身份验证

        5xx:    服务器端错误

                   500  服务器内部错误

                   502  上游服务器错误,如nginx反向代理的时候

    无状态,有连接和短连接

    无状态:服务器无法知道两次请求之间的联系,即使是前后两次同一个浏览器也没法判断出是出于一个浏览器的请求。后面通过cookie和session来判断。

    有连接:是因为它基于TCP协议,是面向连接的,需要3次握手、4次断开。

    短连接:自HTTP 1.1之前,都是一个请求一个连接,而TCOP的连接创建销毁成本高,对服务器有很大的影响。所以,自HTTP 1.1之后,支持keep-alive,默认也是开启的,一个连接打开后,会保持一段时间(可设置),浏览器再访问该服务器就使用这个TCP连接,减轻了服务器压力,提高了效率。

    WSGI

    WSGI主要规定了服务器端和应用程序之间的接口。


    WSGI服务器--wsgiref(实验用)

    wsgiref是一个WSGI参考实现库。

    wsgiref.simple_server 模块实现一个简单的WSGI HTTP服务器。

    wsgiref.simple_server.make_server(host,port,app,server_class=WSGIServer,handler_class=WSGIRequestHandler) 启动一个WSGI服务器。

    wsgiref.simple_server.demo_app(environ,start_response) 一个函数,小巧完整的WSGI的应用程序的实现。


    WSGI 服务器作用

    (1) 监听HTTP服务端口(TCPServer,默认端口80)

    (2)接收浏览器端的HTTP请求并解析封装成environ环境数据

    (3)负责调用应用程序,将environ和start_response方法传入

    (4)将应用程序响应的正文封装成HTTP响应报文返回给浏览器端

    WSGI APP应用程序端

    1、应用程序应该是一个可调用对象,Python中应该是函数、类、实现了__call__方法的类的实例。

    2、这个可调用对象应该接收两个参数


    3、以上可调用对象的实现,都必须返回一个可迭代对象


    environ和start_response这两个参数名可以是任何合法名,但是一般默认都是这2个名字。

    environ

    environ是包含HTTP请求信息的dict对象


    start_response

    它是一个可调用对象。有三个参数,定义如下:

    start_response(status,response_headers,exc_info=None)

    status 是状态码,如 200  OK

    response_headers 是一个元素为二元组的列表,例如[('Content-Type','text/plain;charset=utf-8')]

    exc_info  在错误处理的时候使用

    start_response  应该在返回可迭代对象之前调用,因为它返回的是Rsponse Header。返回的可迭代对象是Response Body.

    服务器端

    服务器程序需要调用符合上述定义的可调用对象APP,传入environ 、start_response, APP处理后,返回响应头和可迭代对象的正文,由服务器封装返回浏览器端。


    simple_server 只是参考用,不能用于生产

    测试用命令


    -I  使用HEAD方法

    -X 指定方法,-d 传输数据

    到这里,就完成了一个简单的WEB程序开发。

    WEB服务器

    1、本质上就是一个TCP服务器,监听在特定端口上

    2、支持HTTP协议,能够将HTTP请求报文进行解析,能够把响应数据进行HTTP协议的报文封装并返回浏览器端。

    3、实现了WSGI协议,该协议约定了和应用程序之间的接口。

    APP应用程序

    1、遵从WSGI协议

    2、本身是一个可调用对象

    3、调用start_response,返回响应头部

    4、返回包含正文的可迭代对象

    展开全文
  • Ubuntu上开发python的十大IDE

    千次阅读 2020-02-24 11:21:40
    Python是最广泛使用的通用编程语言之一。您每天使用的许多流行网站或应用程序...有许多集成开发环境(IDE)可用于Python编辑和编程。我个人更喜欢Ubuntu终端上的Vim,但是有许多像PyCharm,GNU Emacs和PyZo这样的IDE...
  • 都说工欲善其事必先利其器,Python 的学习过程少不了 IDE 或者代码编辑器,或者集成的开发编辑器(IDE)。 这些 Python 开发工具帮助开发者加快使用 Python 开发的速度,提高效率。高效的代码编辑器或者 IDE 应该会...
  • Python3开发工具的使用

    万次阅读 2018-03-28 09:18:00
    一、安装Python31.Python的下载网址:https://www.python.org/2.选择download,然后选择版本Python33.拉到最下file处,选择window版本。4.下载完毕后双击安装。选择第一个选项install5。点击完成就安装好了6.设置...
  • python基础教程 python基础系列教程——Python的安装与测试:python解释器、PyDev编辑器、pycharm编译器 python基础系列教程——Python库的安装与卸载 python基础系列教程——Python3.x标准模块库目录 ...
  • 基于Python的Web开发

    千次阅读 2019-02-26 11:24:29
    下面来介绍一下基于Python语言的Web开发中几种常见的Web开发框架; 1、Python语言是第四代程序设计语言,是解释性的、交互性的和面向对象的。它在Web应用和非Web应用中都发挥了重要的作用。比如Google的核心代码是...
  • Python3开发详解

    万人学习 2019-12-18 15:09:51
    Python3 开发详解,课程从基础的环境搭建讲起,详细讲述了Python开发的方方面面,内容包括:编程基础、函数、数据结构、异常处理、字符串、数字、网络编程、多线程、数据库处理等。
  • python开发环境搭建——windows环境

    万次阅读 2018-06-12 19:39:00
    1、去官网下载python安装包,官网地址:https://www.python.org/,安装包如图:2、双击安装就好了,注意讲python...4、下载python集成开发工具,个人推荐JetBrains中的PyCharm,下载下来如下图5、安装一下就好了,p...
  • Python做web开发,推荐几个能立马上手的小项目

    万次阅读 多人点赞 2018-08-02 07:13:06
    做web开发,什么语言最好? 所有的编程语言都能进行开发web,java就不用多说了,PHP从应用范围到岗位需求来说都是很强的,Python+Flask的框架也让人非常惊艳。其实没有什么最好,适合的才是最好;不过——   ...
  • python web开发--web前端开发介绍

    千次阅读 2018-08-20 14:11:14
  • Python的火热度持续不断。。。。。。作为入门语言还是不错的!你觉得Python真的好吗?或许你在漫天的宣传中看到了这些:开发环境简单,能打字就能写代码;接近英语的简单语法;众多的第三方库;解释执行,不需要编译...
  • python开发软件有哪些?Python编程软件

    万次阅读 多人点赞 2018-04-12 15:33:16
    Python开发软件可根据其用途不同分为两种,一种是Python代码编辑器,一种是Python集成开发工具,两者的配合使用可以极大的提高Python开发人员的编程效率,以下是常用的几款Python代码编辑器和Python集成开发工具。...
  • 原来python开发后端服务器还可以这么简单(未完待续)​ 作为一个android开发者,工作和生活中想写一个服务器作为测试,可是都很麻烦。这两天跟着书写了python+Django的管理系统,另外提供web接口可以给前端使用。...
  • Python里直接开发cad

    万次阅读 2017-11-04 19:31:11
    接下来没什么好讲的,直接放代码吧,只能说用Python的标准库开发起来实在太简单了。from pyautocad import Autocad,APointacad=Autocad() acad.prompt("Hello,Autocad from Python\n") print (acad.doc.Name)p1=A
  • Python初级入门精讲

    万人学习 2020-08-25 15:56:32
    本课程为Python全栈开发初级入门篇-语言基础章节,学习完本篇章可对python语言有初步的掌握与理解,本课程侧重于初级学员,课程内容详细有针对性,务求各种类型的学员都可以掌握python开发
  • 最新Python全栈工程师学习路线(初级+高级+大神)

    万次阅读 多人点赞 2018-11-23 13:34:44
    IT行业,技术要比学历、年龄、从业经验更为重要,技术水平直接决定就业薪资,想要学好python,首先要先了解精通Python语言基础、Python web开发Python爬虫、Python数据分析这四大方面。 零基础学习需要要从如下几...
1 2 3 4 5 ... 20
收藏数 659,519
精华内容 263,807
关键字:

python开发