1. Python列表或元组等的成员,如果是一个多元成员,则可以这样使用,例如:
lst = [(1, 'nihao'), ['haha', 'I love you'],['100', '2']]
for value1, value2 in lst:
print value1, value2 #其中value1就是1/'haha'/'100',value2就是'nihao'/'I love you'/'2'。
2. Python的字符串倒转的两种方法:
<1> 使用[::-1]
s = 'python'
print s[::-1] --> nohtyp
<2> 使用reverse()方法
l = list(s)
l.reverse()
print ''.join(l) -->nohtyp
3. Python的执行命令方法是:
(1)执行shell命令的方法:os.system(command)
(2)执行Python的语句是:exec 'print Fuck world!!!'
4. Python中的目录格式,和Linux中的一致,都是“/”。
5.os.rename(myfile, os.path.join(d, myfile))#是剪切操作,把myfile剪切到d:/目录下的myfile。
6. (1) l1 =[1, 2, 1, 3, 2]
l2 = list(set(l1))
7.os.path.getsize('文件路径')的参数只能是文件,只能计算文件大小,不能计算目录的大小。
8. 涉及到文件/目录路径尽量使用os.path.join()来组合,以跨平台。
9.sys.argv[]在Linux下是从0开始计数的,即:
$ python hello.py 1 2 'xxx'
sys.argv[0] -- hello.py
sys.argv[1] -- 1
sys.argv[2] -- 2
sys.argv[3] -- 'xxx'
10.os.path.isfile()得使用全路径格式的文件。几乎所有的文件操作都必须是相对路径或全路径格式,除非
使用os.chdir()。
11.os.rmdir()与shutil.rmtree()的区别是:
os.rmdir()要求该目录是空的,才可以删除;所以叫“空目录”。
os.removedirs()递归删除空目录;
shutil.rmtree()是递归删除该目录下的所有子目录和文件后才删除该目录;
12. 使用字符串的.join(list)可以将list变成字符串;
13.Python中的else子句主要用在循环(while/for) 和 异常处理(try/except)中;
14. 列表推导式[ ]就是从一个列表list中获得另外一个列表list。
15.Python里的变量作用域:
(1)改变作用域的只有:def, class, lambda;
(2)if/elif/else,try/except/finally/else, for/while/else并不改变变量作用域;
(4)优先级顺序是:局部变量-->全局变量-->内置变量;
16. set数据结构主要用于:去除重复的成员。例如:list0 = list(set(['abc', 'def','abc']))。
17. 参数*arg本质是用元组来收集参数,arg其实是个元组tuple;参数**本质是用字典来收集参数,
arg其实是个dict(字典)。
18. 字符串相加(+)的技巧:在很多情况下都可以配合使用'string' + filename, 其中filename是字符串,来
灵活运用字符串,生成更加灵活的字符串。 '+'加法也适合于列表和元组, 但是用于列表时, 容易产生重复的列表
成员, 因此可以使用set来处理掉重复的成员.
19.Python中创建文件的方法是:open('filename', 'w')或者open('filename', 'a')
20.struct.pack()封包后的数据类型不变,但是struct.unpack()返回的解包数据是元组的形式。
21.Python的变量有三个原则:(1)只有def/class/lambda影响变量的作用域; (2)if...elif...else/
try...except...finally/while/for不影响变量作用域; (3)变量的调用优先级是: 局部变量 >
全局变量 > 内置变量;
22.Python里的赋值操作/函数参数传递/函数返回值和java里一样,并没有创建备份,仅仅是创建了引用而已,
23. 迭代器(iter)本质上就是一个具有__iter__属性和next()方法的类对象。
24.os.path.exists(string)只能判断该string参数是否是已经存在的目录路径或文件,并不判断sys.argv[]
是否存在, 如果sys.argv[]不存在, 则解释器会报告一个IndexError的异常.
25. 如果处理“重复”的行或数据,就要想到使用“set”来处理。
26. 文件读取每一行的时候都是最后带'\n'换行符的;
27. 列表推导式 == 从旧列表生成新列表
28. 线程类继承于threading.Thread: threading是模块,Thread是该模块中的类,此外还有互斥量类Lock
线程间没有通信问题,但是有共享数据问题,必须使用线程互斥量解决:
g_mutex = threading.Lock() #创建互斥量对象
g_mutex.acquire() #获得互斥量
g_mutex.release() #释放互斥量
即: threading模块中有2个类比较重要,一个是Thread类, 用于建立线程对象; 一个是Lock类, 用于建立互斥量对象;
29.subprocess.Popen('cmd')和subprocess.call('cmd')的区别是:
(1) 前者创建完子进程后, 子进程就直接执行, 和父进程是并行的程序了, 同时在运行;
(2) 后者创建完子进程后, 子进程开始执行,但是父进程被阻塞不执行,一直等到该子进程完成后,父进程再开始执行
(3) 后者相当于前者 + 子进程对象.wait()
即: sp = subprocess.Popen('cmd')
sp.wait()
<相当于> sp = subprocess.call('cmd')
30.Python的面向对象也有类似的C++和Java的思想, 只是实现方式不同而已: 封装/继承/重载/多态;
多态是使用重写class的内置方法实现的; 另外Pthon还有自己独特的装饰器@/super/property
31. 反斜扛'\'容易引起错误的原因是: '\'后面不能有'空格'. 另外在目录中不能有空格.
32. in操作符可以省略for循环查找某个元素是否是一个集合的成员, 判断是否是其成员可以直接用:
if 成员 in集合:
处理
33.enumerate(list)返回list的(index, value)元组, 另外注意zip(list1, list2)的使用.
由两个list创建一个字典的方法是: dict(zip(list1, list2))
34. Python初学笔记1到此!!!!!