OverIQ - 免费教程https://overiq.cn/sitenews/一个关于C编程、Python和Django的博客。zh-CNSat, 17 May 2025 12:49:47 +0000你应该在线关注的机器学习专家 - 免费教程https://overiq.cn/machine-learning-experts-you-should-be-following-online/<p>在我们这个精通技术的时代,发展最快的领域之一是机器学习和<br>深度学习。预计在未来几年,这一领域也将继续其巨大的增长和发展。<br>然而,跟上技术进步、热门新闻、行业模式以及有影响力人物的观点的<br>步伐可能会让人不知所措。</p> <p>但保持信息灵通的一个主要方法是通过 Twitter,它最终被证明是<br>一种有用且引人入胜的方式,可以让你了解人工智能领域一些顶尖人物和<br>先驱学者的见解,他们利用自己的账号来表达对最新新闻和行业实践的看法。</p> <p>如果你对学习该领域的最新发展感兴趣,想从最优秀的人那里获得重要的视角,<br>并为未来做好准备,那么就没有比关注这些机器学习专家及其成功的旅程<br>更好的方法了。像我这样的初学者,一直受到这些机器学习英雄的极大鼓舞,<br>并且可以继续每天借鉴他们的研究工作,以探索更多算法来增加我们的知识。<br>为了帮助你入门,我整理了一份你需要在线关注的顶级机器学习专家、<br>深度学习影响者和专家的名单。这份名单结合了商业领袖、创始人、<br>专家、企业家、科学家和专栏作家,他们都以不同的视角为人工智能做出贡献。</p> <span id="1-andrew-ng" class="anchor-target"></span><h2 class="heading">1. <strong>Andrew Ng</strong> <a class="header-link" href="#1-andrew-ng">#</a></h2> <p>Andrew Yan-Tak Ng 是人工智能爱好者熟知的名字,被认为是当今<br>机器学习和深度学习领域最杰出的人物。他是 Coursera 和 deeplearning.ai<br>的联合创始人兼董事长,是一位出生于英国的美籍科技企业家。他目前<br>在斯坦福大学计算机科学系担任兼职教授,指导学生。</p> <p>教育家 Andrew 曾领导并帮助创建了 Google Brain 项目,并曾担任百度<br>的首席科学家。他与另一位人工智能领域的影响者 Carol Reiley<br>已婚。</p> <p><img src="/media/uploads/2021/06/19/machine-1.PNG" loading="lazy" alt="" ></p> <p>他的目标是普及深度学习,让世界上每个人都能免费获得顶级的教育,<br>这正是我们从 Coursera 获得的优势。他的人工智能和深度学习在线课程<br>受到全球许多学生和专业人士的追捧。Andrew 在这个领域有着卓越的<br>学术研究经历。他在机器学习和机器人领域发表了 300 多篇研究论文。<br>他获得了 ICML 最佳论文奖、IJCAI 计算机与思想奖、ACL 最佳论文奖<br>等众多荣誉。</p> <span id="2-michael-i-jordan" class="anchor-target"></span><h2 class="heading">2. <strong>Michael I Jordan</strong> <a class="header-link" href="#2-michael-i-jordan">#</a></h2> <p>Michael I Jordan 是机器学习领域最有影响力的人物之一,目前在加州<br>大学伯克利分校担任教授,曾任麻省理工学院教授。他的教学和研究<br>成果主要集中在统计学和电子工程与计算机科学(EECS)领域。统计学、<br>人工智能和深度学习是他最感兴趣的研究方向。</p> <p><img src="/media/uploads/2021/06/19/2-machine.PNG" loading="lazy" alt="" ></p> <p>20 世纪 80 年代,Jordan 开始将递归神经网络作为一种认知模型进行研究。<br>最近,他的研究更多地从传统统计学基础出发,而非心理学视角。他提倡<br>在人工智能应用中使用贝叶斯网络,并被广泛认为是将统计学和人工智能<br>之间的联系带入公众视野的主要学者之一。他是 ACM、ISBA、CSS、<br>AAAI、ASA、IEEE、IMS 和 SIAM 的成员。他的研究生和博士后学生也<br>对机器学习领域产生了重大影响,其中一些人(如 Andrew Ng、David Blei<br>和 Zoubin Ghahramani)也出现在这份名单上。他最近完成了一次有益的<br>Reddit AMA(Ask Me Anything)。此外,他还被数学统计学会授予了 Medallion<br>Lecturer 和 Neyman Lecturer 的称号。</p> <p>统计学作为数学的一个子领域,在机器学习的每一步都起着主导作用,<br>为了充实你的知识,我告诉你,有很多统计学家在这个领域做出了真正<br>杰出的实验。机器学习涉及构建各种算法、系统和模型,它们利用统计学<br>从结构化数据中学习,而不是依赖于普通的编程指令。统计学在 21 世纪<br>的商业增长中已被证明是最大的变革者。这是一个可以深入理解统计<br>分析过程在商业案例场景中如何应用于机器学习的广泛主题。为了帮助<br>你学到更多,请查看关于<a href="https://www.excelr.com/blog/data-<br>science/statistical-analysis/the-ultimate-guide-to-statistical-analysis-for-data-science-6-step-<br>framework"><strong>统计分析</strong></a>的博客。</p> <span id="3-kirill-eremenko" class="anchor-target"></span><h2 class="heading">3. <strong>Kirill Eremenko</strong> <a class="header-link" href="#3-kirill-eremenko">#</a></h2> <p>Kirill Eremenko 是 SuperDataScience 的创始人兼首席执行官,这是一个面向数据科学家的在线教育平台。他是一位知名的<br>数据科学企业家,他的核心使命是简化复杂问题,并致力于成为数据科学爱好者的最大学习平台。</p> <p>此外,该在线平台还提供许多探索性课程,从 Python、R 编程、Tableau<br>等工具类课程,到机器学习 A-Z 和数据科学入门的完整教程。Kirill<br>的一些最佳课程包括深度学习(从 A 到 Z 的详细指南)和动手实践人工神<br>经网络。他也是 Udemy 的讲师,拥有最好的评价。</p> <p><img src="/media/uploads/2021/06/19/3-machine.PNG" loading="lazy" alt="" ></p> <p>这是我第一次接触深度学习,相信我,他们的课程确实是独一无二的,<br>非常注重直观的理解层面,并包含监督式和无监督式深度学习的实践编码教程。<br>此外,最近我还有机会阅读了他的书——《自信的数据技能》,这本书帮助<br>读者从项目开始到结束理解完整的数据科学工作流程,而且完全不需要<br>任何编程知识。</p> <span id="4-sebastian-thrun" class="anchor-target"></span><h2 class="heading">4. <strong>Sebastian Thrun</strong> <a class="header-link" href="#4-sebastian-thrun">#</a></h2> <p>Sebastian Thrun 是我们名单上的另一位非常受欢迎的名字,目前是 Kitty<br>Hawk Corporation 的首席执行官,也是广泛使用的在线课程平台 Udacity<br>的联合创始人。Sebastian 是一位来自德国的企业家,他创立了 Google X<br> Lab 和谷歌的自动驾驶团队。他从一开始就领导了这个项目,并被广泛认<br>为是自动驾驶汽车领域的先驱。谷歌的自动驾驶汽车项目现在由他领导。<br>在他的职业生涯中,他开发了许多自主机器人系统。</p> <p>他对人工智能的看法是,人类不会被人工智能的应用所取代,而是会<br>增强我们的能力。</p> <p><img src="/media/uploads/2021/06/19/4-machine.PNG" loading="lazy" alt="" ></p> <p>他在教学方面也经验丰富,目前在斯坦福大学和佐治亚理工学院担任<br>兼职教授。正如我们所期望的 Sebastian 这样的人物一样,他也深度<br>参与了机器学习的学术方面。Popular Science 杂志在 2005 年将他<br>评为 Brilliant 5。他还于 2011 年获得了 Max-Planck-Research Award。</p> <span id="5-andreas-kretz" class="anchor-target"></span><h2 class="heading">5. <strong>Andreas Kretz</strong> <a class="header-link" href="#5-andreas-kretz">#</a></h2> <p>每当我们谈论数据科学时,大多数人似乎认为它就是构建酷炫的人工智能模型<br>并进行预测。但实际上,构建模型只是整个工作流程的一部分,而数据工程<br>(也称为数据科学的“杂工”)是支持数据科学项目的关键部分。如果没有稳定<br>且强大的数据工程管道和平台,在最开始甚至很难获取数据来执行任何分析。</p> <p><img src="/media/uploads/2021/06/19/5-machine.PNG" loading="lazy" alt="" ></p> <p>在数据工程和构建大型数据平台以支持数据科学项目方面,Andreas<br>确实是一位专家。</p> <p>他是一位数据工程师和数据科学平台工程师,构建的数据科学平台每天<br>处理和分析海量数据。他是一位常驻德国的数据工程传播者,他经常通过<br>直播视频分享数据工程工具、方法和技能,涵盖从数据科学职业选择<br>的广度到实时的 Apache Spark 编码会议等主题。</p> <span id="6-terry-sejnowski" class="anchor-target"></span><h2 class="heading">6. <strong>Terry Sejnowski</strong> <a class="header-link" href="#6-terry-sejnowski">#</a></h2> <p>加州大学圣迭戈分校最著名的教授,属于生物科学系,也是索尔克研究所<br>的 Francis Crick 教授。他还是霍华德休斯医学研究所的研究员,以及神<br>经网络领域的先驱之一。他对人工智能领域的开创性贡献包括与 Geoffrey<br> Hinton 共同创建 Boltzmann 机。</p> <p><img src="/media/uploads/2021/06/19/6-machine.PNG" loading="lazy" alt="" ></p> <p>由于他在建模和计算大脑功能方面的贡献,他是仅有的十位从 80<br>年代起就被选入所有三个国家科学院(医学、科学和工程)的在世科学家之一。<br>他目前是奥巴马 1 亿美元 BRAIN 计划的顾问,该计划开发用于绘制神经<br>回路的新工具。Terry 因其对学习算法的奉献和贡献,于 1999 年获得<br>国际神经网络学会的 Hebb Prize。事实上,他在 2002 年获得了 IEEE<br>神经网络先驱奖。2017 年,他当选为国家发明家科学院院士。</p> <span id="7-geoffrey-hinton" class="anchor-target"></span><h2 class="heading">7. <strong>Geoffrey Hinton</strong> <a class="header-link" href="#7-geoffrey-hinton">#</a></h2> <p>很难用几句话来概括这些杰出人物的职业生涯,但对于 Hinton 来说,<br>这尤其具有挑战性。三十年前,Hinton 已经对深度学习产生了积极影响,<br>共同创造了 Boltzmann 机、反向传播和对比分歧。然而,直到计算能力<br>能够满足深度学习的需求时,Hinton 才真正开始获得学术界之外更广泛的<br>认可。</p> <p><img src="/media/uploads/2021/06/19/7-machine.PNG" loading="lazy" alt="" ></p> <p>2004 年,他帮助创立了 Neural Computation and Adaptive Perception,<br>这是一个精选的、仅限邀请的专家聚会,汇集了物理学、神经科学和工程学领域<br>的专家。他还创立了 DNNResearch,该公司于去年被 Google 收购。<br>此后,他一直致力于所谓的 Google “大脑”神经网络项目,并为显著改善<br>Google 的图像识别和 Android 的语音识别能力做出了贡献。</p> <span id="8-zoubin-ghahramani" class="anchor-target"></span><h2 class="heading">8. <strong>Zoubin Ghahramani</strong> <a class="header-link" href="#8-zoubin-ghahramani">#</a></h2> <p>Ghahramani 是剑桥大学信息工程学杰出的教授和研究员,也是伦敦大学学院<br>Gatsby 计算神经科学系的兼职教授。他对贝叶斯方法在人工智能、<br>机器学习、统计学、信息检索、生物信息学和计算神经科学领域的贡献。<br>他在马萨诸塞理工学院(MIT)的脑科学与认知科学系获得了博士学位,<br>导师是 Tomaso Poggio 和 Michael I. Jordan。</p> <p><img src="/media/uploads/2021/06/19/8-machine.PNG" loading="lazy" alt="" ></p> <p>他于 2014 年创立了一家名为 Geometric Intelligence 的初创公司,<br>专注于物体/场景识别。后来,Uber 开始采用 Geometric Intelligence,<br>他最终于 2016 年加入了 Uber 的 A.I. Labs。他在机器学习领域发表了<br>250 多篇研究论文,并于 2015 年当选为英国皇家学会会士(FRS)。</p> <p>他最近因“The Automatic Statistician”项目获得了 Google 750,000 美元的资助。<br>该项目由 Ghahramani 主导,探索了广泛的统计模型可能性,以寻找数据的<br>良好解释,然后生成包含图表和自然语言文本的详细报告。</p> <span id="9-yann-lecun" class="anchor-target"></span><h2 class="heading">9. <strong>Yann LeCun</strong> <a class="header-link" href="#9-yann-lecun">#</a></h2> <p>Yann LeCun 是一位法国计算机科学家,主要从事移动机器人、计算机视觉、<br>机器学习领域的研究。他和他的朋友们发明了使图像识别成为可能的卷积神经<br>网络。在他的职业生涯中,Yann 担任 Facebook 的人工智能研究总监。</p> <p>Yann 专注于人工智能及其应用,包括视觉、语音、语言、数据挖掘和生物<br>信息学。此外,Yann 还研究计算机视觉、移动机器人和计算神经科学。</p> <p><img src="/media/uploads/2021/06/19/9-machine_hEabyY.PNG" loading="lazy" alt="" ></p> <p>在 Twitter 上关注他可以收听加拿大广播公司关于深度学习的 45 分钟法语讲座,<br>他说这些讲座很棒,但他也有自己的疑问。有很多关于制造业未来的有趣<br>文章,例如,这些文章是用英语写的。但也有很多法语内容。</p> <span id="10-james-cham" class="anchor-target"></span><h2 class="heading">10. <strong>James Cham</strong> <a class="header-link" href="#10-james-cham">#</a></h2> <p>我认为,从我们的角度来看,目前人工智能的混乱之处在于没有人真正<br>知道他们在做什么。James Cham 保持着真实。</p> <p>James Cham 是风险投资公司 Bloomberg Beta 的合伙人,也是一位早期<br>阶段的风险投资家,专注于新兴工作领域。他努力驱散关于人工智能的<br>一些神话,并揭开一些炒作的面纱。</p> <p>你可以喜欢他对“每个人都关注核心问题,比如机器学习对工作未来的影响,<br>但没有人关注基本执行问题,而这正是人工智能影响工作未来所必需的”<br>的看法。我的博客的目标正是要填补这些空白,并解释公司如何才能真正<br>在当下利用机器学习来改善他们的业务。</p> <p><img src="/media/uploads/2021/06/19/10-machine.PNG" loading="lazy" alt="" ></p> <p>他在“Too Embarrassed to Ask”播客中提出的另一个观点是,一旦我们弄<br>明白了某件事,它就变成了一个新特性。Cham 说,学会烤面包极其困难。<br>人们讨论着一个能完美烤面包的机器人。一旦它成为可能,它就是一个烤面包<br>机,我认为这对于很多技术都是如此。他不经常写作或发推特,但当他<br>接受采访时,是值得你花时间的。</p> <hr> <span id="author-bio" class="anchor-target"></span><h4 class="heading">作者简介 <a class="header-link" href="#author-bio">#</a></h4> <p>资深数据科学家,毕业于印度管理学院(加尔各答),拥有超过 25 年的<br>专业经验。专注于数据科学、人工智能和机器学习。PMP 认证、ITIL<br>专家认证、APMG、PEOPLECERT 和 EXIN 认证培训师,涵盖 ITIL<br>直至专家级的所有模块。已为全球 3000 多名专业人士提供培训。<br>目前正在撰写一本关于 ITIL 的书籍《ITIL 轻松学》。</p> <p><img src="/media/uploads/2021/06/19/ram-2-1.jpg" loading="lazy" alt="" ></p> <p>在多个组织中进行了大量的项目管理和 ITIL 流程咨询。进行了成熟度<br>评估、差距分析、项目管理流程定义以及项目管理最佳实践的端到端实<br>施。社交资料链接。</p> <p>Twitter 账号链接 - <a href="https://twitter.com/ramtavva?s=09" rel="nofollow" >https://twitter.com/ramtavva?s=09</a><br> Facebook 个人资料链接 - <a href="https://#/ram.tavva" rel="nofollow" >https://#/ram.tavva</a><br> LinkedIn 个人资料链接 <a href="https://www.linkedin.com/in/ram-tavva/" rel="nofollow" >https://www.linkedin.com/in/ram-tavva/</a></p>https://overiq.cn/machine-learning-experts-you-should-be-following-online/备考 AP 计算机科学 A 考试的 4 种方法 - 免费教程https://overiq.cn/4-ways-to-prepare-for-the-ap-computer-science-a-exam/<p>AP Computer Science A 是一门课程和考试,为高中生提供获得同等大学<br>计算机科学学期的机会。它主要涵盖基于 Java 编程语言的面向对象程序<br>设计范例的基础知识,如问题检测和解决方案、创建算法以及编程概念。<br>它还介绍了数据概念和抽象过程。</p> <p>如果你想为你的计算机科学大学学位打下坚实的基础,本文将提供一些关于<br>如何最好地准备考试的建议。</p> <span id="training-program-for-ap-computer-science-a-exam" class="anchor-target"></span><h2 class="heading">AP Computer Science A 考试培训计划 <a class="header-link" href="#training-program-for-ap-computer-science-a-exam">#</a></h2> <p>AP Computer Science A 考试的培训计划应该简单、直接,并涵盖计算<br>机编程的这些领域:</p> <ul> <li>计算:在最基本的层面上,你需要建立计算概念之间的联系。</li> <li>抽象:学习如何在建模和计算中应用抽象,这是面向对象编程的关键概念之一。</li> <li>沟通:理解如何就技术和计算的想法进行沟通。技能应用:设计一个解决现实生活问题或执行任务的程序。</li> <li>分析:学习分析计算工作;这对于理解他人的代码或自己的错误至关重要。</li> <li>协作:学习如何团队合作;这是任何程序员的必备技能,同时也有助于学习和成为一名专业人士。</li> </ul> <p>你可以在文章《<a href="https://codegym.cc/groups/posts/ap-computer-science-a-exam">在哪里学习以及如何通过 AP Computer Science A 考试</a>》中找到更多信息。</p> <span id="how-to-prepare-for-the-ap-computer-science-a-practice-test" class="anchor-target"></span><h2 class="heading">如何准备 AP Computer Science A 练习考试? <a class="header-link" href="#how-to-prepare-for-the-ap-computer-science-a-practice-test">#</a></h2> <p>根据 College Board 的官方数据,2020 年约有 70% 的学生获得了及格分数。<br>这是一个不错的百分比,意味着获得及格成绩相对容易。这完全取决于你有多想<br>获得它,以及你愿意付出多少努力来准备。</p> <p>以下是一些为 AP Computer Science A 考试做准备的建议。</p> <span id="1-learn-the-course-framework-and-the-exam-structure" class="anchor-target"></span><h3 class="heading">1. 了解课程框架和考试结构 <a class="header-link" href="#1-learn-the-course-framework-and-the-exam-structure">#</a></h3> <p>你可以在 College Board 的网页上了解课程和考试的结构、框架和指南。<br>它还注明了考试的每个单元在总分中所占的百分比。</p> <p>简而言之,AP Computer Science A 考试时长为三小时;它有两个部分,<br>每个部分各占一半时间,对考试成绩的评分同等重要:</p> <ul> <li>自由回应。这里只有四个问题,但需要广泛的回答。</li> <li>选择题。这里需要在四十道题中选择正确答案。</li> </ul> <p>请注意,还有一个为期一学期的等效课程和考试——AP Computer Science<br>Principles。该考试有两个部分:</p> <ul> <li>选择题。这里你有两个小时的时间回答 70 道题。</li> <li>表现任务。这里你有至少 12 小时的时间来创建一个程序并提供书面和视频回复。</li> </ul> <span id="2-get-familiar-with-the-topics-included-in-both-ap-computer-science-exams" class="anchor-target"></span><h3 class="heading">2. 熟悉 AP Computer Science 两门考试包含的主题 <a class="header-link" href="#2-get-familiar-with-the-topics-included-in-both-ap-computer-science-exams">#</a></h3> <p>AP Computer Science A 考试的培训计划非常简单,因为它涵盖了编程的<br>基本技能,因为该课程本身只需要英语和代数知识。首先,你可以学习课程的<br>主要级别:</p> <p>对于 A 考试:</p> <ul> <li>编写类</li> <li>类型和对象</li> <li>数组</li> <li>布尔表达式</li> <li>递归</li> <li>继承</li> </ul> <p>对于 Principles 考试:</p> <ul> <li>编程中的算法</li> <li>数据</li> <li>创意开发</li> <li>计算系统和网络</li> <li>计算的影响</li> </ul> <span id="3-make-the-preparation-process-more-fun-with-codegym" class="anchor-target"></span><h3 class="heading">3. 让 CodeGym 让准备过程更有趣 <a class="header-link" href="#3-make-the-preparation-process-more-fun-with-codegym">#</a></h3> <p>由于 AP Computer Science 涉及 Java 编程,CodeGym 是一个适合你准备过程的好选择。该平台提供 1200 多个任务,帮助你学习面向对象编程概念和练习 Java 语言。</p> <p>CodeGym 可以通过游戏化的学习环境和大量的实践任务,让你的培训变得有趣和有吸引力。事实上,80% 的 Java 课程是基于实践的。</p> <p>在初级阶段,课程涵盖以下主题:</p> <ul> <li>布尔表达式、if 语句和迭代</li> <li>原始数据类型和使用对象</li> <li>对象介绍:编写对象、它们的生命周期等。</li> <li>编写类和使用构造函数</li> <li>面向对象编程基础</li> <li>数组和 ArrayList</li> </ul> <span id="4-watch-ap-computer-science-videos-on-youtube" class="anchor-target"></span><h3 class="heading">4. 在 YouTube 上观看 AP Computer Science 视频 <a class="header-link" href="#4-watch-ap-computer-science-videos-on-youtube">#</a></h3> <p>你可以通过观看 AP Computer Science 教程视频在 YouTube 上寻求帮助。许多软件工程师和教育工作者都有自己的频道,并乐于分享他们的知识。</p> <p>一些好的例子是:</p> <ul> <li>College Board 频道</li> <li>CS50 讲座</li> <li>来自 Advanced Placement 频道:<ul> <li>33 个 AP Computer Science A 的视频讲座</li> <li>5 个 AP Computer Science Principles 的视频讲座</li> </ul></li> </ul> <span id="conclusion" class="anchor-target"></span><h2 class="heading">结论 <a class="header-link" href="#conclusion">#</a></h2> <p>如果你有一个稳固的计划——一个培训计划——那么 AP Computer Science 考试的培训会更容易。要制定这个计划,首先要了解考试要求的知识和技能,即考试包含哪些单元以及考试结构。</p> <p>然后,学习必要的材料,并在 YouTube 上查找一些视频,以了解真实世界的经验和编程技能。</p> <p>你还可以通过参加提供实践编码经验的实践课程来加强你的培训课程。</p>https://overiq.cn/4-ways-to-prepare-for-the-ap-computer-science-a-exam/为忙碌疲惫的学生提供在线金融作业帮助:从专家那里获取帮助 - 免费教程https://overiq.cn/finance-assignment-online-help-for-the-busy-and-tired-students-get-help-from-experts/<p>对许多学生来说,处理金融作业是一项沉重的负担。它可能很枯燥。它可能包含<br>一次性给出长串的题目,并且逐渐加深你对课程关键概念和思想的理解。</p> <p>金融作业还需要最高程度的注意力集中和良好的专注力。但关键在于——<br>即使你认为自己健忘且缺乏专注力,只要有决心并付出一点耐心来完成<br>写作任务,任何金融作业都是可以解决的。一种久经考验的获得可靠帮助<br>的方法是与学术写作服务合作,例如 APlusEssay.com。在<a href="https://aplusessay.com/finance-assignment-help.html" rel="nofollow" >https://aplusessay.com/finance-assignment-help.html</a>,<br>你将获得金融作业帮助,并能从专家那里获得启发。</p> <p>现在,我们要给出的建议可能与解决其他学科作业的技巧没有根本区别。<br>但如果你认真对待并尝试在自己的学习过程中实践它们,很快就会看到成果。<br>会轻松吗?可能不会。但它可以教你一些宝贵的经验。</p> <p>所以,以下是处理大学金融作业的技巧和窍门。一起来看看吧!</p> <span id="tip-1-make-the-most-of-technology" class="anchor-target"></span><h2 class="heading">技巧 #1。充分利用技术。 <a class="header-link" href="#tip-1-make-the-most-of-technology">#</a></h2> <p>我们多么幸运,如今不再需要用大脑来计算每一个数字。现在,大部分工作<br>都是由移动应用程序和软件完成的,这些软件旨在简化数学运算,<br>并且只在几个阶段涉及人类。像 iMathematics Pro、MathRef 和 Digits<br>这样的应用程序将是解决你许多金融作业的好方法,并能帮你节省时间。</p> <span id="tip-2-get-a-perfect-workplace" class="anchor-target"></span><h2 class="heading">技巧 #2。创造一个完美的工作空间。 <a class="header-link" href="#tip-2-get-a-perfect-workplace">#</a></h2> <p>你通常学习的地方的环境决定了你解决所有必要作业的成功程度以及<br>完成的速度。但这里没有万能公式,因为我们每个人都有自己的偏好和学习<br>风格。有些人习惯在有背景音乐的情况下学习,有些人则需要完全的安静。<br>有些人喜欢保持桌面的整洁有序,而另一些人(“有创造力的人”)<br>则可以容忍混乱。无论你选择什么,都要努力使这个地方鼓舞人心,<br>让你能够轻松地专注于作业并全身心地投入工作。</p> <span id="tip-3-understand-the-task" class="anchor-target"></span><h2 class="heading">技巧 #3。理解任务。 <a class="header-link" href="#tip-3-understand-the-task">#</a></h2> <p>有些人会说,这太简单了?但要认识到在金融学习中的某个任务中具体<br>需要你做什么,是成功的一半。弄清楚你一开始不理解的地方,咨询老师,<br>利用可靠的在线金融作业帮助服务。这个建议有无穷的好处——你可以避免<br>做大量额外的工作,避免失分,专注于学到的材料的较小部分,而不被<br>分散注意力。所以,最好在实际书写任何内容之前,充分了解要做什么。</p> <p>至于专业帮助,今天当没有时间解决所有大学任务时,转向好的服务是<br>很正常的,尤其是当该学科不是你的专业时。要获得金融作业帮助,<br>你只需要写一条信息,如“请帮我做金融作业”,然后选择一个作者来<br>撰写这篇学术论文。是的,最好的方法是自己解决金融作业,但 APlusEssay.com<br>,例如,可以是一个很好的备选方案,一个在线支持团队,可以处理任何<br>类型的学术工作——课程作业、评论、研究提案、方程式等等。</p> <span id="tip-4-set-the-realistic-timing" class="anchor-target"></span><h2 class="heading">技巧 #4。设定现实的时间安排。 <a class="header-link" href="#tip-4-set-the-realistic-timing">#</a></h2> <p>有时,你所有的截止日期都是确定的。但我们何时准备好提交论文并安心<br>休息,这往往取决于我们自己。作为应对学术作业最有效(但也是最被<br>忽视)的方法之一,规划有其特殊的位置,并能让学习过程无压力。<br>想象一下:你对自己的进展有信心,将作业分成可行的部分,过着<br>无懈可击的学生生活,而不是时断时续地工作但仍然做得不够。</p> <p>管理时间和制定计划的技能是一项宝贵的技能,为什么不做金融作业的<br>时候来训练它呢?</p> <span id="tip-5-create-a-reward-stimulus" class="anchor-target"></span><h2 class="heading">技巧 #5。创造奖励刺激。 <a class="header-link" href="#tip-5-create-a-reward-stimulus">#</a></h2> <p>不,这并不是指每读两页就要奖励一根 Twix 巧克力棒。但如果你创造<br>聪明的奖励——例如,第二天一整天和朋友们玩乐,或者做任何能激励<br>你的事情——它仍然可以奏效。实际上,你能够按照指定的时间完成某项<br>工作承诺,这本身就是一个很好的奖励。但这个系统的要点在于对你完成<br>的工作感到满意——创造愉快的联想和记忆会为你提供更多的内在动力来<br>完成它。<br>正如你所见,给出的技巧并不难承受。如果你没有想到帮助你应对<br>金融作业的技巧,我们很乐意免费提供给你,供你愉快使用!</p> <span id="get-finance-assignment-help-today-and-never-regret-it-learning-from-expert-writers-is-worth-it" class="anchor-target"></span><h2 class="heading">立即获取金融作业帮助,永不后悔:向专家学习是值得的 <a class="header-link" href="#get-finance-assignment-help-today-and-never-regret-it-learning-from-expert-writers-is-worth-it">#</a></h2> <p>作为一篇后记,我们想就使用任何金融作业帮助服务——无论是<br>APlusEssay.com 还是其他任何像样的机构——想强调的是你从中获得的<br>学习机会。归根结底,大学里的所有成绩都会被遗忘。毕业文凭一生中<br>很少会被打开。但真正留在你身边的将是技能。经验。<br>所以,不要为了便宜的学术帮助而奔波——使用真实的样本,<br>检查资源的可靠性,并效仿世界上最好的作家,比如 APlusEssay.com<br>上的那些作家。</p>https://overiq.cn/finance-assignment-online-help-for-the-busy-and-tired-students-get-help-from-experts/数据科学家的 9 大机器学习算法 - 免费教程https://overiq.cn/top-9-machine-learning-algorithms-for-data-scientists/对于大多数初学者来说,机器学习算法似乎并没有什么吸引力,学起来也很枯燥。在某种程度上,这倒是实话,但在很多情况下,你可能会遇到每个算法都有几页的描述,要弄清楚每一个细节都会耗费大量时间。如果你有成为机器学习专家的强烈愿望,那么你确实需要巩固相关的知识,因为别无他法。在这篇文章中,我们将用简单的语言介绍 8 种最常见的算法,包括简要概述和一些有用的链接。那么,我们开始吧!

#1 条件随机场 (CRFs) #

这种算法用于模拟 RNN 的序列,可以与 RNN 算法结合使用。它们还可以用于各种结构化预测任务,例如图像分割。该算法对序列中的每个元素进行建模,以便邻居会影响序列中的组件标签,而所有标签并非相互独立。你可以将 CRF 用于文本、图像、时间序列和 DNA 中的序列序列。

有用的网站:

详细指南:

#2 卷积神经网络 #

实际上,机器学习领域的绝大多数现代成就都是通过卷积神经网络实现的,它用于图像分类、图像分割和对象检测。它由 Jan Lekun 在 90 年代初发明,网络包含作为分层对象提取器的卷积层。你可以用它来处理文本,甚至处理图形。

有用的网站:

详细指南:

#3 主成分分析 (PCA)/SVD #

这是最重要的机器学习算法之一,它允许你在丢失信息量的情况下降低数据的维度。该算法在许多领域都有应用,如对象识别、计算机视觉、数据压缩等等。主成分的计算归结为计算原始数据的协方差矩阵的特征值和特征向量,以及数据矩阵的奇异分解。你可以用一个来表达多个信号,合并、沟通并处理一个更简单的模型。当然,信息损失是不可避免的,但 PCA 方法可以帮助你将其最小化。SVD 是计算有序分量的方法。

有用的网站:

详细指南:

#4 决策树 #

这是最常见的机器学习算法之一,在统计和数据分析中用于预测模型。该结构代表叶子和分支。目标函数的属性很大程度上取决于决策树的分支,其中目标函数的值存储在叶子中,其余节点包含案例不同的属性。为了对新案例进行分类,你需要沿着树向下走到叶子,并给出相应的值。最终目标是创建一个模型,根据几个输入变量来预测目标变量的值。

有用的网站:

详细指南:

#5 前馈神经网络 (FFNN) #

总的来说,存在单元级别的逻辑回归分类器。多个尺度的层通过非线性函数(如 sigmoid、tanh、新的 cool selu 和 relu + softmax)分隔。它们也被称为多层感知器,因为 FFNN 可以用于分类和无监督学习(如自动编码器)。该算法可用于训练分类器或提取函数(如自动编码器)。

有用的网站:

详细指南:

#6 K-Means 聚类 #

这是每个人最喜欢的无监督聚类算法。K-Means 算法是其经典实现中最简单但又不准确的聚类方法。该方法将中心空间中的元素集分成预先知道的 k 个簇。该算法最小化每个簇中点的标准偏差。这里基本思想是,在每次迭代中,都会重新计算前一步得到的每个簇的质心。然后,向量会根据新质心在选定度量下的接近程度再次划分到簇中。

有用的网站:

详细指南:

#7 逻辑回归 #

它仅限于线性回归,在应用权重后具有非线性,因此输出限制接近 1 和 0(在 sigmoid 的情况下)。此外,交叉熵损失函数使用梯度下降法进行优化。逻辑回归用于分类而不是回归。它与单层神经网络相同,当使用梯度下降或 L-BFGS 等优化技术进行学习时,它被称为“最大熵分类方法”。

有用的网站:

详细指南:

#8 支持向量机 (SVM) #

它是一种线性模型,类似于线性回归和逻辑回归。它们之间的区别在于它具有基于裕度(margin)的损失函数,你可以使用优化方法(即 SGD 或 L-BFGS)来优化损失函数。SVM 最独特之处在于它可以学习分类器,因为它可用于训练分类器甚至回归器。

有用的网站:

详细指南:

#9 循环神经网络 (RNNs) #

该模型通过在时间 t 递归地应用相同的权重集和聚合器在时间 t 的输入来处理序列。纯粹的循环神经网络现在很少使用,但其类似物却很常见。例如,LSTM 和 GRU 是大多数序列建模问题中最先进的模型。LSTM 用于替代纯 RNN 中的简单密集层。将此网络用于任何文本分类、机器翻译和语言建模任务。

有用的网站:

详细指南:

前路漫漫 #

听起来可能令人不快,但你必须尝试许多不同的算法,并通过将它们应用于每个测试数据集来检查它们的有效性,从而选择最佳选项。这是一个显而易见的任务,你需要从与你的任务相匹配的算法中进行选择。所以,请耐心等待,不要急于求成。继续学习!

作者简介:

Ava Barker 担任 Tatvasoft UK 的技术顾问。她拥有技术背景,喜欢分享她在开发、设计等方面的见解。她还在许多不同的在线出版物上发表过她的作者署名。

https://overiq.cn/top-9-machine-learning-algorithms-for-data-scientists/
数据科学学习路径或成为数据科学家的步骤(最终版) - 免费教程https://overiq.cn/data-science-learning-path-or-steps-to-become-a-data-scientist-final/

目前市场上优质数据科学家的数量严重不足(来源)。IBM预测到 2020 年,数据科学家市场的需求将增长 28%。这意味着数据科学家的空间还很大。

我们每天生产 25 亿 GB 的数据,随着物联网的进步,这个数字还会增加。当今世界需要更多能够玩转数据的人才。由于缺乏能够从海量信息中提取有价值见解的熟练数据科学劳动力,企业未能充分利用其收集到的数据。

在美国,错误数据每年造成的成本高达 3 万亿美元。另一方面,智能利用收集到的数据可以显著提高组织的收入和生产力(来源)。

图片来源:Statista

数据科学家的平均年薪超过 11.5 万美元(来源)。你想填补供需缺口吗?在本文中,我们将揭示有助于您成为一名熟练的数据科学家的步骤。

成为数据科学家的步骤 #

数据科学家负责使用各种统计和机器学习工具和技术,以有意义的方式提取、筛选和解释数据。以下是您需要遵循的成为数据科学家的步骤:

  1. 您是否满足申请工作的基本要求?

    寻找数据科学家职位的公司需要一定的学位。这是一个数据科学家职位空缺的例子。

    图片来源:Indeed

    市场上大多数工作都要求您至少拥有相关领域(如计算机科学、统计学、应用数学等)的学士学位。如果您拥有相关学位,您将有资格申请大多数职位。如果您关注薪资范围,您会发现即使是入门级职位,年薪也超过 9.5 万美元。

  2. 了解数据科学的各个方面

    提前了解自己在成为数据科学家的道路上会遇到什么至关重要。对数据科学家的职责和责任进行一些研究。之后,您需要选择工具和编程语言。目前,R 和 Python 是数据科学领域中最受青睐的两种编程语言。我推荐Python 培训,因为它的学习和灵活性都很容易。

    图片来源:Stack Overflow

  3. 掌握基础数学和统计学知识

    要成为一名优秀的数据科学家,您必须掌握基础数学和统计学的核心知识。您可以使用工具执行计算。但是,如果没有扎实的数学和统计学基础,您将无法有效地履行您的职责。

    数据科学家在工作中需要频繁使用统计方法(描述性和推理性分析)和数值解(线性代数)。您还应该热衷于解决问题,运用逻辑,因为这正是您将在职业生涯中所做的事情。

  4. 是时候学习一些基础的机器学习了

    机器学习在数据科学中起着重要作用。机器学习知识可以帮助您在职业生涯中取得巨大成就。起初,您应该只获得必要的机器学习知识,以便在工作中能够执行更深入的应用。

    Python 编程语言在执行机器学习应用方面也很流行。许多专业人士倾向于使用 Python 实现机器学习。由于其全面的应用,学习 Python 是更好的选择。您可以通过 Python 涉足 Web 应用程序、游戏开发等领域。

  5. 深入研究机器学习应用

    在对机器学习有了扎实的基础后,您可以深入研究可以在工作中应用的机器学习应用。您可以学习一些高级应用,例如提升算法、时间序列方法、随机森林、集成学习等。在算法之后,您应该知道如何改进模型并通过诸如验证策略和特征工程之类的技巧来引入新的预测模型。

    您可以使用机器学习来产生准确的结果,并使用数据驱动的模型来实时处理数据。

  6. 掌握一些深度学习概念

    在对机器学习有了扎实的掌握后,是时候开始学习深度学习了。深度学习是机器学习的组成部分。扎实的深度学习知识可以显著增加您作为数据科学家的价值。起初,您应该只对深度学习有一个基本的了解,例如神经网络。此外,可以开始尝试 Keras。

    图片来源:Machine Learning Mastery

  7. 深入研究高级深度学习应用

    在对机器学习和深度学习有了扎实的基础后,您现在可以开始学习高级神经网络框架了。需要关注的神经网络框架是卷积神经网络和循环神经网络。您需要一些时间来理解这些概念。我建议您在学习这些高级深度学习概念时保持耐心。您可能需要投入几周的时间来掌握它们。

  8. 学习计算机视觉应用

    计算机视觉应用是一项热门技术。它已渗透到制造业、零售业、建筑业等不同行业。这些技术的一些例子是像 MobileNet 这样的面部检测技术,像 ResNet 这样的对象识别技术,等等。

    数据科学家可以使用这些技术从图像、对象等中提取有用的见解。您将获得更多需要计算机视觉应用的任务。

  9. 自然语言处理

    最后,您需要学习自然语言处理来磨练您作为数据科学家的技能。您至少应该对文本预处理和文本分类等概念有一个基本的了解。

我该如何开始学习所有这些概念和技能? #

我们已经分解了成为数据科学家的步骤。但是,有些人可能对如何开始学习我上面提到的所有内容感到困惑。在当今时代,学习任务并不难。信息触手可及。有大量优质资源可供免费或以合理的价格访问。

电子学习行业的市场规模预计到 2025 年将增长到 3250 亿美元。您需要做的就是找到合适的文章、视频和课程来注册并开始学习。

轮到你了 #

如果您已阅读到文章的这个部分,那么您应该清楚接下来该做什么。您需要遵循我提到的步骤来成为一名数据科学专业人士。每一个步骤都需要大量的时间和精力。

在投身数据科学领域之前,您必须决定您是否想成为一名数据科学家。不要仅仅因为丰厚的薪酬而进入数据科学领域。如果您有任何要补充的,请随时在评论部分留下您的意见。我很想知道您的想法。

https://overiq.cn/data-science-learning-path-or-steps-to-become-a-data-scientist-final/
在 Linux Mint 19 和 Ubuntu 18.04 中为 Shutter 启用编辑按钮 - 免费教程https://overiq.cn/enable-edit-button-in-shutter-in-linux-mint-19-and-ubuntu-18-04/

Shutter 是一款屏幕截图软件。它可以让你截取特定区域、窗口甚至整个屏幕的截图。

Shutter 还带有一些编辑工具,但这些工具默认情况下是禁用的。要启用这些工具,我们需要安装一些额外的软件包。

本文中提到的所有说明都在 Linux Mint 19 和 Ubuntu 18.04 上进行了测试。

让我们开始吧!

启用“编辑”按钮 #

如上图所示,“编辑”按钮是禁用的。要启用“编辑”按钮,您需要以下三个软件包:

  1. libgoo-canvas-perl
  2. libgoocanvas-common
  3. libgoocanvas3

我们可以从以下链接下载这些软件包:

  1. https://launchpad.net/ubuntu/+source/libgoo-canvas-perl
  2. https://launchpad.net/ubuntu/xenial/amd64/libgoocanvas-common/1.0.0-1
  3. https://launchpad.net/ubuntu/bionic/amd64/libgoocanvas3/1.0.0-1

如果您倾向于使用命令行,可以使用wget命令如下下载所有这些软件包:

1 2 3
wget -q http://mirrors.kernel.org/ubuntu/pool/universe/g/goocanvas/libgoocanvas-common_1.0.0-1_all.deb wget -q http://mirrors.kernel.org/ubuntu/pool/universe/g/goocanvas/libgoocanvas3_1.0.0-1_amd64.deb wget -q http://mirrors.kernel.org/ubuntu/pool/universe/libg/libgoo-canvas-perl/libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb 

下载所有必需的软件包后,使用以下命令安装它们:

sudo dpkg -i libgoocanvas-common_1.0.0-1_all.deb ; sudo apt-get -f install ; sudo dpkg -i libgoocanvas3_1.0.0-1_amd64.deb ; sudo apt-get -f install; sudo dpkg -i libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb ; sudo apt-get -f install 

现在终止 Shutter 的任何正在运行的实例,然后重新启动它。

sudo killall shutter 

您现在应该已经启用了“编辑”按钮。

在 Linux Mint 17、18 或 Ubuntu 16.04 上启用“编辑”按钮 #

要在 Linux Mint 17、18 或 Ubuntu 16.04 上启用“编辑”按钮,修复相对简单。您所要做的就是使用以下命令安装libgoo-canvas-perl

sudo apt-get install libgoo-canvas-perl 

启用“Web”按钮 #

与“编辑”按钮一样,“Web”按钮默认也是禁用的。“Web”按钮允许我们通过提供 URL 来截取网站的屏幕截图。

要启用“Web”按钮,我们需要一个名为gnome-web-photo的软件包。从以下链接下载 gnome-web-photo:[

https://launchpad.net/ubuntu/+source/gnome-web-photo/0.10.6-1/+build/5854031

或者,只需执行以下命令下载gnome-web-photo软件包。

wget -q https://launchpad.net/ubuntu/+source/gnome-web-photo/0.10.6-1/+build/5854031/+files/gnome-web-photo_0.10.6-1_amd64.deb 

下载完软件包后,输入以下命令进行安装:

1 2
sudo dpkg -i gnome-web-photo_0.10.6-1_amd64.deb sudo apt-get -f install 

终止 Shutter 的任何正在运行的实例并重新启动该应用程序。“Web”按钮现在应该已启用。

重新启动 Shutter,现在您应该可以截取网站的屏幕截图了。

接下来,我们将介绍如何在 Shutter 上启用“Web”按钮。

在 Linux Mint 17、18 或 Ubuntu 16.04 上启用“Web”按钮 #

要在 Linux Mint 17、18 或 Ubuntu 17.06 上安装gnome-web-photo,只需执行以下命令:

sudo apt-get install gnome-web-photo 

就这样。

在评论中告诉我们这个技巧对您是否有帮助。

https://overiq.cn/enable-edit-button-in-shutter-in-linux-mint-19-and-ubuntu-18-04/
Python 3 time 模块 - 免费教程https://overiq.cn/python-3-time-module/<p>The <code>time</code> module provides a number of time-related functions. Most of the functions found in this module call the platform C library functions behind the scenes with the same name.</p> <p>To import the <code>time</code> module enter the following command:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">time</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="unix-epoch-time" class="anchor-target"></span><h2 class="heading">Unix Epoch Time <a class="header-link" href="#unix-epoch-time">#</a></h2> <p>Most modern computers store dates and times as a difference of seconds between January 1, 1970 00:00:00 UTC and the time to be stored (also in UTC). We call this difference Unix timestamp or Unix epoch time or simply timestamp. For example, date and time &quot;11 July 2018 22:52:42&quot; in UTC can be represented as timestamp <code>1531329762</code>.</p> <p>In the following sections, we discuss some common attributes and functions of the <code>time</code> module.</p> <span id="time-function" class="anchor-target"></span><h2 class="heading">time() function <a class="header-link" href="#time-function">#</a></h2> <p><strong>Syntax:</strong> <code>time() -&gt; floating point number</code></p> <p>The <code>time()</code> function returns the number of seconds passed since January 1, 1970 00:00:00 UTC as a floating point number.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">()</span> <span class="go">1531326753.9201949</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="localtime-function" class="anchor-target"></span><h2 class="heading">localtime() function <a class="header-link" href="#localtime-function">#</a></h2> <p><strong>Syntax:</strong> <code>localtime([seconds]) -&gt; (tm_year,tm_mon,tm_mday,tm_hour,tm_min,<br> tm_sec,tm_wday,tm_yday,tm_isdst)</code></p> <p>Converts the specified Unix timestamp to local time. If the <code>seconds</code> argument not passed in, it uses timestamp returned by the <code>time()</code> function. This function returns a <code>time.struct_time</code> object with the following attributes.</p> <div style="overflow-x:auto"><table class="table table-bordered table-hover table-condensed"><thead> <tr> <th>Attribute</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>tm_year</code></td> <td>year</td> </tr> <tr> <td><code>tm_mon</code></td> <td>month of year (1-12)</td> </tr> <tr> <td><code>tm_mday</code></td> <td>day of month (1-31)</td> </tr> <tr> <td><code>tm_hour</code></td> <td>hour (1-23)</td> </tr> <tr> <td><code>tm_min</code></td> <td>minutes (0-59)</td> </tr> <tr> <td><code>tm_sec</code></td> <td>seconds (0-59)</td> </tr> <tr> <td><code>tm_wday</code></td> <td>day of week (0-6) (Sunday = 0, Monday = 1 and so on)</td> </tr> <tr> <td><code>tm_yday</code></td> <td>day of year (0-365), also known as julian day</td> </tr> <tr> <td><code>tm_isday</code></td> <td>daylight saving flag (0, 1 or -1). A value of <code>1</code> indicates that the daylight savings is in effect, 0 if daylight savings is not in effect and <code>-1</code> if the information is not available.</td> </tr> </tbody> </table></div> <p>The <code>time.struct_time</code> object is also commonly known as <strong>timetuple</strong>.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">(</span><span class="mi">1200000000</span><span class="p">)</span> <span class="c1"># convert the timestamp 1200000000 to local time</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt1</span> <span class="go">time.struct_time(tm_year=2008, tm_mon=1, tm_mday=11, tm_hour=2, </span> <span class="go">tm_min=50, tm_sec=0, tm_wday=4, tm_yday=11, tm_isdst=0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">()</span> <span class="c1"># convert timestamp returned by time() to local time</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=7, tm_mday=11, tm_hour=22, </span> <span class="go">tm_min=3, tm_sec=3, tm_wday=2, tm_yday=192, tm_isdst=0)</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>Once you have access to timetuple you can access values inside it either by index or attribute name. For example:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="o">.</span><span class="n">tm_year</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_mon</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_mday</span> <span class="go">(2018, 7, 12)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">2</span><span class="p">]</span> <span class="c1"># same as: lt2.tm_year, lt2.tm_mon, lt2.tm_mday</span> <span class="go">(2018, 7, 12)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="o">.</span><span class="n">tm_hour</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_min</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_sec</span> <span class="go">(0, 3, 40)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="c1"># same as: lt2.tm_hour, lt2.tm_min, lt2.tm_sec</span> <span class="go">(0, 3, 40)</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="o">.</span><span class="n">tm_wday</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_yday</span><span class="p">,</span> <span class="n">lt2</span><span class="o">.</span><span class="n">tm_isdst</span> <span class="go">(3, 193, 0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lt2</span><span class="p">[</span><span class="mi">6</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">7</span><span class="p">],</span> <span class="n">lt2</span><span class="p">[</span><span class="mi">8</span><span class="p">]</span> <span class="c1"># same as: lt2.tm_wday, lt2.tm_yday, lt2.tm_isdst</span> <span class="go">(3, 193, 0)</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="gmtime-function" class="anchor-target"></span><h2 class="heading">gmtime() function <a class="header-link" href="#gmtime-function">#</a></h2> <p><strong>Syntax:</strong> <code>gmtime([seconds]) -&gt; (tm_year,tm_mon,tm_mday,tm_hour,tm_min,<br> tm_sec,tm_wday,tm_yday,tm_isdst)</code></p> <p>Works exactly like <code>localtime()</code> but the converts the specified timestamp to UTC instead of local time. If the <code>seconds</code> argument not passed in, it uses timestamp returned by the <code>time()</code> function.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm1</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">gmtime</span><span class="p">(</span><span class="mi">1200000000</span><span class="p">)</span> <span class="c1"># convert timestamp 1200000000 to UTC time</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm1</span> <span class="go">time.struct_time(tm_year=2008, tm_mon=1, tm_mday=10, tm_hour=21, </span> <span class="go">tm_min=20, tm_sec=0, tm_wday=3, tm_yday=10, tm_isdst=0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm2</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">gmtime</span><span class="p">()</span> <span class="c1"># convert timestamp returned by time() to UTC time</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm2</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=7, tm_mday=12, tm_hour=8, </span> <span class="go">tm_min=5, tm_sec=38, tm_wday=3, tm_yday=193, tm_isdst=0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm2</span><span class="o">.</span><span class="n">tm_year</span><span class="p">,</span> <span class="n">gm2</span><span class="o">.</span><span class="n">tm_mon</span><span class="p">,</span> <span class="n">gm2</span><span class="o">.</span><span class="n">tm_mday</span><span class="p">,</span> <span class="n">gm2</span><span class="o">.</span><span class="n">tm_hour</span><span class="p">,</span> <span class="n">gm2</span><span class="o">.</span><span class="n">tm_min</span><span class="p">,</span> <span class="n">gm2</span><span class="o">.</span><span class="n">tm_sec</span> <span class="go">(2018, 7, 12, 8, 22, 36)</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">gm1</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">gm1</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">gm1</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">gm1</span><span class="p">[</span><span class="mi">3</span><span class="p">],</span> <span class="n">gm1</span><span class="p">[</span><span class="mi">4</span><span class="p">],</span> <span class="n">gm1</span><span class="p">[</span><span class="mi">5</span><span class="p">]</span> <span class="go">(2008, 1, 10, 21, 20, 0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="mktime-function" class="anchor-target"></span><h2 class="heading">mktime() function <a class="header-link" href="#mktime-function">#</a></h2> <p><strong>Syntax:</strong> <code>mktime(timetuple) -&gt; floating point number</code></p> <p>This is the opposite of <code>localtime()</code> function. It accepts a timetuple representing local time and returns the number of seconds passed since January 1, 1970 00:00:00 UTC.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">timestamp</span><span class="p">,</span> <span class="n">timetuple</span> <span class="o">=</span> <span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">(),</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">()</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">timestamp</span><span class="p">,</span> <span class="n">timetuple</span> <span class="go">(1531384941.615937, time.struct_time(tm_year=2018, tm_mon=7, tm_mday=12, </span> <span class="go">tm_hour=14, tm_min=12, tm_sec=21, tm_wday=3, tm_yday=193, tm_isdst=0))</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">mktime</span><span class="p">(</span><span class="n">timetuple</span><span class="p">)</span> <span class="go">1531384941.0</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="sleep-function" class="anchor-target"></span><h2 class="heading">sleep() function <a class="header-link" href="#sleep-function">#</a></h2> <p><strong>Syntax:</strong> <code>sleep(seconds)</code></p> <p>This function suspends the process execution for the specified number of seconds.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">5</span><span class="p">):</span> <span class="gp">... </span> <span class="n">time</span><span class="o">.</span><span class="n">sleep</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span> <span class="gp">... </span> <span class="k">print</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">time</span><span class="p">())</span> <span class="gp">... </span> <span class="go">1531391820.9281697</span> <span class="go">1531391825.9332898</span> <span class="go">1531391830.9384072</span> <span class="go">1531391835.9435263</span> <span class="go">1531391840.9486341</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>If you run the preceding code interactively, you will find that the for loop prints the timestamp after every 5 seconds.</p> <span id="ctime-function" class="anchor-target"></span><h2 class="heading">ctime() function <a class="header-link" href="#ctime-function">#</a></h2> <p><strong>Syntax:</strong> <code>ctime([seconds]) -&gt; string</code></p> <p>Converts the timestamp to a string representation in local time. If <code>seconds</code> argument not specified or <code>None</code>, it uses timestamp returned by <code>time()</code>.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">()</span> <span class="go">&#39;Thu Jul 12 16:18:51 2018&#39;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">(</span><span class="bp">None</span><span class="p">)</span> <span class="go">&#39;Thu Jul 12 16:18:54 2018&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">(</span><span class="mi">1290000000</span><span class="p">)</span> <span class="go">&#39;Wed Nov 17 18:50:00 2010&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="asctime-function" class="anchor-target"></span><h2 class="heading">asctime() function <a class="header-link" href="#asctime-function">#</a></h2> <p><strong>Syntax:</strong> <code>asctime([timetuple]) -&gt; string</code></p> <p>Converts the specified <code>timetuple</code> to a string representation in local time. If the <code>timetuple</code> is not specified, it uses current time returned by the <code>localtime()</code> function.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">()</span> <span class="go">&#39;Thu Jul 12 16:57:53 2018&#39;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">())</span> <span class="c1"># same as time.asctime()</span> <span class="go">&#39;Thu Jul 12 16:58:03 2018&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">asctime</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">(</span><span class="mi">1230000000</span><span class="p">))</span> <span class="go">&#39;Tue Dec 23 08:10:00 2008&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="strftime-function" class="anchor-target"></span><h2 class="heading">strftime() function <a class="header-link" href="#strftime-function">#</a></h2> <p><strong>Syntax:</strong> <code>strftime(format[, timetuple]) -&gt; string</code></p> <p>The <code>strftime()</code> function converts the <code>timetuple</code> to a string representation. It takes two arguments, <code>format</code> and an optional <code>timetuple</code>, and returns string according to the format codes used in the first argument. If <code>timetuple</code> not specified, it uses current time returned by the <code>localtime()</code> function.</p> <p>The following table lists some common format codes:</p> <div style="overflow-x:auto"><table class="table table-bordered table-hover table-condensed"><thead> <tr> <th>Format Code</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>%d</code></td> <td>Day of the month</td> </tr> <tr> <td><code>%H</code></td> <td>hours in 12-hour format</td> </tr> <tr> <td><code>%I</code></td> <td>hours in 24-hour format</td> </tr> <tr> <td><code>%M</code></td> <td>minutes</td> </tr> <tr> <td><code>%S</code></td> <td>seconds</td> </tr> <tr> <td><code>%p</code></td> <td>A.M. or P.M. (depends upon locale)</td> </tr> <tr> <td><code>%m</code></td> <td>month number</td> </tr> <tr> <td><code>%w</code></td> <td>weekday</td> </tr> <tr> <td><code>%y</code></td> <td>2 digit year</td> </tr> <tr> <td><code>%Y</code></td> <td>4 digit year</td> </tr> <tr> <td><code>%Z</code></td> <td>Timezone name</td> </tr> <tr> <td><code>%x</code></td> <td>Date representation according to locale</td> </tr> <tr> <td><code>%X</code></td> <td>Time representation according to locale</td> </tr> <tr> <td><code>%b</code></td> <td>Locale’s abbreviated month name</td> </tr> <tr> <td><code>%B</code></td> <td>Locale’s full month name</td> </tr> <tr> <td><code>%a</code></td> <td>Locale’s abbreviated weekday name</td> </tr> </tbody> </table></div><div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%Y/%m/</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span> <span class="go">&#39;2018/07/12&#39;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%H:%m:</span><span class="si">%d</span><span class="s2">&quot;</span><span class="p">)</span> <span class="go">&#39;18:07:12&#39;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;%a %B </span><span class="si">%d</span><span class="s2"> %Y %H:%I:%S %p&quot;</span><span class="p">)</span> <span class="go">&#39;Thu July 12 2018 18:06:46 PM&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%x</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">(</span><span class="mi">1230000000</span><span class="p">))</span> <span class="go">&#39;12/23/08&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strftime</span><span class="p">(</span><span class="s2">&quot;</span><span class="si">%X</span><span class="s2">&quot;</span><span class="p">,</span> <span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">(</span><span class="mi">1230000000</span><span class="p">))</span> <span class="go">&#39;08:10:00&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="strptime-function" class="anchor-target"></span><h2 class="heading">strptime() function <a class="header-link" href="#strptime-function">#</a></h2> <p><strong>Syntax:</strong> <code>strptime(string, format) -&gt; struct_time</code></p> <p>The <code>strptime()</code> function lets you convert date string to a timetuple according to the format string <code>format</code>. By default, the <code>format</code> argument is set to <code>&#39;%a %b %d %H:%M:%S %Y&#39;</code>. This is the same format as produced by the <code>ctime()</code> function. If the <code>string</code> and <code>format</code> do not match it raises <code>ValueError</code> exception.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="n">time</span><span class="o">.</span><span class="n">ctime</span><span class="p">())</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=7, tm_mday=12, tm_hour=19, </span> <span class="go">tm_min=6, tm_sec=3, tm_wday=3, tm_yday=193, tm_isdst=-1)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="s1">&#39;11-01-2018&#39;</span><span class="p">,</span> <span class="s2">&quot;</span><span class="si">%d</span><span class="s2">-%m-%Y&quot;</span><span class="p">)</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=1, tm_mday=11, tm_hour=0, </span> <span class="go">tm_min=0, tm_sec=0, tm_wday=3, tm_yday=11, tm_isdst=-1)</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="s1">&#39;Mon, 01 Dec 2018&#39;</span><span class="p">,</span> <span class="s2">&quot;%a, %m %b %Y&quot;</span><span class="p">)</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, </span> <span class="go">tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="s1">&#39;01-Dec-2018&#39;</span><span class="p">,</span> <span class="s2">&quot;%m-%b-%Y&quot;</span><span class="p">)</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=1, tm_mday=1, tm_hour=0, </span> <span class="go">tm_min=0, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">strptime</span><span class="p">(</span><span class="s1">&#39;01-Dec-2018&#39;</span><span class="p">,</span> <span class="s2">&quot;%m-%b-%y&quot;</span><span class="p">)</span> <span class="c1"># string and format do not match, thus ValueError is raised</span> <span class="gp">...</span> <span class="go">ValueError: unconverted data remains: 18</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="tzname-attribute" class="anchor-target"></span><h2 class="heading">tzname attribute <a class="header-link" href="#tzname-attribute">#</a></h2> <p>The <code>tzname</code> attribute returns a tuple containing two values: name of the local time zone and name of the local daylight saving time zone (if defined).</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">tzname</span> <span class="go">(&#39;SGT&#39;, &#39;SGT&#39;)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>As you can see, my default time zone is set to Asia/Singapore. To determine the offset between UTC and local time we use the <code>timezone</code> attribute.</p> <span id="timezone-attribute" class="anchor-target"></span><h2 class="heading">timezone attribute <a class="header-link" href="#timezone-attribute">#</a></h2> <p>The <code>timezone</code> attribute returns the difference between the UTC time and local time in seconds.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">timezone</span> <span class="go">-28800</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">timezone</span><span class="o">/</span><span class="mi">3600</span> <span class="c1"># difference between UTC time and localtime in hours</span> <span class="go">-8.0</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This means that the Asia/Singapore time zone is 8 hours (or 28800 seconds) ahead of UTC.</p> <span id="tzset-function" class="anchor-target"></span><h2 class="heading">tzset() function <a class="header-link" href="#tzset-function">#</a></h2> <p>The <code>tzset()</code> function changes the local time zone to the value stored in the <code>TZ</code> environment variable.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">tzname</span> <span class="c1"># initial time zone</span> <span class="go">(&#39;SGT&#39;, &#39;SGT&#39;)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">import</span> <span class="nn">os</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;TZ&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;Europe/Moscow&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">tzset</span><span class="p">()</span> <span class="c1"># change time zone</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">tzname</span> <span class="c1"># local time zone is now changed to Moscow</span> <span class="go">(&#39;MSK&#39;, &#39;MSK&#39;)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>My default time zone is changed for the session. If you now call the <code>localtime()</code> function, it will return the local time of Moscow.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">time</span><span class="o">.</span><span class="n">localtime</span><span class="p">()</span> <span class="go">time.struct_time(tm_year=2018, tm_mon=7, tm_mday=12, tm_hour=20, </span> <span class="go">tm_min=0, tm_sec=27, tm_wday=3, tm_yday=193, tm_isdst=0)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div>https://overiq.cn/python-3-time-module/Pygments 教程 - 免费教程https://overiq.cn/pygments-tutorial/<p>Pygments is a very popular and robust Python package to highlight code snippets. Many well-known sites like Wikipedia, BitBucket, Read the Docs etc. are using it. Here are some of the features of Pygments:</p> <ul> <li>Supports a wide range of languages and markup formats.</li> <li>New language and markup can be added easily. </li> <li>Can use used as library or command line utility</li> <li>A number of output formats are available, like HTML, RTF, Latex etc.</li> </ul> <p>To install Pygments enter the following command:</p> <div class="codeblock language-bash"><div class="highlight"><pre><span></span>$ pip install pygments </pre></div> </div><span id="highlighting-using-pygments" class="anchor-target"></span><h2 class="heading">Highlighting using Pygments <a class="header-link" href="#highlighting-using-pygments">#</a></h2> <p>To highlight a code snippet using Pygments we follow these steps:</p> <ol> <li>Select lexer.</li> <li>Select the output format.</li> <li>Call the <code>highlight()</code> function.</li> </ol> <p>Let&#39;s go through each step in detail.</p> <span id="selecting-the-lexer" class="anchor-target"></span><h2 class="heading">Selecting the lexer <a class="header-link" href="#selecting-the-lexer">#</a></h2> <p>A lexer is a program which performs the lexical analysis. In other words, it splits the code into tokens (identifier, keyword, literal etc). Every language or markup has its own lexer. To select the lexer use <code>get_lexer_by_name()</code> function from the <code>pygments.lexers</code> package. It takes a single argument named alias which is name of the lexer. For example, to select the lexer for Python do this:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pygments</span> <span class="kn">import</span> <span class="n">lexers</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lexers</span><span class="o">.</span><span class="n">get_lexer_by_name</span><span class="p">(</span><span class="s2">&quot;python&quot;</span><span class="p">)</span> <span class="go">&lt;pygments.lexers.PythonLexer&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>We can see all the available lexers using the <code>get_all_lexers()</code> function:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="n">lexers</span><span class="o">.</span><span class="n">get_all_lexers</span><span class="p">())</span> <span class="go">[(&#39;Transact-SQL&#39;, (&#39;tsql&#39;, &#39;t-sql&#39;), (&#39;*.sql&#39;,), (&#39;text/x-tsql&#39;,)), (&#39;Termcap&#39;, (&#39;termcap&#39;,), (&#39;termcap&#39;, &#39;termcap.src&#39;), ()), (&#39;Snowball&#39;, (&#39;snowball&#39;,), (&#39;*.sbl&#39;,), ()), (&#39;Elm&#39;, (&#39;elm&#39;,), (&#39;*.elm&#39;,), (&#39;text/x-elm&#39;,)), (&#39;IRC logs&#39;, (&#39;irc&#39;,), (&#39;*.weechatlog&#39;,), (&#39;text/</span> <span class="gp">...</span> <span class="go">(&#39;pycon&#39;,), (), (&#39;text/x-python-doctest&#39;,)), (&#39;BBCode&#39;, (&#39;bbcode&#39;,), (), (&#39;text/x-bbcode&#39;,))]</span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="selecting-the-formatter" class="anchor-target"></span><h2 class="heading">Selecting the Formatter <a class="header-link" href="#selecting-the-formatter">#</a></h2> <p>Once you have selected the lexer, the next step is to select the Formatter. The Formatter&#39;s job is to take a token stream from the lexer and writes the output, in the format such as HTML, LaTex, RTF, BBCode etc. To see the available formats use the <code>get_all_formatters()</code> function from the <code>pygments.formatters</code> package.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pygments.formatters</span> <span class="kn">import</span> <span class="n">get_all_formatters</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="n">get_all_formatters</span><span class="p">())</span> <span class="go">[&lt;class &#39;pygments.formatters.img.JpgImageFormatter&#39;&gt;, </span> <span class="go">&lt;class &#39;pygments.formatters.rtf.RtfFormatter&#39;&gt;, </span> <span class="gp">...</span> <span class="go">&lt;class &#39;pygments.formatters.svg.SvgFormatter&#39;&gt;, </span> <span class="go">&lt;class &#39;pygments.formatters.html.HtmlFormatter&#39;&gt;, </span> <span class="go">&lt;class &#39;pygments.formatters.irc.IRCFormatter&#39;&gt;, </span> <span class="go">&lt;class &#39;pygments.formatters.img.BmpImageFormatter&#39;&gt;]</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>In our case, we are interested in outputting code snippet in HTML. As a result, we will use, <code>HtmlFormatter</code> (third from the last in preceding output). To use <code>HtmlFormatter</code>, import it from <code>pygments.formatters</code> and then instantiate it as follows:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pygments.formatters</span> <span class="kn">import</span> <span class="n">HtmlFormatter</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">()</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div><span id="highlighting-code" class="anchor-target"></span><h2 class="heading">Highlighting Code <a class="header-link" href="#highlighting-code">#</a></h2> <p>Finally, the last step is to call the <code>highlight()</code> function from the <code>pygments</code> package. The <code>highlight()</code> function puts everything together and returns the highlighted output. It takes three arguments, the code to highlight, lexer and the formatter.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pygments</span> <span class="kn">import</span> <span class="n">highlight</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">code</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span><span class="se">\</span> <span class="gp">... </span><span class="s2">def func():</span> <span class="gp">... </span><span class="s2"> # function body</span> <span class="gp">... </span><span class="s2"> print(&quot;hello world!&quot;)</span> <span class="gp">... </span><span class="s2">&quot;&quot;&quot;</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">lex</span> <span class="o">=</span> <span class="n">lexers</span><span class="o">.</span><span class="n">get_lexer_by_name</span><span class="p">(</span><span class="s2">&quot;python&quot;</span><span class="p">)</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">)</span> <span class="go">&#39;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;\n\t&lt;span class=&quot;c1&quot;&gt;# function body&lt;/span&gt;\n\t&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;\n&lt;/pre&gt;&lt;/div&gt;\n&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>If you want <code>highlight()</code> function to save the output to a file rather than returning it, use the <code>outfile</code> argument as follows:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">&gt;&gt;&gt; </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This will create a file named <code>out.html</code> in the current working directory containing the highlighted code.</p> <p>If open <code>out.html</code> in a browser you will find that code doesn&#39;t appear to be highlighted at all. This is because by default <code>HtmlFormatter</code> generates HTML with CSS classes to marks various tokens, but it doesn&#39;t generate the actual CSS styles. We will see how to fix this in the next section.</p> <span id="customizing-the-output-of-htmlformatter" class="anchor-target"></span><h2 class="heading">Customizing the Output of HtmlFormatter <a class="header-link" href="#customizing-the-output-of-htmlformatter">#</a></h2> <p>The following is a lists of some common keyword arguments that you can pass to <code>HtmlFormatter()</code> function to customize the generated output:</p> <div style="overflow-x:auto"><table class="table table-bordered table-hover table-condensed"><thead> <tr> <th>Argument</th> <th>Description</th> </tr> </thead> <tbody> <tr> <td><code>full</code></td> <td>If set to <code>True</code>, <code>HtmlFormatter</code> generates a self-contained document with inline CSS styles. By default, it is set to <code>False</code></td> </tr> <tr> <td><code>style</code></td> <td>The color scheme to use. It defaults to <code>default</code>.</td> </tr> <tr> <td><code>linenos</code></td> <td>If set to <code>True</code>, tells the formatter to generate output with line numbers. By default, it is set to <code>False</code>.</td> </tr> <tr> <td><code>hl_lines</code></td> <td>Specify the list of lines to be highlighted.</td> </tr> <tr> <td><code>cssclass</code></td> <td>CSS class for wrapping the code block.</td> </tr> </tbody> </table></div> <p>Here is how to use these arguments:</p> <span id="full" class="anchor-target"></span><h3 class="heading">full <a class="header-link" href="#full">#</a></h3> <p>In the previous section we have seen that by default, the output generated by <code>HtmlFormatter()</code> only contains HTML markup and CSS classes only, it doesn&#39;t contain the actual CSS styles to format the HTML markup. We can alter this behavior by passing <code>full=True</code> to <code>HtmlFormatter()</code> as follows:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">full</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">&gt;&gt;&gt; </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This will re-write the existing <code>out.html</code> file. If you now open <code>out.html</code> in a text editor you will find that in addition to HTML markup and CSS classes, it also contains a list of CSS style in the head section of the document.</p> <p><img src="/media/uploads/2018/6/7/Selection_215-5259b440-aadf-4db7-b2b1-ba9c88ed2ee0.png" loading="lazy" alt="" ></p> <p>Open <code>out.html</code> in your browser and it should look like this:</p> <p><img src="/media/uploads/2018/6/7/Selection_209-beedcbe3-6404-4e24-b7de-7d36cebb722b.png" loading="lazy" alt="" ></p> <span id="style" class="anchor-target"></span><h3 class="heading">style <a class="header-link" href="#style">#</a></h3> <p>The <code>HtmlFormatter</code> uses a default color scheme named <code>default</code> to highlight the code. Pygments comes with several built-in styles. To view the built-in styles use <code>get_all_styles()</code> function of the <code>pygments.styles</code> package.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="kn">from</span> <span class="nn">pygments.styles</span> <span class="kn">import</span> <span class="n">get_all_styles</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="nb">list</span><span class="p">(</span><span class="n">get_all_styles</span><span class="p">())</span> <span class="go">[&#39;borland&#39;, &#39;xcode&#39;, &#39;pastie&#39;, &#39;emacs&#39;, &#39;vim&#39;, &#39;rainbow_dash&#39;, &#39;igor&#39;, </span> <span class="go">&#39;algol&#39;, &#39;murphy&#39;, &#39;native&#39;, &#39;lovelace&#39;, &#39;algol_nu&#39;, &#39;rrt&#39;, &#39;arduino&#39;, </span> <span class="go">&#39;paraiso-dark&#39;, &#39;trac&#39;, &#39;fruity&#39;, &#39;colorful&#39;, &#39;friendly&#39;, &#39;vs&#39;, &#39;perldoc&#39;,</span> <span class="go">&#39;autumn&#39;, &#39;monokai&#39;, &#39;abap&#39;, &#39;default&#39;, &#39;paraiso-light&#39;, &#39;tango&#39;, &#39;bw&#39;, &#39;manni&#39;]</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p><strong>Note:</strong> To get an instant preview of the available styles visit <a href="https://pygments.pythonlang.cn/demo" rel="nofollow" >https://pygments.pythonlang.cn/demo</a>.</p> <p>Once you know the style you want to use set it using the <code>style</code> argument as follows:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7 8</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">full</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">style</span><span class="o">=</span><span class="s1">&#39;monokai&#39;</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">... </span> <span class="go">&gt;&gt;&gt;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This will highlight the code snippet using monokai color scheme.</p> <p>Open <code>out.html</code> and it will look like this:</p> <p><img src="/media/uploads/2018/6/7/Selection_211-1d56521d-2857-4465-a084-f9260a25fc4c.png" loading="lazy" alt="" ></p> <span id="linenos" class="anchor-target"></span><h3 class="heading">linenos <a class="header-link" href="#linenos">#</a></h3> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">full</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">linenos</span><span class="o">=</span><span class="bp">True</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">... </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This will add line numbers to the highlighted code:</p> <p>Open <code>out.html</code> and it will look like this:</p> <p><img src="/media/uploads/2018/6/7/Selection_212-0f8f2195-dc08-493d-8efc-236d4591215b.png" loading="lazy" alt="" ></p> <span id="hl_lines" class="anchor-target"></span><h3 class="heading">hl_lines <a class="header-link" href="#hl_lines">#</a></h3> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">full</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">linenos</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">hl_lines</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">])</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">... </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This will highlight the first and second line of the code. </p> <p>Open <code>out.html</code> and it will look like this:</p> <p><img src="/media/uploads/2018/6/7/Selection_213-120e08dc-b062-4059-8a33-5e115f75ea12.png" loading="lazy" alt="" ></p> <span id="cssclass" class="anchor-target"></span><h3 class="heading">cssclass <a class="header-link" href="#cssclass">#</a></h3> <p>By default, <code>HtmlFormatter()</code> generates code block wrapped in <code>&lt;div&gt;</code> tag with <br> <code>class=&quot;highlight&quot;</code>. For example:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">()</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">)</span> <span class="go">&#39;&lt;div class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;\n\t&lt;span class=&quot;c1&quot;&gt;# function body&lt;/span&gt;\n\t&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;\n&lt;/pre&gt;&lt;/div&gt;\n&#39;</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>We can specify any other class name using <code>cssclass</code> argument.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre>1 2 3 4 5 6 7</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">cssclass</span><span class="o">=</span><span class="s2">&quot;code-block&quot;</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">)</span> <span class="go">&#39;&lt;div class=&quot;code-block&quot;&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;def&lt;/span&gt; &lt;span class=&quot;nf&quot;&gt;func&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;():&lt;/span&gt;\n\t&lt;span class=&quot;c1&quot;&gt;# function body&lt;/span&gt;\n\t&lt;span class=&quot;k&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&amp;quot;hello world!&amp;quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;\n&lt;/pre&gt;&lt;/div&gt;\n&#39;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This returns the code block wrapped in <code>&lt;div&gt;</code> with <code>class=&quot;code-block&quot;</code>.</p> <span id="generating-css" class="anchor-target"></span><h2 class="heading">Generating CSS <a class="header-link" href="#generating-css">#</a></h2> <p>We have seen that passing <code>full=True</code> to <code>HtmlFormatter()</code> creates a self-contained document with CSS styles. Although, this approach works, but it generates a lot of redundant CSS styles. A better approach would be to create an external style sheet containing all the CSS classes used in the output. </p> <p>We can use <code>get_style_defs()</code> method of <code>HtmlFormatter()</code> to get the style definitions used by the formatter as a string.</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">()</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">formatter</span><span class="o">.</span><span class="n">get_style_defs</span><span class="p">())</span> <span class="go">.hll { background-color: #ffffcc }</span> <span class="go">.c { color: #408080; font-style: italic } /* Comment */</span> <span class="go">.err { border: 1px solid #FF0000 } /* Error */</span> <span class="go">.k { color: #008000; font-weight: bold } /* Keyword */</span> <span class="go">.o { color: #666666 } /* Operator */</span> <span class="go">.ch { color: #408080; font-style: italic } /* Comment.Hashbang */</span> <span class="go">.cm { color: #408080; font-style: italic } /* Comment.Multiline */</span> <span class="go">/* ... */</span> <span class="go">.bp { color: #008000 } /* Name.Builtin.Pseudo */</span> <span class="go">.fm { color: #0000FF } /* Name.Function.Magic */</span> <span class="go">.vc { color: #19177C } /* Name.Variable.Class */</span> <span class="go">.vg { color: #19177C } /* Name.Variable.Global */</span> <span class="go">.vi { color: #19177C } /* Name.Variable.Instance */</span> <span class="go">.vm { color: #19177C } /* Name.Variable.Magic */</span> <span class="go">.il { color: #666666 } /* Literal.Number.Integer.Long */</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>This returns CSS styles for the default style. </p> <p>To get the CSS styles for monokai, do this:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">style</span><span class="o">=</span><span class="s1">&#39;monokai&#39;</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">formatter</span><span class="o">.</span><span class="n">get_style_defs</span><span class="p">())</span> <span class="go">.hll { background-color: #49483e }</span> <span class="go">.c { color: #75715e } /* Comment */</span> <span class="go">.err { color: #960050; background-color: #1e0010 } /* Error */</span> <span class="go">.k { color: #66d9ef } /* Keyword */</span> <span class="go">.l { color: #ae81ff } /* Literal */</span> <span class="go">/* ... */</span> <span class="go">.bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */</span> <span class="go">.fm { color: #a6e22e } /* Name.Function.Magic */</span> <span class="go">.vc { color: #f8f8f2 } /* Name.Variable.Class */</span> <span class="go">.vg { color: #f8f8f2 } /* Name.Variable.Global */</span> <span class="go">.vi { color: #f8f8f2 } /* Name.Variable.Instance */</span> <span class="go">.vm { color: #f8f8f2 } /* Name.Variable.Magic */</span> <span class="go">.il { color: #ae81ff } /* Literal.Number.Integer.Long */</span> </pre></div> </td></tr></table></div> <p>We can also pass additional classes to <code>get_style_defs()</code> method that will be prepended to the class. For example:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">formatter</span><span class="o">.</span><span class="n">get_style_defs</span><span class="p">(</span><span class="s1">&#39;.highlight&#39;</span><span class="p">))</span> <span class="go">.highlight .hll { background-color: #ffffcc }</span> <span class="go">.highlight { background: #f8f8f8; }</span> <span class="go">.highlight .c { color: #408080; font-style: italic } /* Comment */</span> <span class="go">.highlight .err { border: 1px solid #FF0000 } /* Error */</span> <span class="go">.highlight .k { color: #008000; font-weight: bold } /* Keyword */</span> <span class="go">.highlight .o { color: #666666 } /* Operator */</span> <span class="go">/* ... */</span> <span class="go">.highlight .bp { color: #008000 } /* Name.Builtin.Pseudo */</span> <span class="go">.highlight .fm { color: #0000FF } /* Name.Function.Magic */</span> <span class="go">.highlight .vc { color: #19177C } /* Name.Variable.Class */</span> <span class="go">.highlight .vg { color: #19177C } /* Name.Variable.Global */</span> <span class="go">.highlight .vi { color: #19177C } /* Name.Variable.Instance */</span> <span class="go">.highlight .vm { color: #19177C } /* Name.Variable.Magic */</span> <span class="go">.highlight .il { color: #666666 } /* Literal.Number.Integer.Long */</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>In case you have specified <code>cssclass</code> argument while creating <code>HtmlFormatter</code> instance then the default selector for <code>get_style_defs()</code> will be this class. For example:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">cssclass</span><span class="o">=</span><span class="s2">&quot;code-block&quot;</span><span class="p">)</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">print</span><span class="p">(</span><span class="n">formatter</span><span class="o">.</span><span class="n">get_style_defs</span><span class="p">())</span> <span class="go">.code-block .hll { background-color: #ffffcc }</span> <span class="go">.code-block { background: #f8f8f8; }</span> <span class="go">.code-block .c { color: #408080; font-style: italic } /* Comment */</span> <span class="go">.code-block .err { border: 1px solid #FF0000 } /* Error */</span> <span class="go">.code-block .k { color: #008000; font-weight: bold } /* Keyword */</span> <span class="go">.code-block .o { color: #666666 } /* Operator */</span> <span class="go">/* ... */</span> <span class="go">.code-block .bp { color: #008000 } /* Name.Builtin.Pseudo */</span> <span class="go">.code-block .fm { color: #0000FF } /* Name.Function.Magic */</span> <span class="go">.code-block .vc { color: #19177C } /* Name.Variable.Class */</span> <span class="go">.code-block .vg { color: #19177C } /* Name.Variable.Global */</span> <span class="go">.code-block .vi { color: #19177C } /* Name.Variable.Instance */</span> <span class="go">.code-block .vm { color: #19177C } /* Name.Variable.Magic */</span> <span class="go">.code-block .il { color: #666666 } /* Literal.Number.Integer.Long */</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>And here is how you can save the generated CSS styles to an external file:</p> <div class="codeblock language-pycon"><table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre> 1 2 3 4 5 6 7 8 9 10 11 12 13</pre></div></td><td class="code"><div class="highlight"><pre><span></span><span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="n">formatter</span> <span class="o">=</span> <span class="n">HtmlFormatter</span><span class="p">(</span><span class="n">linenos</span><span class="o">=</span><span class="bp">True</span><span class="p">,</span> <span class="n">hl_lines</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span> <span class="n">css</span><span class="o">=</span><span class="s2">&quot;code-snippet&quot;</span><span class="p">)</span> <span class="go">&gt;&gt;&gt;</span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;out.html&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">highlight</span><span class="p">(</span><span class="n">code</span><span class="p">,</span> <span class="n">lex</span><span class="p">,</span> <span class="n">formatter</span><span class="p">,</span> <span class="n">outfile</span><span class="o">=</span><span class="n">f</span><span class="p">)</span> <span class="gp">... </span> <span class="gp">&gt;&gt;&gt; </span> <span class="gp">&gt;&gt;&gt; </span><span class="k">with</span> <span class="nb">open</span><span class="p">(</span><span class="s2">&quot;style.css&quot;</span><span class="p">,</span> <span class="s2">&quot;w&quot;</span><span class="p">)</span> <span class="k">as</span> <span class="n">f</span><span class="p">:</span> <span class="gp">... </span> <span class="n">f</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">formatter</span><span class="o">.</span><span class="n">get_style_defs</span><span class="p">())</span> <span class="gp">... </span> <span class="go">3583</span> <span class="go">&gt;&gt;&gt;</span> </pre></div> </td></tr></table></div> <p>Now open <code>out.html</code> file in a text editor and add the following line at the top of the it:</p> <div class="codeblock language-html"><div class="highlight"><pre><span></span><span class="p">&lt;</span><span class="nt">link</span> <span class="na">rel</span><span class="o">=</span><span class="s">&quot;stylesheet&quot;</span> <span class="na">type</span><span class="o">=</span><span class="s">&quot;text/css&quot;</span> <span class="na">href</span><span class="o">=</span><span class="s">&quot;style.css&quot;</span><span class="p">&gt;</span> </pre></div> </div> <p>Open <code>out.html</code> in a browser and it will look like this:</p> <p><img src="/media/uploads/2018/6/7/Selection_214-58a9da6e-6084-48e9-a4c9-45622f3aef0e.png" loading="lazy" alt="" ></p> <p>Another way to create CSS styles is to use pygments as a command line tool. For example:</p> <div class="codeblock language-bash"><div class="highlight"><pre><span></span>$ pygmentize -S default -f html &gt; default.css </pre></div> </div> <p>This command will create the CSS styles for the <code>default</code> style. The <code>-S</code> option specifies the style and <code>-f</code> option specifies the formatter.</p> <p>To generate CSS styles for monokai, use this:</p> <div class="codeblock language-bash"><div class="highlight"><pre><span></span>$ pygmentize -S monokai -f html &gt; monokai.css </pre></div> </div> <p>We can also specify the top-level class using <code>-a</code> option:</p> <div class="codeblock language-bash"><div class="highlight"><pre><span></span>$ pygmentize -S default -f html -a .code-snippet &gt; default.css </pre></div> </div>https://overiq.cn/pygments-tutorial/如何使用 Virtualenv? - 免费教程https://overiq.cn/how-to-use-virtualenv/

什么是 virtualenv? #

Virtualenv 是一个用于创建 Python 虚拟环境的便捷工具。

那么,我们为什么需要虚拟环境呢?

你可以将虚拟环境想象成一个独立的 Python 安装,它允许我们在不发生冲突的情况下,针对使用相同包的不同版本进行项目开发。请看以下示例:

假设我们正在开发一个电子商务网站和一个 CRM。我们的电子商务网站依赖于 `foo` 包的第 1 版,而我们的 CRM 需要第 2 版。在同一时间,我们只能使用 `foo` 包的一个版本。我们不能同时在系统上安装两个版本。虚拟环境可以轻松解决这类问题。

Virtualenv 的另一个绝佳用例是,当你在一个没有权限全局安装包的系统上工作时。你可以做的就是,在你的主目录中创建一个虚拟环境,然后将项目的所有依赖项安装在虚拟环境中。

即使你不处理冲突的包并且拥有系统的完全访问权限,也建议始终在一个虚拟环境中开始新项目,这样如果项目出现任何问题,你的系统级 Python 安装将保持不变。

现在你了解了 virtualenv 的原因,让我们来看看如何操作?

安装 virtualenv #

要安装 Virtualenv,请键入以下命令:

pip3 install virtualenv 

创建虚拟环境 #

我们现在可以创建虚拟环境了。创建一个名为 `my-project` 的新目录,并使用 `cd` 命令将当前工作目录更改为该目录:

1 2
$ mkdir my-project $ cd my-project 

要创建虚拟环境,请键入以下命令:

$ virtualenv env 

或者,你也可以使用以下命令:

$ python -m virtualenv env 

这将在当前工作目录中创建一个名为 `env` 的新目录。`env` 目录的结构应如下所示:

1 2 3 4 5
env/ ├── bin/ ├── include/ ├── lib/ └── pip-selfcheck.json 

那么这些文件和文件夹是什么呢?

这些文件和文件夹构成了一个独立的 Python 安装。

`bin/` 文件夹包含你在普通 Python 安装中会找到的所有可执行文件:

1 2 3 4
$ ls env/bin/ activate activate_this.py pip python python-config activate.csh easy_install pip3 python3 wheel activate.fish easy_install-3.5 pip3.5 python3.5 

默认情况下,Virtualenv 使用安装它的 Python 版本创建虚拟环境。换句话说,如果 Virtualenv 是作为 Python 3.5 的包安装的,那么它将使用 Python 3.5 创建虚拟环境。我们可以使用 `-p` 选项指定另一个 Python 版本。

virtualenv env -p /usr/bin/python2 

这将使用 Python 2.7 创建虚拟环境,而不是 Python 3.5。

激活虚拟环境 #

要使用虚拟环境,我们首先需要激活它。键入以下命令激活虚拟环境:

1 2
$ source env/bin/activate (env) $: 

如果你在 Windows 上,请使用以下命令:

1 2
C:\Users\user>env\bin\activate (env) C:\Users\user> 

我们的虚拟环境现在已激活。你是否注意到 shell 提示符前面有 `(env)`?这表示名为 `env` 的虚拟环境正在运行。

激活虚拟环境会临时更改 `$PATH` 环境变量,使虚拟环境的 `bin/` 目录成为列表中的第一个。如果现在执行 `python` 命令,则会执行位于 `env/bin/` 目录中的 Python 可执行文件,而不是全局安装的 Python。

一旦激活虚拟环境,你使用 `pip` 添加或删除的任何包将只会影响你正在使用的虚拟环境。系统级安装的包完全不受影响。

停用虚拟环境 #

完成 Virtualenv 的使用后,可以使用 `deactivate` 命令停用它:

$ deactivate 

这将从 `$PATH` 环境变量中删除 `bin/` 目录,使全局安装的 Python 再次可用。

使用 --system-site-packages 继承包 #

在某些情况下,你可能希望创建一个包含全局 Python 安装包的虚拟环境。这可以通过使用 `--system-site-packages` 选项来实现。

$ virtualenv env --system-site-packages 
https://overiq.cn/how-to-use-virtualenv/
安装 MySQL (Windows, Linux 和 Mac) - 免费教程https://overiq.cn/installing-mysql-windows-linux-and-mac/

MySQL 是 Web 上最常用的关系数据库之一,在本课中,我们将学习如何安装它。

本文专门介绍如何在 Windows、Linux 和 Mac OS 上安装 MySQL。

在 Windows 上安装 MySQL #

要下载 Windows 版 MySQL,请导航至 https://dev.mysqlserver.cn/downloads/windows/installer/。向下滚动一点,你就会看到如下所示的下载链接:

第一个是 Web 安装程序,第二个是离线安装程序。选择你喜欢的任何一个,然后点击下载按钮。

下载完成后,双击启动安装程序。

步骤 1:接受许可证协议。

步骤 2:选择设置类型。

默认设置会安装许多额外的软件包,例如 MySQL workbench、Connectors、plugins、documentation、示例数据库等。安装所有这些软件包将需要一些时间和额外的空间。最糟糕的是,你甚至不会使用其中一半的软件包。因此,最好选择自定义安装,只安装你需要的软件包。别担心,你以后可以通过再次运行安装程序来安装这些软件包。

步骤 3:选择产品和功能。

在这种情况下,我们只对安装 MySQL 服务器感兴趣。根据你的操作系统选择体系结构(x86 或 x64),然后点击下一步。

步骤 4:检查要求。

在此屏幕上,安装程序将下载缺失的依赖项。只有当你的系统缺少依赖项时,你才会看到此屏幕。点击“执行”按钮开始该过程。如你所见,在此系统上,安装程序需要在继续之前安装 Microsoft Visual C++ Redistributable Package。点击下一步按钮,安装程序将提示你安装必要的软件包。

安装完所有依赖项后,你将在产品名称前看到一个绿色的勾号。

步骤 5:安装。

此屏幕显示将要安装的产品列表。由于我们这里只安装 MySQL 服务器,因此列表中仅包含 MySQL 服务器。要开始安装过程,请点击“执行”按钮。成功安装后,你将看到以下屏幕。

点击下一步继续。

步骤 6:产品配置。

在这一步,安装程序将配置 MySQL 服务器。默认选项即可,所以只需在接下来的几个屏幕上点击下一步。之后,系统将提示你输入用户名和密码。设置你选择的用户名和密码。你将使用它们登录 MySQL 服务器。

你已完成安装阶段的难点。在接下来的几个屏幕上,通过点击下一步来接受默认设置。最后,点击“完成”按钮关闭安装程序。

在 Windows 中将 MySQL 添加到 PATH 环境变量 #

MySQL 安装程序默认不会将 `mysql.exe` 添加到 PATH 环境变量。因此,每次我们想执行 `mysql.exe` 时,都必须指定其完整路径。`mysql.exe` 位于 `MySQL\MySQL Server 5.7\bin` 目录中。但是,`MySQL` 目录的路径取决于应用程序的体系结构。如果安装了 x64 版本,则应位于 `C:\Program Files\` 中。否则,应位于 `C:\Program Files (x86)` 中。在此系统上,MySQL 安装在 C:\Program Files\ 中,`mysql.exe` 的完整路径是 `C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe`。

要将 `mysql.exe` 添加到 PATH 环境变量,请按照以下步骤操作:

  1. 按 Win+Pause/Break。这将打开系统属性窗口。

  2. 点击“高级系统设置”。

  3. 在新打开窗口的底部,点击“环境变量”。

  4. 在新窗口中,选择 Path 环境变量,然后点击“编辑”。

  5. 在当前变量值末尾添加 `;`,然后附加 `C:\Program Files\MySQL\MySQL Server 5.7\bin\mysql.exe`(具体路径可能因应用程序版本和体系结构而异)。点击“确定”保存。

现在启动命令提示符,然后输入以下命令:

1 2
C:\Users\user>mysql --version mysql Ver 14.14 Distrib 5.7.20, for Win64 (x86_64) 

如果显示了 MySQL 版本,则表示一切正常,并且已成功安装 MySQL 服务器。要登录 MySQL 服务器,请使用以下命令:

C:\Users\user>mysql -u root -p 

然后系统会要求输入密码。成功登录后,您将看到以下输出:

 1 2 3 4 5 6 7 8 9 10 11 12 13
欢迎使用 MySQL 监视器。命令以 ; 或 \g 结尾。您的 MySQL 连接 ID 是 51 服务器版本:5.7.20-log MySQL Community Server (GPL) 版权所有 (C) 2000, 2017, Oracle 和/或其附属公司。保留所有权利。Oracle 是 Oracle Corporation 和/或其附属公司的注册商标。其他名称可能是其各自所有者的商标。键入 'help;' 或 '\h' 以获取帮助。键入 '\c' 以清除当前输入语句。 mysql> 

要退出 MySQL shell,请键入 `\q`。

在 Debian/Ubuntu/Mint 中安装 MySQL #

要在基于 Debian 的系统(如 Ubuntu 或 Mint)上安装 MySQL,请键入以下命令:

$ sudo apt-get install mysql-server 

如果你使用的是基于 Redhat 的系统(如 Fedora 或 CentOS),请使用以下命令:

$ sudo yum install mysql-community-server 

安装程序会自动将 MySQL 可执行文件的路径添加到 PATH 环境变量,因此你无需执行任何操作。

测试安装 #

要测试安装,请运行以下命令:

1 2
$ mysql --version mysql Ver 14.14 Distrib 5.7.19, for Linux (x86_64) using EditLine wrapper 

如果你看到了 MySQL 的版本信息,则表示你已成功安装 MySQL 服务器。

安装后,MySQL 服务器将自动启动。你可以随时使用以下命令检查 MySQL 服务器的状态:

对于 Debian/Ubuntu/Mint:

$ sudo service mysql status 

对于 Redhat/Fedora/CentOS:

$ sudo service mysqld status 

你可以使用以下命令停止服务器:

对于 Debian/Ubuntu/Mint:

$ sudo service mysql stop 

对于 Redhat/Fedora/Cent OS:

$ sudo service mysqld stop 

要重新启动服务器,请使用以下命令:

对于 Debian/Ubuntu/Mint:

$ sudo service mysql start 

对于 Redhat/Fedora/Cent OS:

$ sudo service mysqld start 

在 Mac OS 上安装 MySQL #

要下载 Mac OS 版 MySQL,请访问 https://dev.mysqlserver.cn/downloads/mysql/ 并下载 DMG 归档文件。

双击安装程序启动,然后按照正常的安装过程进行。成功安装后,您将获得一个临时密码用于登录 MySQL 服务器。临时密码不可恢复,因此请确保将其复制并保存在安全的地方。

MySQL 安装程序通常会将文件安装在 `/usr/local/` 目录下的 `mysql` 文件夹中。与 Windows 类似,Mac 的 MySQL 安装程序也不会将 MySQL 可执行文件添加到 PATH 环境变量。因此,我们必须在终端中通过指定完整路径来执行 MySQL。

我们现在可以启动服务器了。打开“系统偏好设置”,然后点击 MySQL 图标。

这将打开 MySQL 偏好设置面板。

如屏幕所示,目前 MySQL 服务器未运行。点击“启动 MySQL 服务器”按钮来启动服务器。

要登录 MySQL 服务器,请在终端中输入以下命令:

$ /usr/local/mysql/bin/mysql -u root -p 

然后系统会要求输入密码。输入安装时复制的临时密码,然后按 Enter。
进入终端后,使用以下命令更改密码。

ALTER USER 'root'@'localhost' IDENTIFIED BY 'your_new_password' 

要退出 MySQL shell,请输入 `\q`。

在 Mac OS 中将 MySQL 添加到 PATH 环境变量 #

要将 MySQL 可执行文件添加到 PATH 环境变量,请打开 `.bash_profile`,并在文件末尾添加以下代码。

.bash_profile

1 2 3
#... PATH="/usr/local/mysql/bin:${PATH}" export PATH 

注销并重新登录以使更改生效。要验证更改,请尝试不指定完整路径来运行 MySQL,如下所示:

$ mysql --version 

如果显示 MySQL 版本,则表示已成功将 MySQL 添加到 PATH 环境变量。现在你的 Mac OS 上应该已安装并运行 MySQL 服务器。

此指南对你是否有效?如果你遇到任何错误,请在评论中告知。

https://overiq.cn/installing-mysql-windows-linux-and-mac/