2.1 环境的安装
首先,在官网下载py2与py3,2,3版本有很多不兼容所有会存在两个版本共存的问题。目前,mac、ubuntu等一些系统已经内置了python2版本。
为了开发需要,我们需要下载并安装python3。用于开发的软件,通常安装版本一般是找次新版本进行安装。安装pycharm IDE 开发工具。
环境变量的功能,及其配置。环境变量分为,用户环境变量(只对当前用户生效)和系统环境变量(所有用户均有效)。主要用于终端使用,不需要输入python解释器的完整路径,只要输入pythonx 就可使用。
PATH:方便用户在终端执行程序。即,将可执行程序所在的目录添加到环境变量,以后直接调用即可。
mac的环境变量在~/.bash_profile文件中。通常在安装的时候python会自动生成环境变量,无需手动配置。
2.2 编码
当前,比较通用的编码有ASCII、Unicode、UTF-8、GB2312、GBK。由于计算机最初使用的是ASCII编码,所以其他编码必须兼容ASCII码。
- ASCII
ASCII码,7bits表示一个字符,最高位用0表示,后来IBM进行扩展,形成8bit扩展的ASCII码。包含所有英文字母和常用的字符,最多可以表示127或256种。 - Unicode
Unicode(万国码),随着计算机的普及,计算机需要兼容多国语言,Unicode编码应运而生。32bits表示一个字符,总共可以表示2**32种不同的符号,远远超出目前所有文字及字符,迄今使用21bits。通用的特点换来的是存储空间的浪费,一般只用于计算机内部处理计算。 - utf-8
为弥补unicode的不足,utf-8针对unicode进行压缩和优化,去掉前面多余的0,只保留有效部分。完整保留ASCII码,欧洲文字一般用2bytes表示,中文一般用3bytes表示。 - GBK
全称是GB2312-80《信息交换用汉字编码字符集 基本集》,1980年发布,是中文信息处理的国家标准,在大陆及海外使用简体中文的地区(如新加坡等)是强制使用的唯一中文编码。
中文使用2bytes表示。GBK,是对GB2312的扩展,又称GBK大字符集,简而言之就是所有亚洲文字的双字节字符。
# IDE:统一使用UTF-8, 全局和项目均如此
2.3 变量
变量的主要作用是为了多次重复使用方便。
# 查看python关键字
import keyword
keyword.kwlist
常量:不允许修改的值,python中只是约定
2.4 python基础语法
1. 多行显示
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
2. 实现换行
input("按下 enter 键退出,其他任意键显示...\n")
# 不换行输出
print(x, end='')
print(y, end='')
3. 多个变量赋值
a = b = c = 1
a, b, c = 1, 2, "john"
4. 成员运算符
in # 如果在指定的序列中找到值返回 True,否则返回 False
not in # 如果在指定的序列中找到值返回 False,否则返回 True
5. 身份运算符
is
# is 是判断两个标识符是不是引用自一个对象 x is y
类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not
# is not 是判断两个标识符是不是引用自不同对象 x is not y
类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。
6. 不换行输出
- print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end="":
7. pyc 文件
执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。
字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码。它比机器码更抽象,需要直译器转译后才能成为机器码的中间代码。
机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。机器码是电脑CPU直接读取运行的机器指令。
ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。
2.5 py2与py3的区别
- 字符串类型不同
v = u'henry'
print(v, type(v)) # unicode类型
# py2 py3 数据类型对应关系
unicode<class> <--> str
eg.u'henry' <--> 'henry'
str <--> bytes
eg.henryx' <--> henryex
Note
- bytes类型一般用于文件存储和网络传输
- 其他不同
Py2 | Py3 | ||
1 | 字符串类型不同 | unicode,str | str,bytes |
2 | py2py3默认解释器编码 | ASCII | UTF-8 |
3 | 输入输出 | raw_input() ; print | input() ; print() |
4 | int / long | int 和 long,除法只保留整数 | 只用int,除法保留小数 |
5 | range/xrange | range/xrange | 只有range,相当于py2的xrange |
6 | info.keys,info.values,info .items | 数据类型是list | 数据类型是<class 'dict_keys'> |
7 | map/filter | 数据类型是list | 返回的是iterator,可以list()查看<map object at 0x108bfc668> |
8 | reduce | 内置 | 移到functools |
9 | 模块和包 | 需要__init__.py | — |
10 | 经典类和新式类 | 同时拥有 | 只有新式类 |
11 | yield from | 没有 | 有 |
12 | 进程池和线程池 | from multiprocessing import Pool | form concurremnt.furtures.thread import ThreadPoolExecutor orm concurremnt.furtures.process import ProcessPoolExecutor |
☞☞☞ 古人学问无遗力,少壮工夫老始成。纸上得来终觉浅,绝知此事要躬行。 ☜ ☜ ☜