上一周的时候,我们推送了一个python的良心教程,作者在4月8日再一次更新。按部就班阅读下来,就前几天的内容来看,与市面上大多数的书本教学相比,整体逻辑和侧重点有一定的差别,加深我之间的对python学习的理解。那么就D1-D7的内容笔记进行重点梳理,作为补充。
D1:Python之禅 在交互式环境中输入import this
可以查看到python之禅,现在还理解不深,在此引用下:
The Zen of Python, by Tim Peters
Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!
PyCharm - Python开发神器
作者推荐使用 PyCharm 进行开发,相关的内容也可以查看我们之间推送
PyCharm 的使用方法及小技巧
PyCharm又又又更新了
PEP8:编程基础与规范代码
Sublime Text - 高级文本编辑器
Sublime Text 在Python编辑中也非常友好,这里就mark一下作者安装包管理的方法及插件推荐吧。
推荐通过快捷键Ctrl+`或者在View菜单中选择Show Console打开控制台,输入下面的代码以安装包管理工具(Sublime Text 3)
import urllib.request,os ;pf='Package Control.sublime-package' ;ipp=sublime.installed_packages_path();urllib.request.install_opener(urllib.request.build_opener(urllib.request.ProxyHandler()));open (os .path .join(ipp,pf),'wb' ).write (urllib.request.urlopen('http://sublime.wbond.net/' +pf.replace(' ' ,'%20' )).read ())
推荐大家安装以下几个插件:
SublimeCodeIntel - 代码自动补全工具插件。
Emmet - 前端开发代码模板插件。
Git - 版本控制工具插件。
Python PEP8 Autoformat - PEP8规范自动格式化插件。
ConvertToUTF8 - 将本地编码转换为UTF-8。
Python版本号规则:
Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。
关于版本, 从2.X到3.7.4 各色版本都能下载到,但是这里并不推荐 python2 了,因为已有消息称2020年1月1日将不再维护 python2 版本,且在前期的野蛮发展中,一些「规范的格式」也没有完全普及。
格式化输出——占位符 %[(name)][flags][width].[precision]typecode
D2:语言元素 此节从计算语言出发,主要梳理的常量、变量及逻辑计算。引用 @ zoe 在技能树上的对操作符及逻辑计算的总结图。
相关的内容也可以在↓中看到:
理解常量与变量
正则表达式
| 如何判断
D3:分支结构 扁平化
Python之禅中有这么一句话“Flat is better than nested.”
扁平化的意思是尽量不要使用嵌套结果,比如在分支结果中使用 if
elif
else
。
提倡代码“扁平化”是因为嵌套结构的嵌套层次多了之后会严重的影响代码的可读性,所以能使用扁平化的结构时就不要使用嵌套。
函数的使用 | 判断 分支
D4:循环结构 如果明确的知道循环执行的次数或者要对一个容器进行迭代(后面会讲到),那么我们推荐使用for-in
循环
如果要构造不知道具体循环次数的循环结构,我们推荐使用while
循环。while
循环通过一个能够产生或转换出bool
值的表达式来控制循环,表达式的值为True
则继续循环;表达式的值为False
则结束循环。
05:构造程序逻辑 小试牛刀
生成斐波那契数列 的前20个数。
说明 :斐波那契数列(Fibonacci sequence),又称黄金分割数列,是意大利数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)在《计算之书》中提出一个在理想假设条件下兔子成长率的问题而引入的数列,所以这个数列也被戏称为"兔子数列"。斐波那契数列的特点是数列的前两个数都是1,从第三个数开始,每个数都是它前面两个数的和,形如:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, …。斐波那契数列在现代物理、准晶体结构、化学等领域都有直接的应用。
找出10000以内的完美数 。
说明 :完美数又称为完全数或完备数,它的所有的真因子(即除了自身以外的因子)的和(即因子函数)恰好等于它本身。例如:6( )和28( )就是完美数。完美数有很多神奇的特性,有兴趣的可以自行了解。
输出100以内所有的素数 。
说明 :素数指的是只能被1和自身整除的正整数(不包括1)。
参考答案可在以下链接中找到。
https://github.com/jackfrued/Python-100-Days/tree/master/Day01-15/code/Day05
D6:函数和模块的使用 使用函数
函数的格式:
def main () : # Todo: Add your code here pass if __name__ == '__main__' : main()
编程大师Martin Fowler 先生曾经说过:“代码有很多种坏味道,重复是最坏的一种! ”
因此,我们可以把需要重复使用的代码自定义为函数。函数的好处我们在之前(为什么要使用函数 )有聊过,例如:便于调试、以及分工。但是,也会遇到不同的伙伴使用相同的变量进行定义,因此我们可以使用模块管理函数。要注意的是:模块编写的过程中,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是"main "。
参数与变量tips:
# 在参数名前面的*表示args是一个可变参数 def add (*args) : total = 0 for val in args: total += val return total# 在调用add函数时可以传入0个或多个参数 print(add()) print(add(1 )) print(add(1 , 2 )) print(add(1 , 2 , 3 )) print(add(1 , 3 , 5 , 7
, 9 ))
在实际开发中,我们应该尽量减少对全局变量的使用,因为全局变量的作用域和影响过于广泛,可能会发生意料之外的修改和使用,除此之外全局变量比局部变量拥有更长的生命周期,可能导致对象占用的内存长时间无法被垃圾回收。事实上,减少对全局变量的使用,也是降低代码之间耦合度的一个重要举措,同时也是对迪米特法则的践行。
D7:字符串和常用数据结构 这里学习到的一个 [概念]是:标量类型;
数值类型是标量类型,也就是说这种类型的对象没有可以访问的内部结构;而字符串类型是一种结构化的、非标量类型,所以才会有一系列的属性和方法,可以使用切片等方式进行操作。
Python 3.6以后,格式化字符串还有更为简洁的书写方式,就是在字符串前加上字母f,我们可以使用下面的语法糖来简化上面的代码。
列表使用 | 元组拆包是个啥?
字典与FASTA文件序列抽提
以上是在上一篇推文中挑选基础内容查漏补缺的笔记,不断迭代。如果对你也有一点点帮助,点点在看 或者分享到朋友圈,你们的支持是我继续分享的动力
主要参考资料
http://www.cnblogs.com/vamei Python - 100天从新手到大师 https://github.com/jackfrued/Python-100-Days
往期回顾:
生信分析方向如何系统入门Python3|2020更新版
文末友情宣传 强烈建议你推荐给身边的博士后以及年轻生物学PI ,多一点数据认知,让他们的科研上一个台阶: