f = file('/etc/passwd','r') ----> Python 3.x 里面没有file,统一用open for line in f.readlines(): line = line.strip('\n').split(':') print line
结果:
['root', 'x', '0', '0', 'root', '/root', '/bin/bash'] ['bin', 'x', '1', '1', 'bin', '/bin', '/sbin/nologin']
f = open('/etc/password',encoding = 'UTF-8')
f = open('test.txt','rb') f.write('你好'.encoding())
函数
def fun(arg,*args,**kargs) pass
a = [1,2,3]
test(*a)
def func(name,age,*,city,job): print(name,age,city,job) >>> func('daxin',22,city='beijing',job='linux') daxin 22 beijing linux
def test(arg,*argv,**kargv): print arg print argv print kargv test('1','2','3',a='4',b='5')
1 ('2', '3') {'a': '4', 'b': '5'}
if 1 > 3: print 'lt' else: print 'gt'
print 'lt' if 1>3 else 'gt'
tem = lambda x,y:x+y print tem(2,3) 等于: def tem(x,y): return x+y print tem(2,3)
def calc_division(n): 'this func user for n devision 2' print(n) if int(n/2) > 0: return calc_division(int(n/2)) print('-->',n) calc_division(20)
>>> a =[2,3,6,9,43,6,98,4,8] >>> a.sort() >>> a [2, 3, 4, 6, 6, 8, 9, 43, 98] >>> a.sort(reverse=True) >>> a [98, 43, 9, 8, 6, 6, 4, 3, 2] >>> sorted(a,reverse=True) [98, 43, 9, 8, 6, 6, 4, 3, 2]
>>> b = [7,45,8,3,5,7,9,0,5,7] >>> sorted(b) [0, 3, 5, 5, 7, 7, 7, 8, 9, 45] >>> b [7, 45, 8, 3, 5, 7, 9, 0, 5, 7]
对一个列表进行去重其实有很多方法: >>> d = ['a','b','a','c'] >>> e=[] >>> for i in d: if i not in e: e.append(i) >>> e ['a', 'b', 'c'] 这里可以利用一种特殊的数据类型集合。集合是无序的并且元素是唯一的 >>> d ['a', 'b', 'a', 'c'] >>> set(d) {'b', 'a', 'c'}
字符编码
计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk等等。unicode是 utf-8,gbk等这些的父编码,这些子编码都能转换成unicode编码,然后转化成子编码,例如utf8可以转成unicode,再转gbk,但不能直接从utf8转gbk,需要有一个中间过程
所以,python中就有两个方法用来解码(decode)与编码(encode),解码是子编码转unicode,编码就是unicode转子编码
1.编码
a = '你好'
print(a.encode('gbk'))
print(a.encode('utf-8'))
这里使用Python 3, 所以a的默认编码类型为unicode
输出的结果为:
b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
2.解码
a = '你好'
print(a.encode('gbk').decode('gbk'))
print(a.encode('utf-8'))
这里a为unicode编码,decode方法将gbk的bytes格式的数据转换为unicode编码
输出结果:
你好
b'\xe4\xbd\xa0\xe5\xa5\xbd'
因为a是unicode编码的,如果对a进行解码,那就会报错,没有decode方法
AttributeError: 'str' object has no attribute 'decode'
3、文件加载过程
1、程序向系统发送调用命令
2、系统切换到内核态从磁盘(bytes格式)加载到内存中(unicode格式),这里就有一个编码(decode)的过程,既 bytes(utf-8) -> unicode
3、python解释器读取内存中的unicode编码的文件,如果python解释器指定了编码集为UTF-8,那么就会产生一个解码(encode)的过程,既unicode -> utf-8
4、python 3中的字符串存储格式是unicode,python 2 中的 bytes格式
5、python3 默认支持中文,python不支持
unicode是 utf-8,gbk等这些的父编码,这些子编码都能转换成unicode编码,然后转化成子编码,例如utf8可以转成unicode,再转gbk,但不能直接从utf8转gbk,需要有一个中间过程
所以,python中就有两个方法用来解码(decode)与编码(encode),解码是子编码转unicode,编码就是unicode转子编码
1.编码
a = '你好'
print(a.encode('gbk'))
print(a.encode('utf-8'))
这里使用Python 3, 所以a的默认编码类型为unicode
输出的结果为:
b'\xc4\xe3\xba\xc3'
b'\xe4\xbd\xa0\xe5\xa5\xbd'
2.解码
a = '你好'
print(a.encode('gbk').decode('gbk'))
print(a.encode('utf-8'))
这里a为unicode编码,decode方法将gbk的bytes格式的数据转换为unicode编码
输出结果:
你好
b'\xe4\xbd\xa0\xe5\xa5\xbd'
因为a是unicode编码的,如果对a进行解码,那就会报错,没有decode方法
AttributeError: 'str' object has no attribute 'decode'
3、文件加载过程
1、程序向系统发送调用命令
2、系统切换到内核态从磁盘(bytes格式)加载到内存中(unicode格式),这里就有一个编码(decode)的过程,既 bytes(utf-8) -> unicode
3、python解释器读取内存中的unicode编码的文件,如果python解释器指定了编码集为UTF-8,那么就会产生一个解码(encode)的过程,既unicode -> utf-8
4、python 3中的字符串存储格式是unicode,python 2 中的 bytes格式
5、python3 默认支持中文,python不支持