整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

python文档资源及pydoc生成html文件

python文档资源及pydoc生成html文件

ython文档资源包括下面几种:

序号

形式

描述

1

#注释

程序语句对应的注释

2

dir()

查看对象全部属性

3

doc

文档字符串

4

help()

查看对象具体属性用法

5

HTML报表

html格式帮助文档

6

标准手册

python语言和库的说明

7

网站资源

在线教程、技术博客

8

书籍资源

相关书籍

1.1 #注释

python井号(#)用于程序语句对应的注释。

#号后面直到行末的内容都会当做注释,不被执行。

python通过#注释的内容只能在程序原文件查看。

1.2 dir()

python的dir(对象)内置函数,返回对象全部属性组成的列表。

示例

# 通过常量表达式生成实例后查看
>>> dir('')
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
# 通过类型名生成实例后查看
>>> dir(str)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
>>> dir('')==dir(str)

1.3 doc

python文档字符串doc,值为模块文件开头、函数开头、类开头、方法开头的注释,python会自动封装这些注释,并且保存在doc。这些注释写在三引号内。

1.3.1 自定义文档字符串

文档字符串可以通过不同位置路径对象的doc获取。

不同路径对象属性名(函数名、类名、方法名)可以通过dir(模块)获取。

模块:模块名.doc

函数:模块名.函数名.doc

类:模块名.类名.doc

方法名:模块名.类名.方法名.doc

示例

'''
模块文件名:docstr.py
模块开头的文档字符串
'''
S='梯阅线条'
def hellof(name):
    '''
    函数开头的文档字符串
    '''
    print('hello ',name)

class Student:
    '''
    类开头处的文档字符串
    '''
    def study(self):
        '''
        方法开头的文档字符串
        '''
        pass
    
# 查看不同对象的__doc__文档字符串
>>> path=r'E:\documents\F盘'
>>> import os
>>> os.chdir(path)
>>> import docstr
>>> dir(docstr)
['L', 'S', 'Student', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', 'hellof']
>>> print(docstr.__doc__)

模块文件名:docstr.py
模块开头的文档字符串
>>> print(docstr.hellof.__doc__)

    函数开头的文档字符串
>>> print(docstr.Student.__doc__)

    类开头处的文档字符串
>>> print(docstr.Student.study.__doc__)

        方法开头的文档字符串
        

1.4 help()

python的help()内置函数查看传入对象的使用说明,传入对象可以是模块名、函数名、类名、方法名、变量引用。

示例

>>> path=r'E:\documents\F盘'
>>> import os
>>> os.chdir(path)
>>> import docstr
>>> help(docstr)
Help on module docstr:

NAME
    docstr

DESCRIPTION
    模块文件名:docstr.py
    模块开头的文档字符串

CLASSES
    builtins.object
        Student
    
    class Student(builtins.object)
     |  类开头处的文档字符串
     |  
     |  Methods defined here:
     |  
     |  study(self)
     |      方法开头的文档字符串
     |  
     |  ----------------------------------------------------------------------
     |  Data descriptors defined here:
     |  
     |  __dict__
     |      dictionary for instance variables (if defined)
     |  
     |  __weakref__
     |      list of weak references to the object (if defined)

FUNCTIONS
    hellof(name)
        函数开头的文档字符串

DATA
    L=['梯', '阅', '线', '条']
    S='梯阅线条'

FILE
    e:\documents\f盘\docstr.py


>>> help(docstr.hellof)
Help on function hellof in module docstr:

hellof(name)
    函数开头的文档字符串

1.5 pydoc

1.5.1 生成html

用法

python -m pydoc -w docstr

描述

进入到docstr.py文件的目录,执行用法里面的语句。

执行pydoc模块,将docstr的文档字符串写入到docstr.html文件,成为帮助文档。

-m:表示运行模块(module),后面接模块名

-w:后接要生成html文档的模块名,表示将模块的文档字符串写入到模块名.html文件中。

示例

E:\documents\F盘>python -m pydoc -w docstr
wrote docstr.html

会生成类似下面的html文件内容:

1.6 python手册

python安装目录的doc目录下python378.chm。

更多内容参考python知识分享或软件测试开发目录。

日,我的一位同事向我寻求建议,她打算为自己构建一个博客。于是,我对静态网站生成器和博客引擎进行了一番研究,发现 Hugo 是一个很不错的选择。但是,我的同事还有一些特殊要求,比如,她想要一个自定义的博客网址和 CSS 主题。尽管这些 Hugo 都可以实现,但我并不打算花时间来学习它。我想自己创建一个简单的静态网站生成器,以便我的同事在她已经准备好的 HTML 中编写博客文章。

这个静态网站生成器的代码大约 100 行,非常简洁。它提供了详细代码和示例博客 。众所周知,GitLab 提供静态页面的免费托管服务,还带有 CI/CD 功能,它允许你在部署之前编译页面。

以下教程将带你使用 Node.js 设置自己的静态网站生成器,Node.js 的版本需要 “>=8.11.x”。

npm init
npm i --save-exact bluebird chokidar fs-extra mustache
mkdir src
mkdir public

首先,设置项目:

开始之前,我们需要弄清楚一个问题:为什么需要静态网站生成器?因为某些情况并不需要静态网站生成器。假如你的博客访问量很小,你只需简单地手工创建 HTML 页面并发布它们即可。实际上,在服务器编程兴起之前,在很长时间内这就是大多数 Web 的发布方式。但是,一旦页面和内容增加,对这些页面中的通用部分(例如页面底部)进行更改将会变得非常重复和乏味。因此,我们开始寻找一种更加理想的方法,尝试使用某种简单的模板引擎来分离常见内容,然后在特定的地方插入所需的内容。

开始研究模板引擎之前,先设置我们的网站。我们需要在项目根目录下创建 2 个文件夹 :

  1. SRC:我们当前网站所在的位置;
  2. Public:用来存放我们生成的网站。

我们的目标是将 src 目录的内容复制到 public 目录中。在项目根目录下创建 index.js 文件,其内容如下:

const Promise=require("bluebird");
const fse=require("fs-extra");
Promise.resolve().then(async ()=> {
 await main();
});
const main=async()=> {
 await generateSite();
};
const generateSite=async()=> {
 await copyAssets();
};
const copyAssets=async()=> {
 await fse.emptyDir("public");
 await fse.copy("src", "public");
};

执行命令 node index.js,即可启动该脚本。

祝贺你!此刻,你已荣升为一名后端开发人员。

接下来,我们将添加文件监视器,src 文件夹中的内容一旦发生更改就将重新生成网站。该博客总共包含 500-1000 个文件,我们可以在任何变化发生时重新生成整个网站:

const chokidar=require("chokidar");
const main=async()=> {
 await generateSite();
 watchFiles();
};
const watchFiles=()=> {
 const watcher=chokidar.watch(
 [
 "src"
 ],
 {
 ignored: /(^|[/\])../, // chokidar will watch folders recursively
 ignoreInitial: false,
 persistent: true
 }
 );
 watcher.on("change", async path=> {
 console.log("changed " + path + ", recompiling");
 await generateSite();
 });
 // catch ctrl+c event and exit normally
 process.on("SIGINT", function() {
 watcher.close();
 });
};

上面的代码清楚地说明了为什么初始版本有一个名为 generateSite 的函数。现在执行命令 node index.js 启动我们的静态网站生成器,如果在 src 目录中编辑任何文件,public 都会发生变化。此时,我们还将添加一个环境变量来区分开发和生产模式。在开发模式中,我们将关注更改情况并重新生成网站,而在生产模式中,我们只需重新生成:

const env=process.env.NODE_ENV || "dev";
const main=async ()=> {
 console.log("Running app in " + env);
 await generateSite();
 if (env==="dev") {
 watchFiles();
 }
};

我们可以执行命令 export NODE_ENV=prod || set NODE_ENV=prod && node index.js 来运行以上代码。请注意,观察源目录的更改和重新编译并不是每次都必须的,你可以跳过此步骤,只需在每次进行更改时运行脚本即可。

至此,差不多完成了!现在来说说模板。我们将使用 Mustache.js 模板,它非常简单易用,并且我们的需求并不复杂。创建一个文件夹 src/partials,用来存放网站的公共部分。然后稍微修改我们的网站结构,保证所有页面都存放在 src/pages 目录中。接下来加载页面并使用 Mustache 渲染:

const fs=require("fs");
const generateSite=async ()=> {
 await copyAssets();
 await buildContent();
};
const buildContent=async ()=> {
 const pages=await compilePages();
 await writePages(pages);
};
const compilePages=async ()=> {
 const partials=await loadPartials();
 const result={};
 const pagesDir=path.join("src", "pages");
 const fileNames=await fs.readdirAsync(pagesDir);
 for (const fileName of fileNames) {
 const name=path.parse(fileName).name;
 const fileContent=await fs.readFileAsync(path.join(pagesDir, fileName));
 result[name]=Mustache.render(fileContent.toString(), {}, partials);
 }
 return result;
};
const loadPartials=async ()=> {
 const result={};
 const partialsDir=path.join("src", "partials");
 const fileNames=await fs.readdirAsync(partialsDir);
 for (const fileName of fileNames) {
 const name=path.parse(fileName).name;
 const content=await fs.readFileAsync(path.join(partialsDir, fileName));
 result[name]=content.toString();
 }
 return result;
};
const writePages=async pages=> {
 for (const page of Object.keys(pages)) {
 await fs.writeFileAsync(path.join("public", page + ".html"), pages[page]);
 }
};

想要了解最终版本,请查看 Software Dawg 项目(https://gitlab.com/wheresvic/software-dawg)。它与本教程有一些细微差别:

  • 脚本本身位于 src 目录下。
  • 代码略超过了 100 行,大约 130 行,为了遵循简洁的代码实践风格,使用常量而不是文件夹路径的字符串。
  • 该脚本不会复制整个 src 文件夹,而只复制必要的资源,比如 CSS 文件、图片等。
  • 该项目使用 node-sass 编译模板 CSS。然而,这种依赖性不是必需的,因为已编译的 CSS 文件也被提交到了 Git。

此外,你还可以安装 browser-sync 软件包,然后通过命令 npm run live-reload 运行它,如此一来,只要有任何更改发生浏览器就会自动刷新。请注意,由于任何更改都将重新生成整个网站,因此并不适用于 Windows。

GitLab 提供静态网站免费托管,只需一个 .gitlab-ci.yml 配置文件即可。真正令人难以置信之处在于,你可以自定义构建过程,这意味着在该例中,我们可以在部署之前生成网站!有关此功能的详细信息,请参见https://about.gitlab.com/features/pages/。

本教程到此结束,我的同事对此非常满意,该方案非常灵活,它允许她根据自己的喜好进行自定义,也希望对你有所助益!

原文:https://smalldata.tech/blog/2018/08/16/building-a-simple-static-site-generator-using-node-js

作者简介:Victor Parmar,是一位全栈工程师,热爱旅行,热爱 DIY。

译者:安翔,责编:屠敏

一阶段:WEB网页基础

1 HTML5+CSS3基础入门

课程内容

熟悉HTML5入门基本内容(代码文件、基本结构、注释、编程问题规范、基本标签等);掌握CSS3的基础入门知识;

项目实战

京东登录注册案例(HTML+CSS) 登录界面指的是需要提供帐号密码验证的界面,有 控制用户权限、记录用户行为,保护操作安全的作 用。登录界面是所有在线系统的入口。

2 HTML5+CSS3进阶

课程内容

掌握继承与优先级;选择器、盒子模型、布局样式等使用方法;能够 进行合理的网页布局。

项目实战

个人博客(HTML5+CSS3) 个人博客是学员涉足前端领域的第一个项目,运用 前端基础知识,培养项目思维,在入学2周内搭建 属于自己的个人信息分享平台。

3 Photoshop

课程内容

采用商业案例来学习Photoshop使用,掌握Photoshop基本操作;能 够独立的进行网页切图。

项目实战

企业网站

(HTML5+CSS3+Photoshop+PxCook) 企业网站作为一家公司的互联网名片,是每家企业必备。强化学员对HTML+CSS+PS(切图)、各种布局等初期所学全部知识的综合应用,由于是第一个企业级项目,着重熟悉项目开发流程和培养使用HTML+CSS遇到问题时的分析和调试能力。

第二阶段:WEB编程基础

1 JavaScript基础

课程内容

了解最前沿JavaScript知识。掌握JS基础基本语法和基本语句以及ES6&ES7新特性,培养编程逻辑思维,实现网页的动态交互。

2 BOM+DOM编程

课程内容

认识和了解BOM和DOM模型; 掌握window、 location、 history、 navigator、document、 Form、Table等对象的使用;掌握事件处 理和DOM节点。理解BOM和DOM模型:掌握各浏览器API的使用、熟练操作元素节点理解网站事件类型与机制

项目实战

案例实践-H5音乐播放器、H5小游戏 (HTML5+CSS3+Javascript) 通过游戏应用开发,培养学员开发兴趣和参与感, 强化Javascript基础、DOM操作和事件机制在实际 场景的应用。

3 JavaScript交互及动画效果

课程内容

掌握运动框架的封装(匀速运动 缓冲运动 多物体运动) 分享到案例 右侧边栏滚动案例 透明度运动 轮播效果案例

项目实战

企业网站交互进阶(HTML5+CSS3+JavaScript) 掌握动画原理,利用原生JS技术编写动画交互效果 实现企业站的轮播,选项卡,楼层跳转等常规功能

4 jQuery+交互及动画 +jQuery优质插件

课程内容

认识jQuery;熟悉选择器;属性与样式; jQuery基本DOM操作;事件处理;文档处理;数组和对象操作。学会使用jQuery和JavaScript 和DOM编程的动画效果制作。 掌握jQuery生态圈的流行框架使用; 培养学员利用前端工具解决开发过程中问题的能力。

项目实战

案例实践-楼层跳动&轮播&表单验证(HTML5+ CSS3+jQuery)jQuery的流行得益于他庞大的插件 生态圈,掌握jQuery插件的使用,将是前端开发者 网站开发的利器。

5 版本控制工具SVN&GIT

课程内容

掌握SVN/GIT版本控制工具来维护项目的整个蓝图;熟练使用github 来管理云端代码仓库,快速项目组成员多人协作。

6 jQuery EasyUI

课程内容

熟悉jQueryEasyUI框架环境搭建, 掌握EasyUI常用插件, 使用Easy UI快速搭建后台

项目实战

电子购物网站(HTML5+CSS3+jQuery +EasyUI)通过本阶段的学习,具备常见动画需求 的开发能力常用插件的使用及开发;逐步培养良好 的编程习惯强化企业项目开发流程,培养团队协作能力。


第三阶段:响应式网站与项目自动化开发

1 HTML5、CSS3高级进阶

课程内容

掌握HTML5时代多媒体、Web存储技术及基于浏览器的(LBS)地理定位技术,熟悉基于高德地图、百度地图等地图API的应用开发;介 绍了H5图形技术SVG和Canvas;能够动手编写图形报表和使用百度 echarts地图API的能力。掌握CSS3新选择器, 响应式原理及CSS3媒体查询,移动端流行的伸缩布局,Web字体、渐变、过渡动画等技 术使用动画库实现基于网页的酷炫动画效果。

项目实战

H5动效简历/H5原生移动商城(HTM L5+CSS3+Swiper+动画框架)H5动效简历是每 一

个H5er的个性化名片,H5原生移动商城和适配 调试是面向前端是时代的必须技术。

2 Bootstrap4

课程内容

掌握来自Twitter工程师开发的目前流行度很高的前端响应式框架, 包括内置样式、组件和JavaScript插件;掌握基于Bootstrap 打造的电影主题页设计。

项目实战

电影主题页设计 (HTML5+CSS3+Bootstrap) 快速打造能够适应多端的信息展示网站

3 前端依赖管理+CSS预处理 语言(Less+Sass)

课程内容

熟练使用bower来管理前端库,达到一个命令搞定所有项目依赖。

掌握基于CSS的预处理框架Less/Sass,以最简单的代码实现复杂 样式;目前主流的前端框架都是基于css预处理语言搭建,学会后 具备Bootstrap等框架的阅读和使用能力。

项目实战

响应式股票交易平台(Bootstrap4+Sa ss+PHP+Mysql+GIT)通过本阶段学习,通过Boot

strap等框架具备响应式开发能力;并使用多种版本 控制工具,进行企业项目的迭代;同时使用预处理 框架完成样式重用和扩展。具备高效快速开发企业 项目的能力。

4 Grunt/Gulp自动化构建工具

课程内容

了解前端自动化构建工具的原理;掌握基于Node平台的Grunt和Gulp 两大自动化构建工具。

5 Mysql

课程内容

了解Mysql背景,快速搭建Mysql环境,熟悉Sql基础语法,实现对数据 的CRUD操作

项目实战

响应式股票交易平台(Bootstrap4+Sa ss+PHP+Mysql+GIT)通过本阶段学习,通过Boot

strap等框架具备响应式开发能力;并使用多种版本 控制工具,进行企业项目的迭代;同时使用预处理 框架完成样式重用和扩展。具备高效快速开发企业项目的能力


第四阶段:Web高级编程与框架原理

1 JavaScript高级编程

课程内容

掌握jJavaScript面向对象思想;原型设计原理及使用。了解 JavaScript程序的编译原理;掌握递归、惰性载入、匿名、闭包及 回调等高级函数的使用。掌握ES6前沿新特性。

2 jQuery插件开发

课程内容

学习插件开发模式,并自己动手实现动态表格查询和表单验证等插件。

案例实践

原生表单验证插件(HTML5+CSS3+ ES6)能够通过面向对象思想开发jQuery插件,学

习实践JS设计模式,具备初级JS框架的编写能力。

3 NodeJS

课程内容

掌握Node服务端编程技术,Expres搭建服务器,基于Express框架编写 后端代码,实现前端和后端全栈开发

4 WebSocket

课程内容

掌握掌握HTTP协议、客户端数据传输方式,掌握WebSocket 在 HTML5 领域的应用场景,用于实现客户端和服务器的长链接。

案例实战

在线聊天室 (HTML5+CSS3+JS+WebSocket) 快速打造能够多人在线聊天的聊天室案例。

5 MVVM架构源码解析

课程内容

掌握MVC、MVP和MVVM架构的演变历史,掌握分层开发的思想,了 解双向绑定原理,实现基于面向对象方式实现一个基于MVVM架构的 minVue框架。

案例实践

miniVue框架(面向对象编程) 动手打造第一款属于自己的前端主流框架。


第五阶段:VUE全家桶与多端项目管理

1 VUE2-VUE3

课程内容

掌握Vue2框架的环境搭建,指令,表达式,计算属性、侦听器、生命 周期和组件开发,掌握主流的VUE2组件高阶、消息通讯,熟悉Vant、 iView、MintUI移动端框架,使用Vue-cli来搭建工程和开发Vue项目。

2 ElementUI+ Koa2(Node.js)+Mysql

课程内容

熟练使用基于Vue2的饿了么前端视图框架ElementUI,高效打造大型 复杂的用户界面。Koa是Express 原班人马打造 更小、更健壮、更富 有表现力Node框架,使用Koa2打开更前沿的后台开发模式,使用甲 骨文公司的Mysql关系数据库来管理更为大型并发的数据。

项目实战

大型超市管理系统、外卖后台管理系统 (ElementUI+Koa2+Mysql+GIT) 通过最热门的Node+Koa2+Mysql开发模式独立完成网站开发 通过NPM生态圈通过分享和实践编码进行自我提升 成为一名真正的全栈工程师。

3 TypeScript

课程内容

TypeScript是一种由微软开发的自由和开源的编程语言。它是 JavaScript的一个超集,而且本质上向这个语言添加了可选的静态 类型和基于类的面向对象编程

4 webpack模块加载器 &打包工具

课程内容

掌握最前沿模块化打包工具,形成组件化开发思想,极大简化项目开 发的成本。

项目实战

外卖APP、源码音乐App (TS+Vue+Vuex+Vant+axios+GIT) 熟练掌握Vue全家桶项目架构。

5 uniapp/Taro微信小程序

课程内容

微信小程序作为引爆H5时代的标识技术,通过学习了解视图层、逻 辑 层相关知识,深入小程序框架和组件的使用。uni-app 是一个使用 Vue.js 开发跨平台应用的前端框架,开发者编写一套代码,可编译到 iOS、Android、H5、小程序等多个平台。Taro是来自京东凹凸实 验室的多端统一开发框架Taro,可以让你使用一套代码打通WebApp、 微信小程序、支付宝小程序、百度智能小程序、字节跳动小程序等。

项目实战

源码电影小程序/四海香美食小程序 (WXML + WXSS + JS + 豆瓣开放接口API)通过

本阶段学习,具备微信、支付宝小程序、百度智能 小程序和字节跳动小程序的开发能力。


第六阶段:React移动混合式开发

1 React

课程内容

掌握来自Facebook工程师开发的流行前端框架-ReactJs;熟练使 用ReactJs基本语法、声明周期、React-Router及基于ES6的 React组件开发;掌握React Redux架构在实际项目中的应用。掌 握基于ReactJS衍生出来的本地化跨平台框架;

项目实战

源码房产App、源码电影App (TS+React+Redux+Webpack+Antd-mobile+ GIT)熟练掌握React全家桶项目架构

2 React Native/Flutter

课程内容

熟练搭建ReactNative环境、掌握本地化布局和常见组件。 Flutter是谷歌的移动UI框架,可以快速在iOS和Android上构建高 质量的原生用户界面(原生应用)。 Flutter可以与现有的代码一起 工作。在全世界,Flutter正在被越来越多的开发者和组织使用,并 且Flutter是完全免费、开源的。

项目实战

源码生活APP(ReactNative/Flutter +AntD+DVA+高德地图API)通过本阶段学习,具

备与移动端开发人员的合作完成低成本、高性能、 高健壮的App应用的能力。


第七阶段:就业与服务

1 就业指导

企业通用面试技巧、知识点面试技巧、模拟面试、项目面试技巧、语言表达练习、互面总结、总结和复习面试题。

2 面试直通车

面试经验交流、面试技术解惑、面试项目跟踪。

3 售后服务

随时随地为同学们提供全方位工作问题解决方案!源码时代是独家具有售后的服务机构!