昨天辞职了,在KDS的这一段时间确实提高了不少。趁着辞职后还有段空闲期,准备将Python数据分析这一块继续学习学习。然后把组成原理和计算机网络学习一遍,为以后的发展打下基础,然后准备继续学习C++.
Python的一个简单review
Python重要特点就是对象模型的一致性,Python解释器中的任何数值,字符串,数据结构,函数,类,模块,都是一种Python对象,每个对象都有一个与之相关的类型比如字符串和函数以及内部数据,几乎所有的Python对象都有一些附属函数,也就是方法,他们可以访问对象内部的数据,函数既可以接受位置参数,也可以接受关键字参数
在Python中对变量赋值的时候,其实是创建等号右侧对象的一个引用
a = [1,2,3]
b = a
#这样a,b都指向同一个对象
a.append(4)
print b```
赋值操作也称为绑定,将一个名称和一个对象绑定到一起
当将对象以参数的形式传入函数的时候,其实是传递了一个引用,不会发生任何复制,Python是按引用传递的
def append_element(some_list,element):
some_list.append(element)
append_element(a,5)
print b```
Python中的对象引用没有与之相关联的类型信息,变量其实就是对象在特定命名空间中的名称,对象的类型信息是保存在它自己内部的,Python可以被认为是一种强类型语言,所有对象都有一个特定的类型,隐式转换只在很明显的情况下才会发生
print type(a)
#isinstance函数来检查对象是否是某个特定类型的
print isinstance(a,list)
#可以制定元组,检查某个对象的类型是否属于元组中指定的类型
print isinstance(a,(list,int))```
Python中的对象既有属性,存储在该对象内部的其他Python对象
又有方法,与该对象有关的能够访问其内部数据的函数
getattr函数,hasattr函数和setattr函数
一般来说只关注这个对象有没有某些方法或者行为
比如实现了迭代器协议的就是可迭代的,__iter__方法
使用iter函数来判断是否可迭代
def isiterable(obj):
try:
iter(obj)
print "True"
except:
print "False"
isiterable(a)
isiterable(a[1])
检查是不是列表,如果不是列表将其转换为列表
if not isinstance(a,list) and isiterable(a):
a = list(a)```
判断两个引用是否指向同一个对象,可以使用is,或者is not
print a is b
#但是list函数会创建新列表
c = list(a)
print c
print a is c
#==表示比较两个对象是否相等,如果是列表,就是列表中每个元素相比较
c.append(6)
print a == c```
Python中,计算过程和表达式都是立即求值的
但是迭代器和生成器可以实现延迟计算,特别应用于数据密集型计算
大部分Python对象是可变的,列表,字典,数组
字符串和元组是不可变的
除后圆整运算符//,Python2中,3/2仍然是一个整数
print 3 // 2