“Life is short, You need Python” – Bruce Eckel
Environment
基于 Python 的应用方向很多,包括爬虫、大数据、机器学习等等,在学习 Python 之前搞懂想要做啥非常关键。这里做一点儿个人的Python学习笔记,本文包括发展进程、变量的概念、基本输入输出和代码风格。
计算机语言可以从不同角度进行分类,包括
编译型和解释性
编译型语言的程序依靠编译器将源代码都编译成机器语言,并保存为二进制文件,在运行时计算机直接以机器语言执行,不需要编译,所以执行效率高,运行速度较快,可以脱离语言环境独立运行。但程序编译生成的机器码与编译时的运行环境有关,因此平台兼容性较差;
解释型语言的程序依靠解释器在运行时将代码一行一行地解释成为机器语言让计算机执行,每次运行时都需要解释,因此运行速度较慢。但程序可以在任何在安装了解释器的环境中运行,平台兼容性较好。
动态和静态
动态类型语言在程序运行时才会进行数据类型检查,即在编写代码时不用声明变量的数据类型,该语言会在变量第一次接受赋值时记录数据类型;
静态类型语言在代码编译时就会进行数据类型检查,即在编写代码时就要声明变量的数据类型。
Python 是一门解释型动态语言,语法简单,方便灵活。在实际运用中,可以通过C或C++套上Python接口来实现调用Python进行快速运算(如NumPy库)。
在 Python 中,使用一个变量前,必须先对其赋值,通过对变量进行操作,实现对其中的数据进行增加、删除、索引、修改等。变量和值之间是一种引用的关系,如对于 a = 666
,Python 将(1)创建变量a,(2)再创建一块内存来存储值666,(3)再将变量 a 与值 666 通过指针连接。
33个保留词
and, as, assert, break, class, continue, def, del , elif, else, except, False, finally, for, from, global, if, import, in, is, lambda, None, nonlocal, not, or, pass, raise, return, True, try, while, with, yield
=
赋值x = 1 + 2
x, y = 1, 2
y, x = x, y # 可以方便得实现两个变量值的交换
x = 1
x += 6 # 相当于 x = x + 6
# 一行从井号开始,后面的内容属于注释,不会被执行
"""
三个连续的
双引号或单引号
可以进行
跨行注释,
就像这样嘿嘿。
"""
print(*object, sep=' ', end='\n', file=sys.stdout, flush=False)
参数
- object:需要打印的东西,可为多个
- sep:多个object之间的分隔
- end:打印最后以什么字符结束
- file:一个类文件对象,默认为标准输出流
- flush:是否不缓存,即刻输出
返回值
- 输出无异常,则返回None
# 向桌面 666.txt 文件输出
with open('/Users/xxx/Desktop/666.txt', 'w') as f:
print('double click', '666', sep=' ', end='\n', file=f)
input(prompt=None, /)
从标准输入流读取字符串参数
- prompt:一个字符串,在用户输入之前打印在标准输出流上。prompt最后没有换行符
返回值
- 返回输入的内容,格式为字符串,不包含最后的换行符
例 在 Terminal 中运行 Python
后,
>>> content = input('Please input something: ')
Please input something: 666
>>> content
'666'
遵循 PEP 8 Python代码指南
# 定义一个方阵
square_matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
def train_model(...):
"""训练模型"""
pass
class Net(...):
"""定义模型"""
def __init__(self, num_classes=1000):
pass
BATCH_SIZE = 64
EPOCHS = 50
x = 1
x += 6
1 > 2
a = 1
b = 2*a + 3
c = a*a + b*b
x, y = 1, 2
ls = [0, 1, 2, 3, 4]
def foo(a=1, b=2):
pass
foo(a=3, b=4)