python相关知识点
2017-07-17 10:11
225 查看
1、os.path在不同的环境中设置文件的路径时作用非常大:
2、函数调用时带括号和不带括号的区别:
如函数:
1、不带括号时,调用的是这个函数本身
2、带括号(此时必须传入需要的参数),调用的是函数的return结果
3、cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复。在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍。
dump: 将python对象序列化保存到本地的文件。
>>> import cPickle
>>> data = range(1000)
>>> cPickle.dump(data,open("test\\data.pkl","wb"))
dump函数需要指定两个参数,第一个是需要序列化的python对象名称,第二个是本地的文件,需要注意的是,在这里需要使用open函数打开一个文件,并指定“写”操作。
load:载入本地文件,恢复python对象
>>> data = cPickle.load(open("test\\data.pkl","rb"))
同dump一样,这里需要使用open函数打开本地的一个文件,并指定“读”操作
dumps:将python对象序列化保存到一个字符串变量中。
>>> data_string = cPickle.dumps(data)
loads:从字符串变量中载入python对象
>>> data = cPickle.loads(data_string)
4、python中read() readline()以及readlines()用法
我们谈到“文本处理”时,我们通常是指处理的内容。Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 .read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。.readline()
和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。
5、python-enumerate枚举函数
enumerate 函数用于遍历序列中的元素以及它们的下标:
>>> for i,j in enumerate(('a','b','c')):
print i,j
0 a
1 b
2 c
>>> for i,j in enumerate([1,2,3]):
print i,j
0 1
1 2
2 3
6、lambda是什么?
看一下执行的结果:
g(1)
>>>2
g(2)
>>>3
当然,你也可以这样使用:
lambda x:x+1(1)
>>>2
可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:
非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。
Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce
>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>>
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>>
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>>
>>> print reduce(lambda x, y: x + y, foo)
139
lambda 定义了一个匿名函数
lambda 并不会带来程序运行效率的提高,只会使代码更简洁。
如果使用lambda,lambda内不要包含循环,如果有,最好定义函数来完成,使代码获得可重用性和更好的可读性。
7、dict()的操作方法
dict的很多方法跟list有类似的地方,下面一一道来,并且会跟list做一个对比
嵌套
嵌套在list中也存在,就是元素是list,在dict中,也有类似的样式:
获取键、值
在上一讲中,已经知道可以通过dict的键得到其值。例上面的例子。
从上面的结果中,我们就可以看出,还可以用for语句循环得到相应内容。例如:
以下两种方法等效:
下面的方法又是等效的:
下面的方法也能得到键值,不过似乎要多敲键盘
其它几种常用方法
删除键值对的方法有两个,但是两者有一点区别
用d.update(d2)可以把d2合并到d中。
8、Python中没有专门定义结构体的方法,但可以使用class标记定义类来代替结构体,
其成员可以在构造函数__init__中定义,具体方法如下。
class item:
def __init__(self):
self.name = '' # 名称
self.size = 10 # 尺寸
self.list = [] # 列表
a = item() # 定义结构对象
a.name = 'cup'
a.size = 8
a.list.append('water')
常用方法 | 作用 |
os.path.dirname(__file__) | 返回当前python执行脚本的执行路径(看下面的例子),这里__file__为固定参数 |
os.path.abspath(file) | 返回一个文件在当前环境中的绝对路径,这里file 一参数 |
os.path.join(basedir,file) | 将file文件的路径设置为basedir所在的路径,这里fbasedir和file都为参数 |
如函数:
#python3.5 def a(x): return x print(a) #不带括号调用的结果:<function a at 0x1091766a8> print(a(3)) #带括号调用的结果:3
1、不带括号时,调用的是这个函数本身
2、带括号(此时必须传入需要的参数),调用的是函数的return结果
3、cPickle可以对任意一种类型的python对象进行序列化操作,比如list,dict,甚至是一个类的对象等。而所谓的序列化,我的粗浅的理解就是为了能够完整的保存并能够完全可逆的恢复。在cPickle中,主要有四个函数可以做这一工作,下面使用例子来介绍。
dump: 将python对象序列化保存到本地的文件。
>>> import cPickle
>>> data = range(1000)
>>> cPickle.dump(data,open("test\\data.pkl","wb"))
dump函数需要指定两个参数,第一个是需要序列化的python对象名称,第二个是本地的文件,需要注意的是,在这里需要使用open函数打开一个文件,并指定“写”操作。
load:载入本地文件,恢复python对象
>>> data = cPickle.load(open("test\\data.pkl","rb"))
同dump一样,这里需要使用open函数打开本地的一个文件,并指定“读”操作
dumps:将python对象序列化保存到一个字符串变量中。
>>> data_string = cPickle.dumps(data)
loads:从字符串变量中载入python对象
>>> data = cPickle.loads(data_string)
4、python中read() readline()以及readlines()用法
我们谈到“文本处理”时,我们通常是指处理的内容。Python 将文本文件的内容读入可以操作的字符串变量非常容易。文件对象提供了三个“读”方法: .read()、.readline() 和 .readlines()。每种方法可以接受一个变量以限制每次读取的数据量,但它们通常不使用变量。 .read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。然而 .read() 生成文件内容最直接的字符串表示,但对于连续的面向行的处理,它却是不必要的,并且如果文件大于可用内存,则不可能实现这种处理。.readline()
和 .readlines() 之间的差异是后者一次读取整个文件,象 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。另一方面,.readline() 每次只读取一行,通常比 .readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 .readline()。
5、python-enumerate枚举函数
enumerate 函数用于遍历序列中的元素以及它们的下标:
>>> for i,j in enumerate(('a','b','c')):
print i,j
0 a
1 b
2 c
>>> for i,j in enumerate([1,2,3]):
print i,j
0 1
1 2
2 3
6、lambda是什么?
g = lambda x:x+1
看一下执行的结果:
g(1)
>>>2
g(2)
>>>3
当然,你也可以这样使用:
lambda x:x+1(1)
>>>2
可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为:
1 def g(x): 2 return x+1
非常容易理解,在这里lambda简化了函数定义的书写形式。是代码更为简洁,但是使用函数的定义方式更为直观,易理解。
Python中,也有几个定义好的全局函数方便使用的,filter, map, reduce
>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>>
>>> print filter(lambda x: x % 3 == 0, foo)
[18, 9, 24, 12, 27]
>>>
>>> print map(lambda x: x * 2 + 10, foo)
[14, 46, 28, 54, 44, 58, 26, 34, 64]
>>>
>>> print reduce(lambda x, y: x + y, foo)
139
lambda 定义了一个匿名函数
lambda 并不会带来程序运行效率的提高,只会使代码更简洁。
如果使用lambda,lambda内不要包含循环,如果有,最好定义函数来完成,使代码获得可重用性和更好的可读性。
7、dict()的操作方法
dict的很多方法跟list有类似的地方,下面一一道来,并且会跟list做一个对比
嵌套
嵌套在list中也存在,就是元素是list,在dict中,也有类似的样式:
获取键、值
在上一讲中,已经知道可以通过dict的键得到其值。例上面的例子。
从上面的结果中,我们就可以看出,还可以用for语句循环得到相应内容。例如:
以下两种方法等效:
下面的方法又是等效的:
下面的方法也能得到键值,不过似乎要多敲键盘
其它几种常用方法
删除键值对的方法有两个,但是两者有一点区别
用d.update(d2)可以把d2合并到d中。
8、Python中没有专门定义结构体的方法,但可以使用class标记定义类来代替结构体,
其成员可以在构造函数__init__中定义,具体方法如下。
class item:
def __init__(self):
self.name = '' # 名称
self.size = 10 # 尺寸
self.list = [] # 列表
a = item() # 定义结构对象
a.name = 'cup'
a.size = 8
a.list.append('water')
相关文章推荐
- Python爬虫学习纪要(二):BeautifulSoup相关知识点2
- python中进程相关知识点。很强大
- (转)python 计算代码行数以及相关知识点
- python文件操作相关知识点总结整理
- 【Python爬虫学习笔记(2)】正则表达式(re模块)相关知识点总结
- 【Python爬虫学习笔记(3)】Beautiful Soup库相关知识点总结
- 【Python爬虫学习笔记(1)】urllib2库相关知识点总结
- python文件操作相关知识点总结整理
- Python开发一个csv比较功能相关知识点汇总及demo
- python统计学习相关琐碎知识点
- 【Python】相关语法知识点
- 【Python】 字符串的相关小知识点
- python知识点-->字符串相关处理及其的应用
- python list append 相关知识点
- python日常知识点相关补充
- Python爬虫学习纪要(十二):BeautifulSoup相关知识点4
- python相关遗漏知识点补充
- C++ 虚函数、纯虚函数、继承、虚表、多态原理相关知识点总结
- python 时间相关
- Python3 与 C# 面向对象之~异常相关