ython文档资源包括下面几种:
序号 | 形式 | 描述 |
1 | #注释 | 程序语句对应的注释 |
2 | dir() | 查看对象全部属性 |
3 | doc | 文档字符串 |
4 | help() | 查看对象具体属性用法 |
5 | HTML报表 | html格式帮助文档 |
6 | 标准手册 | python语言和库的说明 |
7 | 网站资源 | 在线教程、技术博客 |
8 | 书籍资源 | 相关书籍 |
python井号(#)用于程序语句对应的注释。
#号后面直到行末的内容都会当做注释,不被执行。
python通过#注释的内容只能在程序原文件查看。
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)
python文档字符串doc,值为模块文件开头、函数开头、类开头、方法开头的注释,python会自动封装这些注释,并且保存在doc。这些注释写在三引号内。
文档字符串可以通过不同位置路径对象的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__)
方法开头的文档字符串
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)
函数开头的文档字符串
用法
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文件内容:
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 个文件夹 :
我们的目标是将 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)。它与本教程有一些细微差别:
此外,你还可以安装 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 售后服务
随时随地为同学们提供全方位工作问题解决方案!源码时代是独家具有售后的服务机构!
*请认真填写需求信息,我们会在24小时内与您取得联系。