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/

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐