我们将两个 print 语句放在同一行,此时必须在第一个 print 语句最后加分号,否则会导致语法错误。 从井号#开始,直到这行结束为止的所有内容都是注释 Python 对代码的缩进要求非常严格,同一个级别代码块的缩进量必须一样
常见的函数: print 输出 ,int,str,float 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组); 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合) 常见的数字类型: int(长整型) float(浮点型) complex(复数) bool(布尔型) del 清除数据 type(s)查询是什么类型 pop():根据索引值删除元素 del:根据索引值删除元素 remove():根据元素值进行删除 clear():删除列表所有元素 copy() 方法 进行集合和字典的拷贝,b=a.copy(); strname[start : end : step] start默认是从0开始,end默认是截取最后一个字符所在的索引 len(string)返回字符串长度
字符串类型:s = a[i:j], 进行字符串截取 ,可以用+号进行字符串拼接,*字符复用 列表:多维列表,可以是数字也可以是字符串,同时还可以小列表
元组类型:只能读不能写,元组用 () 标识,但是元组操作和列表一样,可以进行拼接和截取,相当于string
字典类型:列表是有序的对象集合,字典是无序的对象集合,字典用"{ }"标识,字典由索引(key)和它对应的值value组成, 数据结构很像map
集合类型:基本功能是进行成员关系测试和删除重复元,创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
集中数据类型的比较: 列表[ ](list):有序可改变集合,允许重复数据。可以进行拼接 append() 方法用于在列表的末尾追加元素,obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是 列表、元组等。 extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。 如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。
元组( )(tuple):有序不可改变集合,允许重复数据。 集合{ }(set):无序无索引(索引为键值)集合,无重复数据。 字典{ }(dictionary):无序,可变,有索引集合,无重复数据。 是一种无序的、可变的序列,它的元素以“键值对(key- value),key值相同的修改,不同进行插入,转变list的时候可以根据key 也是可以根据values
python数据类型转换: int(x) :将x转化为一个整数,向下取整, float(x):将x转化为一个浮点数 complex(x [,imge]):将x转化为一个复数, a=1,b=2,complex(a,b) ,1+2j一种复数形式
str(x):将x转化为一个字符串 repr(x):将对象 x 转换为表达式字符串 tuple(s):将序列s转化为一个元组 list(s):将序列s转化为一个列表 set(s):将序列s转化为可变集合,可用于列表去重
控制流语句
if 表达式 1: 代码块 1 elif 表达式 2: 代码块 2 elif 表达式 3: 代码块 3 …//其它elif语句 else: 代码块 n
python中的类:
class TheFirstDemo:
'''这是一个学习Python定义的第一个类'''
#构造方法
def __init__(self):
print("调用构造方法")
# 下面定义了一个类属性
add = 'http://c.biancheng.net'
# 下面定义了一个say方法
def say(self, content):
print(content)
创建类对象的过程,又称为类的实例化。
字典:
#使用字符串作为key
scores = {'数学': 95, '英语': 92, '语文': 84}
print(scores)
#使用元组和数字作为key
dict1 = {(20, 30): 'great', 30: [1,2,3]}
print(dict1)
#创建空元组
dict2 = {}
print(dict2)
字典快速删除key values
scores = {'数学': 95, '语文': 89, '英语': 90}
print(scores.keys())
print(scores.values())
print(scores.items())
类的属性和方法:
类体中、所有函数之外:此范围定义的变量,称为类属性或类变量; 类体中,所有函数内部:以“self.变量名”的方式定义的变量,称为实例属性或实例变量; 类体中,所有函数内部:以“变量名=变量值”的方式定义的变量,称为局部变量。
class CLanguage :
# 下面定义了2个类变量
name = "C语言中文网"
add = "http://c.biancheng.net"
# 下面定义了一个say实例方法
def say(self, content):
print(content)
//调用和修改
CLanguage.name = "Python教程"
CLanguage.add = "http://c.biancheng.net/python"
print(CLanguage.name)
print(CLanguage.add)
实例变量调用时才能创建属性:只有调用了 say() 方法的类对象,才包含 catalog 实例变量。
class CLanguage :
def __init__(self):
self.name = "C语言中文网"
self.add = "http://c.biancheng.net"
# 下面定义了一个say实例方法
def say(self):
//定义一个局部变量
self.catalog = 13
局部变量: 局部变量直接以“变量名=值”的方式进行定义,
class CLanguage :
def count(self,money):
sale = 0.8*money
print("优惠后的价格为:",sale)
clang = CLanguage()
clang.count(100)
python描述符详解: set(self, obj, type=None):在设置属性时将调用这一方法(本节后续用 setter 表示); get(self, obj, value):在读取属性时将调用这一方法(本节后续用 getter 表示); delete(self, obj):对属性调用 del 时将调用这一方法。 其中,实现了 setter 和 getter 方法的描述符类被称为数据描述符;反之,如果只实现了 getter 方法,则称为非数据描述符。
python封装 ; 只有public 和private public:公有属性的类变量和类函数,在类的外部、类内部以及子类(后续讲继承特性时会做详细介绍)中,都可以正常访问; private:私有属性的类变量和类函数,只能在本类内部使用,类的外部以及子类都无法使用。 默认情况下,Python 类中的变量和方法都是公有(public)的,它们的名称前都没有下划线(_); 如果类中的变量和函数,其名称以双下划线“__”开头,则该变量(函数)为私有变量(私有函数),其属性等同于 private。
def setname(self, name):
if len(name) < 3:
raise ValueError('名称长度必须大于3!')
self.__name = name
def __display(self):
print(self.__name,self.__add)
python继承: Python 却支持多继承 class 类名(父类1, 父类2, …):
class People:
def say(self):
print("我是一个人,名字是:",self.name)
class Animal:
def display(self):
print("人也是高级动物")
class Person(People, Animal):
pass
zhangsan = Person()
zhangsan.name = "张三"
zhangsan.say()
zhangsan.display()
运行结果,结果为:
方法重写:
class Bird:
def isWing(self):
print("鸟有翅膀")
def fly(self):
print("鸟会飞")
class Ostrich(Bird):
def fly(self):
print("鸵鸟不会飞")
ostrich = Ostrich()
ostrich.fly()
调用父类的构造函数: 类可以看做一个独立空间,在类的外部调用其中的实例方法,可以向调用普通函数那样,只不过需要额外备注类名(此方式又称为未绑定方法); 使用 super() 函数。但如果涉及多继承,该函数只能调用第一个直接父类的构造方法。
class People:
def __init__(self,name):
self.name = name
def say(self):
print("我是人,名字为:",self.name)
class Animal:
def __init__(self,food):
self.food = food
def display(self):
print("我是动物,我吃",self.food)
class Person(People, Animal):
def __init__(self,name,food):
super().__init__(name)
Animal.__init__(self,food)
per = Person("zhangsan","熟食")
per.say()
per.display()
类的多态: CPython 和 CLinux 都继承自 CLanguage 类,且各自都重写了父类的 say() 方法。从运行结果可以看出,同一变量 a 在执行同一个 say() 方法时,由于 a 实际表示不同的类实例对象,因此 a.say() 调用的并不是同一个类中的 say() 方法,这就是多态。
class CLanguage:
def say(self):
print("调用的是 Clanguage 类的say方法")
class CPython(CLanguage):
def say(self):
print("调用的是 CPython 类的say方法")
class CLinux(CLanguage):
def say(self):
print("调用的是 CLinux 类的say方法")
a = CLanguage()
a.say()
a = CPython()
a.say()
a = CLinux()
a.say()
python常用的方法: new() 是一种负责创建类实例的静态方法,它无需使用 staticmethod 装饰器修饰,且该方法会优先 init() 初始化方法被调用
repr() 会返回和调用者有关的 “类名+object at+内存地址”信息。当然,我们还可以通过在类中重写这个方法,从而实现当输出实例化对象时,输出我们想要的信息。
调用 init() 方法构造当前类的实例化对象,而本节要学的 del() 方法,功能正好和 init() 相反,其用来销毁实例化对象。
提到了 dir() 函数,通过此函数可以某个对象拥有的所有的属性名和方法名,该函数会返回一个包含有所有属性名和方法名的有序列表。
|