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
View Code

22.4类私有的实现:

类的私有属性

__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs

类的方法

在类地内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数 self,且为第一个参数,self 代表的是类的实例。

self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self。

类的私有方法

__private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类地外部调用。self.__private_methods

22.5类的专有方法(还有个str())

22.6运算符重载:就是实现上面的专有方法

posted @ 2018-11-22 21:41  回溯法  阅读(719)  评论(0编辑  收藏  举报