一、字符编码与转码
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
在python2.x中:
1 -*- coding:UTF-8 -*-
2 import sys
3 print(sys.getdefaultencoding()) #查看系统的默认编码
4
5 msg = "学习使人进步"
6 msg_gbk = msg.decode("UTF-8").encode("gbk") #由"UTF-8"格式转到"gbk",首先要将UTF-8解码成unicode,再由unicode编码成gbk。在解码时,要声明现在自己是什么格式的
7 msg_gb2312 = msg_gbk.decode("gbk").encode("gb2312")
8
9 print(msg)
10 print(msg_gbk)
11 print(msg_gb2312)
在python3.x中:
1 #-*- coding:gbk -*-
2
3 import sys
4 print(sys.getdefaultencoding())
5 #如果文件编码改成gbk,需要在头声明是gbk(就是pycharm右下角)
6 msg = "三体" #这个"三体"的格式还是Unicode,因为改变的只是文件的编码,python的编码总是Unicode
7 print(msg)
8
9
10 '''
11 #由UTF-8格式转到gbk格式
12
13 s = "科幻小说"
14 print(s.encode()) #打印utf-8的编码
15 s_gbk = s.encode("gbk")
16 print(s_gbk) #默认就是unicode,不用再decode(UTF-8是Unicode的扩展集)
17
18 #由gbk格式再转回UTF-8格式
19
20 s_utf8 = s_gbk.decode("gbk").encode("utf-8")
21 print(s_utf8)
22 '''
二、函数与函数式编程
编程的方法:
1.面向对象:特点-->类-->class
2.面向过程:特点-->过程-->def
3.函数式编程:-->函数-->def
函数的定义:
数学中:一般的,在一个变化过程中,假设有两个变量x、y,如果对于任意一个x都有唯一确定的一个y和它对应,那么就称x是自变量,y是x的函数。x的取值范围叫做这个函数的定义域,相应y的取值范围叫做函数的值域。
编程中:函数是逻辑结构化和过程化的一种编程方法。
Python中的函数定义法:
1 def test(x):
2 '''The function definitions'''
3 x+=1
4 return x
5
6
7 def:定义函数的关键字
8 test:函数名
9 ():内可定义形参
10 '''''':文档描述(非必要,但是强烈建议为你的函数添加描述信息)
11 x+=1:泛指代码块或程序处理逻辑
12 return:定义返回值
函数型:
1 def func1():
2 '''test1'''
3 print("this is func1")
4 return 0
5
过程型(将程序中每一种功能都定义为def包含的过程当中,使用的时候直接用函数名+()使用)
1 def func2():
2 '''test2'''
3 print("this is func2")
4 #过程就是没有返回值的函数
5
6 y = func2() #调用函数
使用函数替换重复的代码:
1 import time
2 def logger():
3 time_format = "%Y-%m-%d %X" #X代表时分秒
4 time_now = time.strftime(time_format)
5 with open("log.txt","a+") as f:
6 f.write("%s The end\n" %time_now)
7 '''
8 def test1():
9 '''testing'''
10 print("start append log...")
11 with open("log.txt","a+") as f:
12 f.write("The end")
13
14 def test2():
15 '''testing'''
16 print("start append log...")
17 with open("log.txt","a+") as f:
18 f.write("The end")
19
20 def test3():
21 '''testing'''
22 print("start append log...")
23 with open("log.txt","a+") as f:
24 f.write("The end")
25 '''
26
27 def test1():
28 '''testing'''
29 print("start append log...")
30 logger()
31
32 def test2():
33 '''testing'''
34 print("start append log...")
35 logger()
36
37 def test3():
38 '''testing'''
39 print("start append log...")
40 logger()
41
42 x = test1()
43 y = test2()
44 z = test3()
函数三大优点:
1.代码重用
2.保持一致性
3.可扩展性
函数返回值:
1 def test1():
2 '''return test'''
3 msg = "刘慈欣 地球往事"
4 print(msg)
5
6 def test2():
7 '''return test'''
8 msg = "刘慈欣 地球往事"
9 print(msg)
10 return msg
11
12 a = test1()
13 b = test2()
14
15 print("返回值为 [%s]" %a)
16 print("返回值为 [%s]&q