您的位置:首页 > 编程语言 > Python开发

python相关知识点

2017-07-17 10:11 225 查看
1、os.path在不同的环境中设置文件的路径时作用非常大:

常用方法作用
os.path.dirname(__file__)返回当前python执行脚本的执行路径(看下面的例子),这里__file__为固定参数
os.path.abspath(file)返回一个文件在当前环境中的绝对路径,这里file 一参数
os.path.join(basedir,file)将file文件的路径设置为basedir所在的路径,这里fbasedir和file都为参数
2、函数调用时带括号和不带括号的区别:

如函数:

#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')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: