全文引自公众号生信修炼手册
https://mp.weixin.qq.com/s/XRLoYCpWEci5Phz5zc_tUg
学一门语言,基础语法一定要扎实。很多入门的编程书籍,都会花大量的篇幅来介绍基础语法,对于毫无编程经验的新手而言,这样的书籍无疑是很友好的,但是对于有编程经验的开发者而言,很多的基础语法是通用的, 只需花费较少的时间浏览下基础语法,将精力集中在语言独有的特征上即可。
在这里推荐几本基础的,适合新手查看的入门书籍
- python简明教程
https://bop.mol.uno/ - think python
https://cycleuser.gitbooks.io/think-python/content/ - 廖雪峰的python教程
https://www.liaoxuefeng.com/wiki/1016959663602400
下面是我自己总结的一些基础语法
- 变量名称
变量名称由数字,字母,下划线构成,且不能以数字开头
变量名称区分大小写
变量名称不能是语言本身的关键词,比如def等
- 注释
单行注释以井号#开头,多行注释以三个单引号'''或者双引号"""开头,用法如下
# 这里是单行注释,独占一行
print('hello wordld')
print('hello world') # 这里是单行注释,放在语句的后面
'''
这里是多行注释
允许多行文本
'''
print('hello wordld')
"""
这里是多行注释
允许多行文本
"""
print('hello wordld')
在python中,单引号与双引号的功能是相同的,为了更加省时省力,一般用单引号,单引号键盘输入更加方便。
- 数据类型
变量的基本作用就是存储数据,用法如下
num = 3
num就是变量,=表示赋值,3就是这个变量存储的值。存储的值拥有不同的类型,常见的类型包括以下几种
- int
- float
- string
- bool
前两种表示数字,其中int表示整数,float表示浮点数,也就是小数; string表示字符串,字符串以单引号或者双引号括起来,bool型只有两种取值,True和False,注意布尔型值的两侧没有引号。
不同类型的数据之间可以转换,用法如下
# 数字转字符串
str(3)
str(3.1)
# 字符串转数字
int('3')
float('3.1')
# 整形转浮点型
float(3)
在python中,有一种特殊的数据类型None,表示空值,没有值,类似R语言中的NULL。
- 运算符
针对数字的数学运算,常见的有以下几种
加 +
减 -
乘 *
乘方 **
除 /
整除 //
取余 %
用法如下
print(3 + 2) # 5
print(3 - 2) # 1
print(3 * 2) # 6
print(3 ** 2) # 9
print(3 / 2) # 1.5
print(10 // 3) # 3
print(3 % 2) # 1
针对字符串的运算,包括以下几种
- 字符串连接 +
- 字符串重复 *
用法如下
print('abc' + 'def') # abcdef
print('abc' * 3) # abcabcabc
当我们对变量的值进行运算,然后重新赋值,类似下面这个语句
num = 3
num = num + 2
此时,可以将赋值符号与运算符相结合,进行简写, 用法如下
num += 2 # num = num + 2
num -= 2 # num = num - 2
num *= 2 # num = num * 2
num /= 2 # num = num / 2
num **= 2 # num = num ** 2
num //= 2 # num = num // 2
num %= 2 # num = num % 2
需要注意的是,在其他语言中会有x++, x—`的语句,表示在原来值的基础上加1,在python中不存在这样的用法。
同时针对数字和字符串的比较运算符,包括以下几种
大于 >
小于 <
大于等于 >=
小于等于 <=
不等于 !=
相等 ==
针对布尔值的逻辑运算符,常用于条件判断语句中,包括以下几种
and
or
not
用法如下
3 > 2 and 5 > 3
3 < 2 or 5 > 3
not 3 < 2
- 控制结构
控制结构包括条件判断和循环两种,在python中,摒弃了传统的用大括号包围代码块的特点,改用缩进来表示,条件判断对应if语句,写法如下
# 单个if
if x > 3:
print(1)
# if .. else
if x > 3:
print(1)
else:
print(2)
# if ..elif ..else
if x > 3:
print 1
elif x > 2:
print 2
elif x > 3:
print 3
else:
print 4
循环有for循环和while循环两种,for循环通过成员运算符in来实现,用法如下
letters = ['a', 'b', 'c']
for i in letters:
print(i)
for循环用于针对每个元素进行相同操作的场景,while循环用于给定条件下的操作,用法如下
while x <= 10:
x +=1
在python中,针对for和while循环,还加入了else语句,用于循环结束后的在执行一条语句,用法如下
for i in letters:
print(i)
else:
print('hello')
简单的循环几乎用不到else分支,但是其实else分支尤其特定的使用场景,后续在深入讨论。
循环还需要控制控制语句,有以下两种
- 1.跳出循环, break
- 2.跳过循环, continue
- 数据结构
数据结构将基本的数据类型组合起来,方便访问和操作,python常见的数据有以下几种
- list
- 元组, tuple
- 集合,set
- 字典, dict
写法如下
letters = ['a', 'b', 'c'] # 方括号表示列表
letters = ('a', 'b', 'c') # 圆括号表示元组
letters = set((['a', 'b', 'c')) # 集合
letters = {'1' : 'a', '2' : 'b', '3' : 'c' } # 大括号表示字典
数据结构的相关操作是重中之重,后续再深入讨论。
- 函数
函数通过def关键词来定义,函数具有函数名称,参数列表,返回值等特征,最基本的用法如下
# 定义
def add(a, b):
return(a, b)
# 调用
total = add(2, 3)
关于函数,在python中其实有很多的用法细节,后续在深入讨论。
- 模块
模块是别人已经开发测试好的,具备完整功能的代码,通过模块可以大大扩展语言的功能。模块的用法在编程语言中广泛存在。要使用模块,必须先导入模块,导入模块的几种常见语法如下
# 一次性导入模块中的所有方法,简单粗暴
import os
# 和上述用法一样,模块名太长,设置了别名
import numpy as np
# 只导入模块中的某一个函数,按需导入
from os import system
导入模块之后,就可以使用模块中的方法了。python中的模块分为两种,第一种是内置模块,也称为标准库,python安装好之后就可以使用了,第二种是第三方模块,需要单独安装之后才可使用,最常用的安装方式是pip安装,基本用法如下
pip install numpy
- 面向对象
python原生支持面向对象的开发功能, 这也是区别于perl等脚本语言的一大特点。对于简单的脚本编程,其实用到面向对象的机会不多,在初学的时候,可以不用花费很多精力在这块。只需记住一点,类的函数称之为方法,其调用方式和普通函数有区别
# python
line.split("\t")
# perl
split /\t/, $line
传统的函数调用先写函数名称,后面是参数,而类的方法在实例化对象的基础上,用点号连接方法名称。Python内置的很多变量类型也是类的实例,所以其操作都是基于类的方法来操作的。