首先要搭建一个 python 环境,就不能直接下载 python。Anaconda 是一个开源的 Python 发行版本,其包含了 conda、Python 等180多个科学包及其依赖项。它可以用于在同一个机器上安装不同版本的软件包及其依赖,并能够在不同的环境之间切换
它允许我们创建一个虚拟环境,在虚拟环境下搭建安装 python 的环境,比直接安装 python 简单
-- 查看 conda 版本,也可以用于查看是否安装好了 conda
conda --version-- 查看所有的环境
conda env list-- 查看所有的 conda 包的信息
conda list-- 创建环境
conda create -n python34 python=3.4
conda create --name python34 python=3.4-- activate 能将我们引入 anaconda 设定的虚拟环境中
-- 如果你后面什么参数都不加那么会进入 anaconda 自带的 base 环境
activate python34 -- 退出当前base环境
conda deactivate-- 卸载环境
conda remove --name test --all
接下来我们需要使用 python 下载所需要的包
-- 下载安装 requests 包
conda install requests
pip install requests-- 通过文件下载包
pip install -r requirements-- 镜像下载
pip install -r requirements -i https://mirrors.aliyun.com/pypi/simple-- 卸载第三方包
conda remove requests
pip uninstall requests
我们在下载的时候可能会失败,这时候需要修改下载包的镜像
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
国内常用镜像
-- 清华镜像
https://pypi.tuna.tsinghua.edu.cn/simple
-- 中科大镜像
https://pypi.mirrors.ustc.edu.cn/simple
-- 豆瓣镜像
http://pypi.douban.com/simple/
-- 阿里镜像
https://mirrors.aliyun.com/pypi/simple/
一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行。因此 if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在 if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的
每个python模块(python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 name,当该模块被直接执行的时候,name 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 name 等于模块名称(不包含后缀.py)。
而 “main” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,name == ‘main’ 结果为真
argparse 是一个 Python 模块:命令行选项、参数和子命令解析器。
argparse 模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数,然后 argparse 将弄清如何从 sys.argv 解析出那些参数。 argparse 模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息
parser = argparse.ArgumentParser(description='Process some integers.')
使用 argparse 的第一步是创建一个 ArgumentParser 对象。
ArgumentParser 对象包含将命令行解析成 Python 数据类型所需的全部信息。你可以在创建的时候向里面输入一些信息
parser.add_argument('-integers', type=int, default=1)
给一个 ArgumentParser 添加程序参数信息是通过调用 add_argument() 方法完成的
args = parser.parse_args()
print(args.integers)
ArgumentParser 通过 parse_args() 方法解析参数。它将检查命令行,把每个参数转换为适当的类型然后调用相应的操作.在脚本中,通常 parse_args() 会被不带参数调用,而 ArgumentParser 将自动从 sys.argv 中确定命令行参数
ArgumentParser 可以通过 add_subparsers 的方式去创建子命令,用该方法获取的子构造器可以获取更多的子 parser,子 parser 的使用方式和 ArgumentParser 类似
subparsers = parser.add_subparsers(help='sub-command help')
# 添加子命令 add
parser_a = subparsers.add_parser('add', help='add help')
parser_a.add_argument('-x', type=int, help='x value')
parser_a.add_argument('-y', type=int, help='y value')# 获取 x 并且使用
args = parser.parse_args()
print(args.x)
在向其输入值的时候,需要在前面加上添加的子 parser 名称
-a 1111 -b 123 c2b -x 250
我们可以在创建 subparsers 的时候设定标题,并且以此可以获取用户输入了哪个子 parser
subparsers = parser.add_subparsers(title="commands", dest="command")order_parser = subparsers.add_parser('order')args = parser.parse_args()if args_info.command == 'order':print("order")
python 具有所有动态语言的特性,就是它的类型可以随意转换,值可以瞎几把放
数字数据类型用于存储数值,他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。当你指定一个值时,Number 对象就会被创建:
var1 = 1
var2 = 10
字符串或串是由数字、字母、下划线组成的一串字符。一般记为 :
s = "a1a2···an" # n>=0
它是编程语言中表示文本的数据类型。python 的字串列表有2种取值顺序:
如果你要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符
加号(+)是字符串连接运算符,星号(*)是重复操作
str = 'Hello World!'print str # 输出完整字符串
print str[0] # 输出字符串中的第一个字符
print str[2:5] # 输出字符串中第三个至第六个之间的字符串
print str[2:] # 输出从第三个字符开始的字符串
print str[2:5:2] # 输出从第二个字符开始、第五个字符结束、步长为二的字符组,即 ['l', 'o']
print str * 2 # 输出字符串两次
print str + "TEST" # 输出连接的字符串
其他的类数组的数据结构也可以使用上面的操作,我们一般使用中括号来取值,但是也可以用来赋值
List(列表) 是 Python 中使用最频繁的数据类型。列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套),列表用 [ ] 标识,是 python 最通用的复合数据类型
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']print list # 输出完整列表
print list[0] # 输出列表的第一个元素
print list[1:3] # 输出第二个至第三个元素
print list[2:] # 输出从第三个开始至列表末尾的所有元素
print tinylist * 2 # 输出列表两次
print list + tinylist # 打印组合的列表
元组不允许更新,用 () 标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表
我们可以这么理解,小括号围起来的就是元组
字典是除列表以外 python 之中最灵活的内置数据结构类型。列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
字典用 “{ }” 标识。字典由索引 (key) 和它对应的值 value 组成
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"tinydict = {'name': 'runoob','code':6734, 'dept': 'sales'}print dict['one'] # 输出键为'one' 的值
print dict[2] # 输出键为 2 的值
print dict['ae&2*', 'abc'] # 输出键为 ae&2* 的值,如果字典中没有该值,返回 abc
print tinydict # 输出完整的字典
print tinydict.keys() # 输出所有键
print tinydict.values() # 输出所有值