Python L1: 快速上手
Python基本工具Python模块的搜索路径:set PYTHONPATH=E:/Project/Python/ModuleAndPackage/ or sys.pathPython包的安装工具pip:pip show [package_name]ipython: pip install ipythonPip install jup...
Python简介
- Python 是一门解释型语言,和 C语言,C++ 等编译型语言是不同的。
- 我们可以使用 Python 来创建几乎所有类型的程序,例如游戏、绘图、爬虫,等等。
- Python 的一个强大之处是它的库(library)非常多,众多优秀的库大大增加了 Python 的可能性。
- Python 是跨平台的,可以运行在几乎所有操作系统上,例如 Windows,Linux,macOS,Unix,等等。
Python基本工具
Python模块的搜索路径:
set PYTHONPATH=E:/Project/Python/ModuleAndPackage/ or sys.path
Python包的安装工具pip:
pip show [package_name]
ipython: pip install ipython
Pip install jupiter : share code on web GUI
开发工具: PyCharm
查找文档 : ? [Module]
查看模块的路径:
>>> import functools
>>> functools.__file__
'D:\\Program Files\\Python34\\lib\\functools.py'
>>>_
'D:\\Program Files\\Python34\\lib\\functools.py'
Python基础
1. 在Python中如果条件为 ''(注意区别 ' ',空格字符),(),[],{},None,set()时条件为Flase,否则为True。r'abc\next': r可以阻止转义。
2. Python内置的一种数据类型是列表:
- list是一种有序的集合,可以随时添加和删除其中的元素。
- list作为副本传递当实参不改变初始值 call(L[:]) //切片表示法创建副本L[:]
c = list(range(10))
if 5 in c:
print True
3. string
Str1 = str2[::-1] 翻转字符串
Delimiter.join(mystr) 把list用delimiter连接成字符串
4. tuple和list非常类似,但是tuple一旦初始化就不能修改
1. tuple : a = (2, 3, 4)
2. list : a = [], b= list([...]), c= list(range(10))
3. dict : a = {"a":1, "b":2}, b = dict(a=1, b=2, c=3), c = dict({"aa":11,"bb":22})
遍历dict:
for key, value in b.items():
遍历所有健:(可以使用sort函数,sort(b.keys))
for key in b.keys():
遍历所以值:
for value in b.values():
4. list[dict{}]
person = [{
'age': 30,
'name': 'lili'
}, {
'age': 13,
'name': 'yoyo'
}, {
'age': 15,
'name': 'sasa'
}]
按照age 排序:
i. sorted(a, key = lambda e: e['age'], reverse = False)
sotred()函数原型:sorted(iterable[,key][,reverse])
iterable:需要排序的变量(必填)
key:指定排序的元素
reverse:指定是否逆序,默认为false
lambda:匿名函数,一般形式为
ii 通过使用 operator 模块的 itemgetter 函数
sorted(a,key = itemgetter('age'),reverse = True)
5. input() : 让程序暂停运行,等待用户的输入。返回输入的值
6. 数值转化
int(), long(), float(), complex(), str(),
Unicode(), basestring(),
list(), tuple(), set(), dict(), bool(), object(), super(), property()
获取数据类型的成员:dir(set)/dir(list)/dir(dict)
获取类对象实例的成员:classinstance.__dict__
7. 循环: break/continue
8. import ... as...
import 可以对函数名称和package名重新命名
9. 读取文件
with open() as fd:
for line in fd: or line = fd.readline() or lines = fd.readlines()
lines = fd.getlines()
lines = fd.read()
10. 可变参数
*args是可变参数,args接收的是一个tuple;(a, b, c)
**kw是关键字参数,kw接收的是一个dict。(key1=value1, key2 = value2, key3 = value3)
可变参数既可以直接传入:func(1, 2, 3),也可以先组装list或tuple,再通过*args传入:func(*(1, 2, 3));
关键字参数既可以直接传入:func(a=1, b=2),也可以先组装dict,再通过**kw传入:func(**{'a': 1, 'b': 2})。
11. 日期
11.1 import datetime,time
# 字符串转日期
startTime = '2018-06-06_00:00:00'
ds = datetime.datetime.strptime(startTime, "%Y-%m-%d_%H:%M:%S")
>>> print ds
2018-06-06 00:00:00
# 字符串转时间数组
timeArray = time.strptime(startTime, "%Y-%m-%d %H:%M:%S")
>>> print timeArray
time.struct_time(tm_year=2018, tm_mon=6, tm_mday=6, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=2, tm_yday=157, tm_isdst=-1)
ds += datetime.timedelta(minutes=5) //delta 时间 + 5mins
>>> print ds
2018-06-06 00:05:00
# 日期转字符串
cur = ds.strftime('%Y-%m-%d_%H:%M:%S')
>>> print cur
2018-06-06_00:05:00
# 转为时间戳
timeStamp = int(time.mktime(timeArray))
>>> print timeStamp
1528214400
# 转为其它显示格式
otherStyleTime = time.strftime("%Y/%m/%d %H:%M:%S", timeArray)
print otherStyleTime
时间戳转日期
# 使用time
timeStamp = 1381419600
timeArray = time.localtime(timeStamp)
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print(otherStyleTime) # 2013--10--10 23:40:00
# 使用datetime
timeStamp = 1381419600
dateArray = datetime.datetime.fromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2013--10--10 23:40:00
# 使用datetime,指定utc时间,相差8小时
timeStamp = 1381419600
dateArray = datetime.datetime.utcfromtimestamp(timeStamp)
otherStyleTime = dateArray.strftime("%Y--%m--%d %H:%M:%S")
print(otherStyleTime) # 2013--10--10 15:40:00
获取当前时间并且用指定格式显示
# time获取当前时间戳
now = int(time.time()) # 1533952277
timeArray = time.localtime(now)
print timeArray
otherStyleTime = time.strftime("%Y--%m--%d %H:%M:%S", timeArray)
print otherStyleTime
# datetime获取当前时间,数组格式
now = datetime.datetime.now()
print now
otherStyleTime = now.strftime("%Y--%m--%d %H:%M:%S")
print otherStyleTime
11.2 import random
rdn = random.uniform(-5, 5)
12. Lambda
f = lambda x, y: x+ y
13. yield : 函数generator
14. map(映射) / filter(过滤) / reduce(累计)
li = [22, 33, 44]
new_li = map(lambda a: a + 100, li)
mi = [2, 4, 6]
new_mi = map(lambda a, b : a + b, li, mi)
15. json
jd = json.dumps(d, ensure_ascii=False, encoding='utf-8'))
16.编码报错
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position
0: ordinal not in range(128)
常见的2中修正方法:
a. 明确的指示出 s 的编码方式
#! /usr/bin/env python
# -*- coding: utf-8 -*-
s = '中文字符'
s.decode('utf-8').encode('gb2312')
b.更改 sys.defaultencoding 为文件的编码方式
#! /usr/bin/env python
# -*- coding: utf-8 -*-
import sys
reload(sys) # Python2.5 初始化后删除了 sys.setdefaultencoding 方法,我们需要重新载入
sys.setdefaultencoding('utf-8')
c. bytes
b = b"example" # bytes object
s = "example" # str object
sb = bytes(s, encoding = "utf8") # str to bytes
或者:sb = str.encode(s) # str to bytes
bs = str(b, encoding = "utf8") # bytes to str
或者:bs = bytes.decode(b) # bytes to str
Python工程开发
1. venv
sudo pip install virtualenv
2. 创建虚拟环境
virtualenv -p /usr/bin/python2.7 python27
virtualenv --no-site-packages venv #不带python库
3.进入虚拟环境
source python27/bin/activate
4. 退出虚拟环境
deactivate
5. 删除虚拟环境
rm -rf python27
Python UT覆盖率
unittest: https://docs.python.org/2.7/library/unittest.html
nose2: https://docs.nose2.io/en/latest/
更多推荐
所有评论(0)