Python 基础:Python 集成开发工具 IDLE

Posted 水滴技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 基础:Python 集成开发工具 IDLE相关的知识,希望对你有一定的参考价值。


文章目录


大家好,我是水滴~~

本篇文章我们看一下 Python 自带的开发工具 IDLE 是如何使用的。

IDLE 是 Python 内置的集成开发工具,我们无需单独安装它,在安装 Python 时被同时安装好了。IDLE 已具有 IDE 的基本功能,例如:语法高亮、段落缩进、基本文本编译、调度程序等。

一、打开 IDLE

在【开始】菜单中找到 【Python 3.11】,点击【IDLE (Python 3.11 64-bit)】,即可打开 IDLE。

下图为打开的 IDLE Shell 窗口,会显示当前 Python 的版本信息,可以从“>>>”处输入 Python 代码。

二、IDLE Shell 窗口

IDLE Shell 是一个交互式的窗口,它会对语法进行着色显示。具有代码输入、输出和显示错误消息功能。

三、编辑器窗口

IDLE Shell 中输入代码时,是输入一行执行一行,而在实际开发当中通常是有多行代码,这样就需要单独创建一个文件,我们来看一下如何创建一个 Python 文件。

选择【File】菜单下的【New File】,或者按快捷键“Ctrl + N”,会打开编辑器窗口。

在编辑器窗口中,我们就可以输入多行代码了。

写好代码后,我们选择【File】菜单下的【Save】,或按快捷键“Ctrl + S”,进行保存。

最后我们来运行代码,选择【Run】菜单下的【Run Module】,或按快捷键“F5”,来运行代码。

执行的结果会在 IDLE Shell 窗口中输出:

四、常用快捷键

为了提供开发效率,我们通常会使用快捷键,下面列出了一些常用的快捷键。

快捷键说明适用范围
F1打开 Python 帮助文档编辑器窗口和Shell 均可用
Alt + P浏览历史命令(上一条)仅 Shell 窗口可用
Alt + N浏览历史命令(下一条)仅 Shell 窗口可用
Alt + /自动补全前面曾经出现过的单词编辑器窗口和Shell 均可用
Alt + 3注释代码块仅编辑器窗口可用
Alt + 4取消代码块注释仅编辑器窗口可用
Alt + G转到某一行仅编辑器窗口可用
Ctrl + Z撤销一步操作编辑器窗口和Shell 均可用
Ctrl + Shift + Z恢复上—次的撤销操作编辑器窗口和Shell 均可用
Ctrl + S保存文件编辑器窗口和Shell 均可用
Ctrl + ]缩进代码块仅编辑器窗口可用
Ctrl + [取消代码块缩进仅编辑器窗口可用
Ctrl + F6重新启动 Python Shell仅 Shell 窗口可用
Ctrl + N创建新的文件编辑器窗口和Shell 均可用
Ctrl + O打开文件编辑器窗口和Shell 均可用

五、系列文章

🔥 Python 基础(一):初识 Python
🔥 Python 基础(二):搭建 Python 开发环境

六、热门专栏

👍 《Python入门核心技术
👍 《IDEA 教程:从入门到精通
👍 《Java 教程:从入门到精通
👍 《MySQL 教程:从入门到精通
👍 《大数据核心技术从入门到精通

Python集成tornado搭建web基础框架

一、综述

基于兴趣尝试使用Python开发语言搭建一个基础的web框架,本次采用的方案是集成tornado方式。项目源码

二、开发环境

系统需要具备以下开发环境:

三、python下载tornado库

如果当前的环境里没有tornado依赖库,使用以下命令安装

	pip install tornado

四、基于Python3.x搭建web框架

需具备上述开发环境后,方可进入以下搭建流程。推荐使用PyCharm开发工具,也可以使用其他的开发工具替代。

1. 项目目录介绍

config.py:项目环境的基础配置文件
application.py:自定义tornado Application启动类,自定义相关的配置等
server.py:项目的启动类
views:项目的路由定义及相关业务处理的目录,类似SpringBoot中的controller
static:该目录为项目的静态资源目录,用于存放js/css/img等静态资源
templates:该目录为项目的模板页面资源文件,用于渲染相关的显示页面
upfile:该目录为项目的文件上传基础目录

2.项目配置文件config.py

该文件统一管理项目的配置文件,包含启动的端口,tornado支持的一些web启动配置参数,项目的请求路由注册等。

import os

"""
#config
    配置参数
"""
options = 
    "port": 8080


"""
#config
配置文件,相当于django里面的setting
配置application应用程序路由,即文件地址路径
BASE_DIRS = os.path.dirname(__file__)
当前file文件路径
##os.path.join(BASE_DIRS,"static")
拼接路径:如(BASE_DIRS/static),当然BASE_DIRS=当前文件的父类的文件路径
"""
BASE_DIRS = os.path.dirname(__file__)
print("******config******")
print("BASE_DIRS",BASE_DIRS)

"""
    静态路由配置
"""
STATIC_ROUTERS_CONFIGS = 
    "STATIC_PATH":os.path.join(BASE_DIRS,"static"),
    "CSS_URL": os.path.join(BASE_DIRS,"static","css"),
    "JS_URL":os.path.join(BASE_DIRS,"static","js"),
    "IMG_URL":os.path.join(BASE_DIRS,"static","img")


"""
    tornado配置
"""
settings = 
    "static_path": os.path.join(BASE_DIRS, "static"),  # 静态文件
    # "static_url_prefix": "/static",
    "template_path": os.path.join(BASE_DIRS, "templates"),  # 视图
    "compiled_template_cache":True,
    "autoescape":None,
    "debug": True,
    "cookie_secret": "OrGWKG+lTja4QD6jkt0YQJtk+yIUe0VTiy1KaGBIuks",
    "xsrf_cookies": True,
    "login_url": "/login"


3.项目自定义Web Application

  • (1)创建MainApplication继承tornado.web.Application,自定义相关的静态资源路由配置。
  • (2)**all_router_configs()**方法为抽取的views目录下定义的路由接口,这样可以按模块定义相应的路由和处理的Handler,下面会详细说到。
import tornado.web
import os
import config
from views import *
from config import settings
from tornado.web import StaticFileHandler,URLSpec

"""
    创建Application
"""
class MainApplication(tornado.web.Application):
    def __init__(self):
        # BASE HANDLERS
        handlers = [
            # 静态文件
            URLSpec(r"/static/(.*)", StaticFileHandler, "path": config.STATIC_ROUTERS_CONFIGS["STATIC_PATH"]),
            URLSpec(r"/css/(.*)", StaticFileHandler, "path": config.STATIC_ROUTERS_CONFIGS["CSS_URL"]),
            URLSpec(r"/js/(.*)", StaticFileHandler, "path": config.STATIC_ROUTERS_CONFIGS["JS_URL"]),
            URLSpec(r"/img/(.*)", StaticFileHandler, "path": config.STATIC_ROUTERS_CONFIGS["IMG_URL"]),
        ]
        # SERVICE HANDLERS
        handlers.extend(all_router_configs())
        super().__init__(handlers=handlers, **settings)
        print("******tornado web application configs******")
        print("handlers", handlers)
        print("setting", config.settings)

4.项目启动类server.py

项目的启动入库类server.py,启动命令:python server.py

import tornado.web
import tornado.ioloop
import tornado.httpserver
import tornado.options
import config           #导入自定义配合的py文件
import application      #导入自定义的应用程序模块

"""
    server服务配置
"""
if __name__ == "__main__":
    app = application.MainApplication()
    httpServer = tornado.httpserver.HTTPServer(app)
    httpServer.bind(config.options["port"])
    httpServer.start(1)
    print("server success start, port:",config.options["port"])
    tornado.ioloop.IOLoop.current().start()

5. views下路由定义介绍

views目录为项目所有的路由定义的地方及相关业务处理的模块,建议按业务模块化的方式管理。

5.1 自定义路由接口ViewRouterInterface

接口统一定义获取注册路由方法,便于获取每个handler注册的路由配置。

"""
    统一定义路由配置URL
"""
from abc import ABCMeta,abstractmethod

"""
    定义公共的路由方法
"""
class ViewRouterInterface(metaclass=ABCMeta):
    """
        配置路由,要求返回数组行驶
    """
    @abstractmethod
    def configRouter(self):
        raise NotImplementedError

5.2 views package默认的初始化文件__init__.py

  • (1)python中每当导入一个package时会默认先执行相关的__init__.py文件,可以借此时机获取项目里所有注册的handler。
  • (2)ALL_HANDLERS为项目里注册的业务处理Handler,应为RequestHandler的子类
  • (3)all_router_configs方法为views包下的全局方法,用于获取每个ALL_HANDLERS里配置的相关路由和请求处理器。
"""
    请求路由定义及相关的业务处理
    Handler相当于Web中的Controller
    ViewRouterInterface定义了获取路由配置的统一接口
        即configRouter方法返回路由配置数组
"""
print("******start to import view Request Handler packages******")
from views.test.TestHandlerKit import TestHandler
from views.index.index import IndexHandler,LoginHandler
from views.upload.UploadUtilsHandlerKit import UploadFileHandler

# 定义所有的RequestHandler
ALL_HANDLERS = [
    TestHandler,IndexHandler,LoginHandler,UploadFileHandler
]

"""
    获取所有的路由
"""
def all_router_configs():
    allRouters = []
    for viewRouterInterface in ALL_HANDLERS:
        routerConfigs = viewRouterInterface.configRouter(viewRouterInterface)
        if routerConfigs is None:
            continue
        allRouters.extend(routerConfigs)
    print("ALL ROUTER CONFIGS",allRouters)
    return allRouters

5.3 自定义TestHandler

  • (1)按照模块化管理的思想,在views目录下创建test文件夹,创建TestHandler.py文件。
  • (2)TestHandler继承ViewRouterInterface和RequestHandler类。
  • (3)继承ViewRouterInterface是为了自定义相关的路由及处理Handler。
  • (4)继承RequestHandler,实现其中的get和post方法用于处理Http的GET请求和POST请求,类似SpringBoot中的Controller。
from tornado.web import RequestHandler
from views.ViewRouterInterface import ViewRouterInterface

"""
    Test view
"""
class TestHandler(ViewRouterInterface,RequestHandler):
    # 配置路由
    def configRouter(self):
        return [
            (r"/test",TestHandler)
        ]

    # Get方法
    def get(self):
        items = ["item1", "item2", "item3"]
        items2 = ["item1", "item2"]
        def checked(item):
            return 'checked=checked' if item in items2 else ''
        self.render("test/test.html", items=items, add=add, items2=items2, checked=checked)

"""
    Html Page Function
"""
def add(x, y):
    return (x+y)

5.4自定义test.html模板页面

  • (1)按照模板化管理的思想,建议模板页面同样使用模块化文件夹管理的方式,在templates目录下创建test目录。
  • (2)创建test.html文件,简单demo显示Handler返回的结果及调用Handler里自定义的函数。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Test1 HTML</title>
</head>
<body>
        % for item in items %
		        <li> escape(item) </li>
		        <li>
		             <input  value=item name=item  type="checkbox"
		             checked(item)
		             /> item
		       </li>
		% end %
		add func test: 2+2= add(2,2) 
</body>
</html>

6.启动项目

启动方式:

python server.py

7.访问请求

http://localhost:8080/test

五、总结

工作之余学习了解下如何基于python开发语言实现一个web开发框架,若有不足或者错误之处,请多多指教!!!

以上是关于Python 基础:Python 集成开发工具 IDLE的主要内容,如果未能解决你的问题,请参考以下文章

Python基础教程(020)--集成开发环境IDE简介--Pycharm

工程脚本插件方案 - c集成Python基础篇(VC++嵌入Python)

Python基础语法

Python开发(基础):初识Python

零基础学习python

Python开发第一篇基础题目二