0%

python收集

inspect模块用于收集python对象的信息,可以获取类或函数的参数的信息,源码,解析堆栈,对对象进行类型检查等。

一、资料

  1. Python format 格式化函数
  2. python的class(类)中继承object 与不继承的区别
  3. inspect标准库
  4. inspect
  5. Flask vs Django
  6. numpy和pandas
  7. pip install指定目录
    • pip install python-dateutil --target /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
  8. ModuleNotFoundError
  9. Python 不愧是脚本之王
  10. Python3新特性-类型注解
  11. python3-cookbook

二、常用

  1. id(object)返回对象的“标识值”。该值是一个整数,在此对象的生命周期中保证是唯一且恒定的。

    • 两个生命期不重叠的对象可能具有相同的id()值。
  2. isinstance(object, classinfo),如果参数object是参数classinfo的实例或者是其(直接、间接或 虚拟)子类则返回True。

    • 如果classinfo是类型对象元组(或由其他此类元组递归组成的元组),那么如果object是其中任何一个类型的实例就返回True
  3. type()功能和isinstance类似,用来判断一个对象是否是一个已知的类型。

    • type()不会认为子类是一种父类类型,不考虑继承关系。
    • isinstance()会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用isinstance()。

  1. Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。
    • ==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等
    • is也被叫做同一性运算符,用来比较判断的是对象间的唯一身份标识id是否相同
      • 只有数值型和字符串型的情况下,a is b才为True
      • abtuplelistdictset型时a is bFalse

python内置函数

  1. demo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
b = 5
a = 5
c = [1, 2, 3]
d = [1, 2, 3]
print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a is b)
print(c is d)
print(a == b)
print(c == d)

os._exit(0)

item = 'abc'
print(isinstance(item, int))
print(isinstance(item, float))
print(isinstance(item, complex))
print(isinstance(item, bool))
print(isinstance(item, list))
print(isinstance(item, str))
print(isinstance(item, tuple))
print(isinstance(item, set))
print(isinstance(item, dict))
os._exit(0)
  1. python2和python3对比

    • logging库中的Python2中的方法warn在Python3中换成了warning
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    import logging
    import sys

    log = logging.getLogger()
    log.setLevel(logging.DEBUG)

    std = logging.StreamHandler(sys.stderr)
    log.addHandler(std)

    log.debug('debug msg')
    log.info('info msg')
    log.error('error msg')
    log.warn('warn msg') #Python2中的写法
    log.warning('warn msg') #Python3中的写法
    • print函数
      • python2支持print("hello")print "hello"
      • python3只支持print("hello")
  2. id/is/==

1
2
3
4
5
6
7
8
9
10
11
12
13
14
b = 5
a = 5
c = [1, 2, 3]
d = [1, 2, 3]
print(id(a))
print(id(b))
print(id(c))
print(id(d))

print(a is b)
print(c is d)
print(a == b)
print(c == d)

  1. isinstance
1
2
3
4
5
6
7
8
9
10
11
item = 'abc'
print(isinstance(item, int))
print(isinstance(item, float))
print(isinstance(item, bool))
print(isinstance(item, complex))
print(isinstance(item, list))
print(isinstance(item, str))
print(isinstance(item, tuple))
print(isinstance(item, set))
print(isinstance(item, dict))
print(type(item))
  1. type
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
i = 123
f = 1.25
b = True
c = 4+3j
str = 'abc'
list = ['html', 'js', 'css', 'python']
tuple = ('one', 'two')
set = {'one', 'two'}
dict = {'name':'tom', 'age':10}
print(type(i))
print(type(f))
print(type(b))
print(type(c))
print(type(str))
print(type(list))
print(type(tuple))
print(type(set))
print(type(dict))
  1. list遍历的几种方法
    • tuple遍历一样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# -*- coding: utf-8 -*-

name = ['tom', 'tim', 'jim']
#name = ('tom', 'tim', 'jim')

print("\n方式一")
for i in name:
print("序号:%s,值:%s" % (name.index(i) + 1, i))

print("\n方式二")
# python3版本中,range和xrange合并为range
for i in range(len(name)):
print("序号:%s,值:%s" % (i + 1, name[i]))

print("\n方式三")
for i, val in enumerate(name):
print("序号:%s,值:%s" % (i + 1, val))

print("\n方式三:改变起始值")
for i, val in enumerate(name, 2):
print("序号:%s,值:%s" % (i + 1, val))

print("\n方式四")
for val in iter(name):
print(val)
  1. 遍历集合
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# -*- coding: utf-8 -*-

weeks = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])

print("\n方式一")
for day in iter(weeks):
print(day)

print("\n方式二")
for day in weeks:
print(day)

print("\n方式三")
for i, day in enumerate(weeks):
print(str(i) + day)
  1. 遍历字典(python3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding: utf-8 -*-
dict={"name": "tom", "age": 10}

print("\n方式一")
for i in dict:
print("dict[%s]=" % i,dict[i])

print("\n方式二")
for i in dict.items():
print(i)

print("\n方式三")
for (k,v) in dict.items():
print("dict[%s]=" % k,v)

print("\n方式四")
for (k,v) in zip(dict.keys(),dict.values()):
print("dict[%s]=" % k,v)

print("\n方式五")
for k,v in dict.items():
print("dict[%s]=" % k,v)

print("\n方式六:仅支持python2")
for k,v in dict.iteritems():
print "dict[%s]=" % k,v

print("\n方式七:仅支持python2")
for (k,v) in zip(dict.iterkeys(),dict.itervalues()):
print "dict[%s]=" % k,v
  1. 格式化输出json
1
2
3
4
5
6
# -*- coding: utf-8 -*-
import json

dict = {'name': 'tom', 'age': 22, 'parent':{'father':'tim', 'test':[1,2,3]}}
json = json.dumps(dict, sort_keys=True, indent=4, separators=(',', ':'))
print(json)