官方手册
https://docs.python.org/3/library/
import modulexxx 导入模块
dir(modulexxx) 查看模块的类、变量和方法
vars(modulexxx) 查看模块的类、变量和方法,包含属性的值,字典形式返回,但有些类不能用
del variable 删除变量
print('Contact {} at{}'.formate(key,value))
print('xxxx',var)
----- ----- -----
引用 变量名称绑定对象的内存
----- ----- -----
VarA = ['xxx','yyy']
VarB = VarA
del VarA[0] #此时VarB看到的也是删掉了'xxx'
VarB = VarA[:] #此时VarB指向了一份独立的副本
如果是可变对象的变量名幅值给另一个变量名,也只是引用(指针)。
不可变对象 int,float,long,str,tupl (理解为总是值的操作)
可变对象 list,set,dict (理解为总是指针操作)
函数参数传递:
不可变对象传进去的是值
可变对象传进去的是指针
对于不可变类型的变量,如果要更改变量,则会创建一个新值,而旧值如果没有被引用就等待垃圾回收
对于可变的类型,如果两个变量名称用=赋值,则会指向同一个地址,需要用copy来复制一份
----- ----- -----
数据结构
----- ----- -----
<1>列表(List) [xxx,yyy,zzz]. (可变的数据类型)
有序项目的集合.包含的列表项可以是不同类型的
list.append(Item) 尾部添加一个项目
ListA.sort() 排序
del ListAp[x] 可以直接删除元素
<2>元组(Tuple) (xxx,yyy,zzz) (不可变)
将多个项目保存在一起,类似列表,但功能能少,没有增加/删除元素的功能
*如果只有一个元祖项,如下声明 singleTuple = (aaa,)
<3>字典(Dictionary) {key0: Values0, Key1: Values1} (可变的)
Keys键值与Values值意义建立联系。键值是唯一的。
keys不可变,Values可变。
不可排序。
*无法实现同性名(Keys)的信息标记。
循环调动 for key, value in Dict.items()
增加键值对 Dict['keynew'] = 'value'
判断是否存在 if 'key' in Dict: xxxx
<4>集合(Set/collection) set([xxx,yyy,zzz]) (可变的)
简单的对象的无序集合,功能较多.方法比较正式
if xxx in set1 检查元素是否属于集合
set2 = set1.copy() 复制一份(内存里有2份数据)
set2.add(aaa) 增加集合的元素
set2.issuperset(set1) 检查是否是包含
set2.remove(bbb)
set1&set2 输出交集
set1.intersection(set2) 输出交集
*序列 列表、元组、字典都可看做序列的表现形式
序列支持资格测试(membership test) ( if eee in/not in xxx)
索引操作 (indexing operations) list[0] list[-1]
支持切片运算符 (slicing) list[2:] list[:] list[-1](倒数第一个) list[1:-1]
带步长切片 list[::2] 索引的步进为2
能返回一份副本!
----- ----- -----
字符串
----- ----- -----
stra.join(strlist) 联结,将定界符stra插入字符串列表的元素之间,返回合并后的结果
"_@_".join(["11","22","33"])
stra.startswith('swa') 判断起始头
if "xxx" in stra: 判断是否包含
stra.find('war') 返回字段的位置,没有则返回-1
----- ----- -----
面向对象编程
----- ----- -----
class 类,关键字,能够创建一种新的类型Type
Object 对象,是类的实例Instance
Attribute 属性,包含类的字段和方法
Field 字段,从属于对象或类的变量
Method 方法,属于类的函数
字段类型:
instance Variables 实例的变量,
Class Variables 类的变量,共享的,这个类的任何对象修改的是同一个变量
方法类型
对象的方法
类的方法 用于便利地访问类对象,需要用到装饰器@classmethod来标记
私有属性 名称带双下划线,__priv
self 代表类的实例本身。
相当于Java中的this指针,必须放到类的方法的参数列表的开头。
就算原本是无需要参数的方法,也要带self参数
MyClass.method(self)
class Person: # 创建一个类
population = 0 # 类的变量/字段
__PrvNum = 1 # 私有变量,对外隐藏的
def __init__(self, name): # 构造函数
self.name = name # 对象的变量/字段
Person.population += 1
def SayHi(self): # 类的方法
print('hello,my name is ',self.name)
print('now have {} preson'.format(self.__class__.population))
@classmethod # 装饰器,指出接着是类方法
def how_many(cls): # 定义了类方法
print('we have {} preson'.format(cls.population))
p1 = Person('lucy') # 创建一个实例,自动调用__init__构造函数
p1.SayHi() # 调用实例的方法
p2 = Person('Tom')
p2.SayHi()
Person.how_many() # 调用类的公共方法
print(Person.population)
# print(Person.__PrvNum) #这条无法执行,因为__PrvNum是私有的
*当一个对象的变量与类变量名称相同时,类变量会被隐藏
*self.__class__.var 每个对象也可以通过这种方式范围类变量
继承 inheritance,实现代码重用,实现子类型
创建公共类(公共特性)-->子类A、子类(特有特性)
多态 polymorphism,接口在子类中实现不同,而父类的对象可以调用子类的接口。
就算父类实现了接口,也会调用子类的接口
Python中所有的方法都是虚拟的,即默认能用多态特性
class pub:
def __init__(self)
xxx
class sub(pub): # 此处继承了pub类
def __init__(self,a)
pub.__init__(self) # 调用父类的接口,Python不会自动调用父类的构造函数
xxx
import modulexxx 导入模块
dir(modulexxx) 查看模块的类、变量和方法
vars(modulexxx) 查看模块的类、变量和方法,包含属性的值,字典形式返回,但有些类不能用
del variable 删除变量
print('Contact {} at{}'.formate(key,value))
print('xxxx',var)
----- ----- -----
引用 变量名称绑定对象的内存
----- ----- -----
VarA = ['xxx','yyy']
VarB = VarA
del VarA[0] #此时VarB看到的也是删掉了'xxx'
VarB = VarA[:] #此时VarB指向了一份独立的副本
如果是可变对象的变量名幅值给另一个变量名,也只是引用(指针)。
不可变对象 int,float,long,str,tupl (理解为总是值的操作)
可变对象 list,set,dict (理解为总是指针操作)
函数参数传递:
不可变对象传进去的是值
可变对象传进去的是指针
对于不可变类型的变量,如果要更改变量,则会创建一个新值,而旧值如果没有被引用就等待垃圾回收
对于可变的类型,如果两个变量名称用=赋值,则会指向同一个地址,需要用copy来复制一份
----- ----- -----
数据结构
----- ----- -----
<1>列表(List) [xxx,yyy,zzz]. (可变的数据类型)
有序项目的集合.包含的列表项可以是不同类型的
list.append(Item) 尾部添加一个项目
ListA.sort() 排序
del ListAp[x] 可以直接删除元素
<2>元组(Tuple) (xxx,yyy,zzz) (不可变)
将多个项目保存在一起,类似列表,但功能能少,没有增加/删除元素的功能
*如果只有一个元祖项,如下声明 singleTuple = (aaa,)
<3>字典(Dictionary) {key0: Values0, Key1: Values1} (可变的)
Keys键值与Values值意义建立联系。键值是唯一的。
keys不可变,Values可变。
不可排序。
*无法实现同性名(Keys)的信息标记。
循环调动 for key, value in Dict.items()
增加键值对 Dict['keynew'] = 'value'
判断是否存在 if 'key' in Dict: xxxx
<4>集合(Set/collection) set([xxx,yyy,zzz]) (可变的)
简单的对象的无序集合,功能较多.方法比较正式
if xxx in set1 检查元素是否属于集合
set2 = set1.copy() 复制一份(内存里有2份数据)
set2.add(aaa) 增加集合的元素
set2.issuperset(set1) 检查是否是包含
set2.remove(bbb)
set1&set2 输出交集
set1.intersection(set2) 输出交集
*序列 列表、元组、字典都可看做序列的表现形式
序列支持资格测试(membership test) ( if eee in/not in xxx)
索引操作 (indexing operations) list[0] list[-1]
支持切片运算符 (slicing) list[2:] list[:] list[-1](倒数第一个) list[1:-1]
带步长切片 list[::2] 索引的步进为2
能返回一份副本!
----- ----- -----
字符串
----- ----- -----
stra.join(strlist) 联结,将定界符stra插入字符串列表的元素之间,返回合并后的结果
"_@_".join(["11","22","33"])
stra.startswith('swa') 判断起始头
if "xxx" in stra: 判断是否包含
stra.find('war') 返回字段的位置,没有则返回-1
----- ----- -----
面向对象编程
----- ----- -----
class 类,关键字,能够创建一种新的类型Type
Object 对象,是类的实例Instance
Attribute 属性,包含类的字段和方法
Field 字段,从属于对象或类的变量
Method 方法,属于类的函数
字段类型:
instance Variables 实例的变量,
Class Variables 类的变量,共享的,这个类的任何对象修改的是同一个变量
方法类型
对象的方法
类的方法 用于便利地访问类对象,需要用到装饰器@classmethod来标记
私有属性 名称带双下划线,__priv
self 代表类的实例本身。
相当于Java中的this指针,必须放到类的方法的参数列表的开头。
就算原本是无需要参数的方法,也要带self参数
MyClass.method(self)
class Person: # 创建一个类
population = 0 # 类的变量/字段
__PrvNum = 1 # 私有变量,对外隐藏的
def __init__(self, name): # 构造函数
self.name = name # 对象的变量/字段
Person.population += 1
def SayHi(self): # 类的方法
print('hello,my name is ',self.name)
print('now have {} preson'.format(self.__class__.population))
@classmethod # 装饰器,指出接着是类方法
def how_many(cls): # 定义了类方法
print('we have {} preson'.format(cls.population))
p1 = Person('lucy') # 创建一个实例,自动调用__init__构造函数
p1.SayHi() # 调用实例的方法
p2 = Person('Tom')
p2.SayHi()
Person.how_many() # 调用类的公共方法
print(Person.population)
# print(Person.__PrvNum) #这条无法执行,因为__PrvNum是私有的
*当一个对象的变量与类变量名称相同时,类变量会被隐藏
*self.__class__.var 每个对象也可以通过这种方式范围类变量
继承 inheritance,实现代码重用,实现子类型
创建公共类(公共特性)-->子类A、子类(特有特性)
多态 polymorphism,接口在子类中实现不同,而父类的对象可以调用子类的接口。
就算父类实现了接口,也会调用子类的接口
Python中所有的方法都是虚拟的,即默认能用多态特性
class pub:
def __init__(self)
xxx
class sub(pub): # 此处继承了pub类
def __init__(self,a)
pub.__init__(self) # 调用父类的接口,Python不会自动调用父类的构造函数
xxx