1. 数据类型
Numbers(数字)
- 数字类型分3种:
int
(有符号整型)、float
(浮点型)、complex
(复数)(说明:Python 3中已去除long
类型,与int
类型合并)
def testDataType():
age = 18 # int
weight = 62.51 # float
isAdult = True # bool,只有True和False两个枚举值
name = "Tony" # string
print("age:", age, " type:", type(age))
print("weight:", weight, " type:", type(weight))
print("isAdult:", isAdult, " type:", type(isAdult))
print("name:", name, " type:", type(name))
# 变量的类型可以直接改变
age = name
print("age:", age)
a = b = c = 5
# a,b,c三个变量指向相同的内存空间,具有相同的值
print("a:", a, "b:", b, "c:", c)
print("id(a):", id(a), "id(b):", id(b), "id(c):", id(c))
String(字符串)
- 字符串用
""
或者''
引起来 - 字符串支持切片操作,是可迭代对象
name = 'jack'
_name = name[0:1]
List(列表)
-
List
(列表)是Python
中使用最频繁的数据类型,用“[]
”标识。列表可以完成大多数集合类的数据结构实现。 - 一个List中还可以同时包含不同类型的数据,支持字符、数字、字符串,甚至可以包含列表(即嵌套)。
- 切片:列表中值的切割也可以用到变量
[头下标:尾下标]
,这样就可以截取相应的列表,从左到右索引默认从0
开始,从右到左索引默认从-1
开始,下标可以为空(表示取到头或尾)
def testList():
list1 = ['Thomson', 78, 12.58, 'Sunny', 180.2]
list2 = [123, 'Tony']
print("list1:", list1) # 输出完整列表
print("list1[0]:", list1[0]) # 输出列表的第一个元素
print("list1[1:3]:", list1[1:3]) # 输出第二个至第三个元素
print("list1[2:]:", list1[2:]) # 输出从第三个开始至列表末尾的所有元素
print("list2 * 2 :", list2 * 2) # 输出列表两次
print("list1 + list2 :", list1 + list2) # 打印组合的列表
list1[1] = 100
print("设置list[1]:", list1) # 输出完整列表
list1.append("added data")
print("list添加元素:", list1) # 输出增加后的列表
Tuple(元组)
- 用“
()
”标识,内部元素用逗号隔开。元组不能二次赋值,相当于只读列表
def testTuple():
tp1 = ('Thomson', 78, 12.58, 'Sunny', 180.2)
tp2 = (123, 'Tony')
print("tp1:", tp1) # 输出完整元组
print("tp2:", tp2) # 输出完整元组
print("tp1[0]:", tp1[0]) # 输出元组的第一个元素
print("tp1[1:3]:", tp1[1:3]) # 输出第二个至第三个的元素
print("tp1[2:]:", tp1[2:]) # 输出从第三个开始至列表末尾的所有元素
print("tp2 * 2:", tp2 * 2) # 输出元组两次
print("tp1 + tp2:", tp1 + tp2) # 打印组合的元组
# tp1[1] = 100 # 不能修改元组内的元素
Dictionary(字典)
- 字典用“
{}
”标识,由索引(key
)和它对应的值value
组成。 - 列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典中的元素通过键存取
def testDictionary():
dict1 = {}
dict1['one'] = "This is one"
dict1[2] = "This is two"
dict2 = {'name': 'Tony', 'age': 24, 'height': 177}
print("dict1:", dict1)
print("dict1['one']:", dict1['one']) # 输出键为'one' 的值
print("dict1[2]:", dict1[2]) # 输出键为 2 的值
print("dict2:", dict2) # 输出完整的字典
print("dict2.keys():", dict2.keys()) # 输出所有键
print("dict2.values():", dict2.values()) # 输出所有值
Set(集合)
-
集合(
set
)是一个无序的不重复元素序列。 -
可以使用大括号
{ }
或者set()
函数创建集合,注意:创建一个空集合必须用set()
而不是{ }
,因为{ }
是用来创建一个空字典。
def testSet():
friuts = {"apple", "orange", "strawberry", "banana", "apple", "strawberry"}
print("friuts:", friuts)
print("type of friuts:", type(friuts))
arr = [1, 2, 3, 4, 5, 1]
numbers = set(arr)
print("numbers:", numbers)
friuts.add(1)
print("numbers add 1:", numbers)
其中,列表,元组,字典,集合为容器类型
2. 类
类的定义
- 使用
class
语句来创建一个新类,class
之后为类的名称并以冒号结尾 - 类的帮助信息可以通过
ClassName._doc_
查看,类体(class_suite
)由类成员、方法、数据属性组成
class Test:
"这是一个测试类"
def __init__(self):
self.__ivalue = 5
def getvalue(self):
return self.__ivalue
def testClass():
t = Test()
print(t.getvalue())
类成员访问权限
-
image.png__foo__
:定义的是特殊方法,一般是系统定义名字,类似__init__()
。
-
_foo
:以单下画线开头时表示的是protected
类型的变量,即保护类型只允许其本身与子类进行访问,不能用于from module import *
。 -
__foo
:以双下画线开头时,表示的是私有类型(private
)的变量,即只允许这个类本身进行访问。
类的继承
- 继承语法
class 子类(父类):类体
- 继承特点说明
- 在继承中基类的初始化方法
_init_()
不会被自动调用,它需要在其派生类的构造中亲自专门调用 - 在调用基类的方法时,需要使用
super()
前缀 - 先在本类中查找调用的方法,找不到才去基类中找
- 可以多继承
- 在继承中基类的初始化方法
class Person:
"人"
visited = 0
def __init__(self, name, age, height):
self.__name = name # 私有成员,访问权限为private
self._age = age # 保护成员,访问权限为protected
self.height = height # 公有成员,访问权限为public
def getName(self):
return self.__name
def getAge(self):
return self._age
def showInfo(self):
print("name:", self.__name)
print("age:", self._age)
print("height:", self.height)
print("visited:", self.visited)
Person.visited = Person.visited +1
class Teacher(Person):
"老师"
def __init__(self, name, age, height):
super().__init__(name, age, height)
self.__title = None
def getTitle(self):
return self.__title
def setTitle(self, title):
self.__title = title
def showInfo(self):
print("title:", self.__title)
super().showInfo()
def testPerson():
"测试方法"
tony = Person("Tony", 25, 1.77)
tony.showInfo()
print()
jenny = Teacher("Jenny", 34, 1.68)
jenny.setTitle("教授")
jenny.showInfo()
网友评论