python学习
1.开头设置编码
#coding=utf-8
各国的编码规范混在一起,容易出现乱码的现象。Unicode标准统一了编码,但较浪费空间,因而出现了“可变长编码”的utf-8
- 计算机系统通用的字符编码工作方式:
|
|
2.声明变量 不用声明类型
a=10
b=5
3. 条件语句
|
|
4.循环语句
|
|
5.数据类型list和元组,字典dict和key集合set
|
|
6.函数定义
|
|
7.高级特性
- 切片 -- 简化list截取操作
|
|
- 迭代
|
|
函数式编程
map/reduce
12345678def f(x):return x * x#map(f,Iterator)r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])list(r) #[1, 4, 9, 16, 25, 36, 49, 64, 81]list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))#['1', '2', '3', '4', '5', '6', '7', '8', '9']#reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
filter
123456#filter()把传入的函数依次作用于每个元素def not_empty(s):return s and s.strip()list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))# 结果: ['A', 'B', 'C']sorted 排序函数
12345678910111213141516sorted([36, 5, -12, 9, -21], key=abs) #key定义排序方式,此处为按绝对值大小,[5, 9, -12, -21, 36]sorted(['bob', 'about', 'Zoo', 'Credit']) #['Credit', 'Zoo', 'about', 'bob'],默认按照ASCII的大小顺序排列sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower, reverse=True) #['Zoo', 'Credit', 'bob', 'about']```- 返回函数和闭包```pythondef calc_sum(*args):def sum():ax=0for n in args:ax = ax + nreturn axreturn sumf = calc_sum(1, 3, 5, 7, 9) #返回sum函数,且该函数并未执行f()匿名函数
123456789101112131415161718192021222324252627f = lambda x: x * x #关键字lambda表示匿名函数f(5)#也可以把匿名函数作为返回值返回def build(x, y):return lambda: x * x + y * y```#### 8.面向对象 支持多重继承(实际与java的接口类类似)```pythonclass Animal:def __init__(self,name):self._name=namedef say(self):print("发出声音")#实例的变量以`__`开头则表示一个私有变量,外部不能访问,如 __name#Cat类继承自Animalclass Cat(Animal):#覆写父类的构造方法def __int__(self,name):Animal.__init__(self,name)def say(self):print("{0}---喵~~".format(self._name))cat = Cat("Cancy")cat.say()
可以给实例绑定一个方法,但给一个实例绑定的方法对另一个实例是没作用的
- 使用slots来限制可以绑定的属性
type()函数可以查看一个类型或变量的类型,可以创建出新的类型
12class Student(object):__slots__ = ('name', 'age') # 用tuple定义允许绑定的属性名称Python内置的@property装饰器负责把一个方法变成属性调用的,可用以防止属性被随意修改
12345678910def fn(self, name='world'): # 先定义函数print('Hello, %s.' % name)Hello = type('Hello', (object,), dict(hello=fn)) # 创建Hello class#要创建一个class对象,type()函数依次传入3个参数:#1.class的名称;#2.继承的父类集合,注意Python支持多重继承,如果只有一个父类,别忘了tuple的单元素写法;#3.class的方法名称与函数绑定,这里我们把函数fn绑定到方法名hello上。
9.引入py文件
|
|
10.I/O操作
读写文件
|
|
StringIO(在内存中读写str), BytesIO(在内存中读写bytes)
|
|
–
学习中…