python基础语法
0.python3的六个基本数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)。
操作类型的两个函数
1.字符串注意点:
2.list注意点:
list中的各项可以不相同,不是等价于数组!!!!!
3.tuple注意点:
元组用(),list用[]
4.集合set注意点:
5.字典dictionary注意点:
6.运算符:
6.1成员运算符(in, not in)、身份运算符(is, is not),这个其实相当于id()函数,返回所在内存地址
7.list:
注意*运算符的使用,以及切片和反向切片,list有一系列函数,len(),min()等等,删除用del()函数,remove()函数
8.set:
注意remove()函数和discard()函数的区别,都是删除一个项,但是报不报错有区别
9.print函数中end关键字
10.注意range(a,b,c)函数的用法以及和len()联合用在for循环中,range(len(a))
11.循环-else语句
12.pass语句
13.迭代器,生成器(yeild)以及如何为自己的类添加迭代器,和stopIteration,和iter()和for循环联合使用是不需要next()的
14.函数
14.1函数参数的声明和使用以及匿名函数lambda
14.2变量作用域
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问
跟C++大不一样
14.3global和nonlocal关键字
1.当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。
2.修改全局变量需要用global
3.如果要修改嵌套作用域(enclosing 作用域,外层非全局作用域)中的变量则需要 nonlocal 关键字了
4.除了上面的2和3修改外面的变量可以通过函数参数
15.列表推导式(小技巧)
16.del语句
依据索引,而不是值删除项
17.遍历技巧
18.尽量使用from xxx import function的方式,也就是尽可能少的导入符号,防止覆盖了自己的变量,或者import xxx然后xxx.function()的方式,极不推荐import xxx *方式
from xxx import yyy解决所有!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
19.每个模块都有一个__name__属性,当其值是'__main__'时,表明该模块自身在运行,否则是被引入,python被引入时候,他会自己先执行自己的主代码,用__name__可以避免这个问题
20.python的格式化输出:
20.1格式化输出时format()和repr()以及rjust()用法
1 print('{0:2d} {1:3d} {2:4d}'.format(x, x*x, x*x*x)) 2 3 4 >>> for x in range(1, 11): 5 ... print(repr(x).rjust(2), repr(x*x).rjust(3), end=' ') 6 ... # 注意前一行 'end' 的使用 7 ... print(repr(x*x*x).rjust(4))
20.2输出字典
1 >>> table = {'Google': 1, 'Runoob': 2, 'Taobao': 3} 2 >>> print('Runoob: {0[Runoob]:d}; Google: {0[Google]:d}; Taobao: {0[Taobao]:d}'.format(table)) 3 Runoob: 2; Google: 1; Taobao: 3 4 5 6 #输出格式化,用{}括起来,冒号前面是索引,找到format()中的对应值,冒号后面是格式化的格式
20.3使用pickle将数据序列化永久存储在文件上
21.异常处理
21.1 try--except XXXerror ---finally的异常处理串以及一个raise关键词用来抛出异常
22.python的面向对象
22.1self代表类的实例,而非类
类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self
1 class Test: 2 def prt(self): 3 print(self) 4 print(self.__class__) 5 6 t = Test() 7 t.prt() 8 9 10 以上实例执行结果为: 11 12 <__main__.Test instance at 0x100771878> 13 __main__.Test
22.2构造函数为__init(self)__
22.3python的多继承问题
需要注意圆括号中父类的顺序,若是父类中有相同的方法名,而在子类使用时未指定,python从左至右搜索 即方法在子类中未找到时,从左到右查找父类中是否包含方法。
1 #!/usr/bin/python3 2 3 #类定义 4 class people: 5 #定义基本属性 6 name = '' 7 age = 0 8 #定义私有属性,私有属性在类外部无法直接进行访问 9 __weight = 0 10 #定义构造方法 11 def __init__(self,n,a,w): 12 self.name = n 13 self.age = a 14 self.__weight = w 15 def speak(self): 16 print("%s 说: 我 %d 岁。" %(self.name,self.age)) 17 18 #单继承示例 19 class student(people): 20 grade = '' 21 def __init__(self,n,a,w,g): 22 #调用父类的构函 23 people.__init__(self,n,a,w) 24 self.grade = g 25 #覆写父类的方法 26 def speak(self): 27 print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade)) 28 29 #另一个类,多重继承之前的准备 30 class speaker(): 31 topic = '' 32 name = '' 33 def __init__(self,n,t): 34 self.name = n 35 self.topic = t 36 def speak(self): 37 print("我叫 %s,我是一个演说家,我演讲的主题是 %s"%(self.name,self.topic)) 38 39 #多重继承 40 class sample(speaker,student): 41 a ='' 42 def __init__(self,n,a,w,g,t): 43 student.__init__(self,n,a,w,g) 44 speaker.__init__(self,n,t) 45 46 test = sample("Tim",25,80,4,"Python") 47 test.speak() #方法名同,默认调用的是在括号中排前地父类的方法 48 执行以上程序输出结果为: 49 50 我叫 Tim,我是一个演说家,我演讲的主题是 Python
22.4类私有的实现:
类的私有属性
__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
类的方法
在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。
self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。
类的私有方法
__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods。
22.5类的专有方法(还有个str())
22.6运算符重载:就是实现上面的专有方法