hi,这里是手把手带你学Python3系列阶段性小结。
大概两个多月前,我开设了这个「老坑」,内容非常基础,如果一路过来,已能初步满足我的一些日常处理。
今天的推送对标技能树「生信分析人员如何系统入门python(2019更新版)」虽然不一定周全,但会尽可能地进行完善。
看完此篇,也算是敲进了大门。
写在前面
Python is an interpreted, object-oriented, high-level programming language with dynamic semantics.
python是一种语法简单易学且强调可读性,一种面向对象、解释型高级编程语言,使用频率和场景日益增长。
在这个系列的第一期开坑时候我写到:
大多数告诉你 python 值得学习都是基于就业和收入,这样的确容易打动一些人去加入学习。但是我觉得,学习一种编程语言真的要义在于,如何使用 [思维] 或者 [逻辑] 使用代码实现一个有意义的事情,可能是减轻繁杂的重复工作,可能是利用编程解决一个实际问题。我觉得编程是一门艺术,所以,你不想进来看看么?
可能我现在正在经历阶段是,能够实现小需求,测试完成的时候也是有些许成就感的,但是过程不太容易。慢慢来,比较快。
这里就给出的了我两个多月来的学习阶段性小结,大概分为以下几步:
第一步:工欲善其事必先利其器
既然要学习 Python 语言,配套的软件工具必须要摸索到位,除了我在此次推送的 PyCharm外,也有@鲍师傅的 jupyter,新手还是推荐前者。偶尔用用终端界面的 python 也可以,但是别直接用IDLE啦,容易消磨热情。
关于版本,从2.X到3.7.4各色版本都能下载到,但是这里并不推荐 python2 了,因为已有消息称2020年1月1日将不再维护 python2 版本,且在前期的野蛮发展中,一些「规范的格式」也没有完全普及。
当然,如果你使用的是 PyCharm
,将会直接送你三个开场buff:
安装方法可以详见早期的推文,这里要再啰嗦一句的是,如果使用 PyCharm 一定要开启 PEP 8规范,通过安装autopep8
模块就可以智能修改,从一开始就能够写出「精致」的代码,就好比练字时临摹了大家的字帖一般。
三剑客 PyCharm安装测试
编程基础与规范代码
第二步:变量与常量
变量是针对常量来提出的,常量是指在程序中不会改变的量,而变量就可以用于储存不同的计算结果或者不同类型的数据。变量的特点就是可以修改与赋值。
这里需要注意的是:
and as assert break class continue def del elif else except exec finally for from global if in import is lambda not or pass print raise return try while with yield
五种标准变量类型:
可以这样理解数据类型和字符串是基础变量,数字类型主要包含两种类型:整型(Int)和浮点型(float)组成,整型只能储存整数;浮点型能存储小数。有了这些数字就可以进行:
也可以用作判断基因的位置信息,即序列的长短,比如:
字符串可以理解为一段文本,可以进行文本处理和判断。包括拼接、大小写修改等处理… 不同的类型的数据在必要时是可以转换的,数字也可以被认为是字符串。
正则表达式:
这里需要穿插一个很重要的「技能」(概念),就是正则表达式,具体的规则在之前的推送中提到:
常用的速查表如下:
在python中有以下几种使用方式:
import re
pattern1 = re.match(r'pattern', string, flags=0)
pattern2 = re.search(r'pattern' string, flags=0)
if pattern1:
print(pattern1.group())
else:
print("no match")
pattern3 = re.compile(r'pattern'[, flags])
m = pattern.search('str')
re.sub(r'pattern', repl, string, count=0, flags=0)
pattern4 = re.findall(r'pattern',string)[0]
pattern5 = re.finditer(r'pattern', string, flags=0)
pattern6 = re.split(r'pattern', string[, maxsplit=0, flags=0])
具体的使用方法可以翻看这篇内容:
列表、元祖和字典:
元素按顺序排列时就能组成更多信息的数据类型:列表和元祖。其中的元素可以包含字符、字符串、数字、子类表(元祖)。列表使用 list = []
表示;元祖使用 tuple = (obj,)
,具体使用和参数可以详见这两篇推送:
列表的使用指南
元组拆包是个啥?
要注意的是,python中索引是从 0 开始计数的;切片和拆包都是快速处理文本好用的方法。
看似两者相差不大,但还是有不同应用场景的。list和tuple最大的差别就在于 Immutable上,这就带了更多安全性及性能优化,列表是相同类型的项目列表:文件,名称,对象,元组是不同类型对象的分组。
字典就好比「新华字典」,定义字典时,元素以关键对的形式 x:y
呈现,即一个元素需要包含关键字键(key)和值(value)两部分。键在字典中是唯一不变的,而对应的值可以是任意数据类型,同时允许相同的值存在。在生物信息操作中,字典最经典的应用应是对fa文件的处理,可以以ID为键,序列为值,或是对调也具有相应的场景,可以看字典的推送:
字典与FASTA文件序列抽提
第三步函数的基本操作
基本使用方法:
函数,即实现一个特定功能的代码段。是python中的重要技能(工具)。
函数离我们并不远,早期我们已熟练使用了一些内置函数:例如input
print
等;
函数可以包括:
根据使用范围可以将函数分为两类:
另外,还能从实现不同的功能角度来区分,比如 匿名函数
以及高阶函数
详见实例说明:
函数入门
在此有一个概念需要提及:
全局变量和局部变量
即整个程序都可以使用的变量,用 global g
表示。与局部变量对应,可以由下图关系理解。
来看一个例子:
01 a = 1
02
03 def function():
04 global a
05 a += 1
06 global b
07 print (a)
08 function()
09 print (a)
10 print (b)
外部变量可以被改变,内部变量也可以在外部使用。
自定义函数
为什么要写函数之前的介绍道:
写自定义函数的时候要注意:
第四部三大结构
python语言中有三大结构:循序、分支和循环。循序就是从上往下进行,分支和循环结构中最重要的就是条件判断。首先我们要熟悉python3中的判断依据——布尔运算。
python3中将布尔运算的Ture (T)
和 False (F)
作为定义词使用,并把0、空字符串和None看成False,其他情况为Ture。
和其他的逻辑运算一样,python3也包含与或非运算,只是表示有些许不同,在python中,与运算使用and
连接,或运算使用or
连接,非运算使用not Ture
。
还有一个要注意的是None。None
是一个一个特殊空值,并不是0,因为0是有意义的。
python中有两种循环语句,while语句和for语句,但是并没有do… while循环。简单来说whlie语句进行判断,如果TRUE
,进入循环,FALSE
则退出;而for循环是首要给定循环范围,每一次循环会用一个变量存储本次循环的值,当超出范围,循环结束。
用作判断的操作符使用,这里引用@ zoe 在技能树上的总结图,Python 的数值运算、逻辑运算、判断表达式的思维导图如下:
第五步更多的应用场景
虽然说,生物信息学的处理都与序列打交道,但是偶尔用用爬虫,可以快速获得很多相关信息。比如8月的2019国自然信息收集,NCBI的摘要和标题的收录。
2019国自然信息爬取
这还远远没有结束,在往期的介绍中,依旧存在多个概念和使用没有介绍和归整,例如 biopython, 它能够帮助你快速解析特定文件格式(例如 json),获取对应位置的信息,官方文档链接如下:http://biopython.org/DIST/docs/tutorial/Tutorial.html。
推荐几个数据处理和可视化模块(包):NumPy、Pandas、matplotlib、seaborn、pyecharts
。
现行的一些以python编写的流程中已经支持调用直接作图:
还有一个比较重要的概念,可能需要一到两次推送去描述,学习好了会及时更新的,就是python的类和对象。
Python 有一条哲学理念是:一切皆对象。由此可见对象在 Python 中的重要性。
现阶段还还处于一个依样画葫芦的阶段,有几个小的案例的也可以查看往期推送。
猜你喜欢
三剑客 PyCharm使用 | 编程基础与规范代码
| 列表使用
元组拆包是个啥?| 字典与FASTA文件序列抽提
如何判断序列是否跨过剪切位点 | python3 脚本小实战
爬虫小测试 | 函数入门
如何优雅的数月饼 |为什么要使用函数
参考资料:
https://www.runoob.com/python/python-reg-expressions.html
https://docs.python.org/3/library/functions.html