Python程序设计复习(二)

164 阅读5分钟

第四章 程序控制结构

程序控制结构中的表达式由运算符和操作数组成,结果为true or false

一.条件表达式

(一)条件表达式的True、False值

1.False:False、0、None、空列表、空元组、空集合、空字典、空字符串
2.True:非False都为True

(二)运算符

1.关系运算符---=,<,>

(1)可以连续使用,符合人的逻辑思维
print(1<2<3) True
print(1<3>2) True

(2)条件表达式中不允许使用赋值运算符"="

(3)具有惰性求值的特点,只计算必须计算的值

2.逻辑运算符

(1)and、or---具有惰性求值的特点

(2)not---not false=true,not true=false

3.使用函数

二.选择结构

(一)单分支结构 if

1.采用严格的缩进格式

2.“:”不可缺少,表示一个语句块的开始

3.if条件表达式的判断没有括号

4.存在非缩进,不换行的格式但不建议
如 if 3>2:print(3);print(5)

(二)双分支结构 if else

if 表达式:
    语句块1
else:
    语句块2

(三)多分支结构

if 表达式1:
    语句块1
elif 表达式2:
    语句块2:
elif 表达式3:
    语句块3
else

(四)选择嵌套结构

在if中嵌套if和else, 在else中嵌套if和 else, 要注意控制不同级别代码的缩进量

三.循环结构

(一)for循环

for i in 可迭代对象:
    语句块1
else:
    语句块2

else语句与for语句同级,当for循环自然结束时else语句才执行。for循环因break语句异常结束循环,else语句不执行

(二)while循环

while 条件表达式:
    语句块1
else:
    语句块2

else语句与while语句同级,当while循环的条件表达式不成立结束时else语句才执行。while循环因break语句异常结束循环,else语句不执行

(三)break与continue

break:结束所属层次的循环
continue:结束某层次的一次循环

(四)循环代码优化技巧

1.先实现预定功能
2.再对代码进行优化,追求更高的执行效率

第五章 函数

一.函数参数

(一)顺序索引参数

Python默认按参数对应位置穿参

(二)关键字参数

当参数较多时,防止传值错位,在实参前加上形参的名字

def f(name,word):
    print(name+word)
A=liuzun 
B=爱编程
f(name=A,word=B)

(三)形参默认参数

为形参设置默认值,若实参不为空则被实参值覆盖

def f(name=liuzun,word=爱编程)

(四)收集参数

def f(*params):
    print(len(params))
    print(params[1])
f('A','B','C')

当收集参数与一般参数共存时,要使用关键字参数为一般参数指定传值方向

def f(*p,word1,word2):
    print(len(p))
    print(p[0])
f('A',word1='B',word2='C')

二.全局变量与局部变量

(一)全局变量

函数体外声明的变量,作用域为全部代码,但不能在函数内部修改(若修改其实是在函数内部创建了一个重名的局部变量)

(二)局部变量

函数内部声明的变量,作用域为所在函数体,可以用gloable将局部变量转变为全局变量

三.内嵌函数---在函数内部定义函数

(一)内嵌函数的特点

1.内嵌函数只能访问外嵌函数的值,不能直接修改外嵌函数的值
2.内嵌函数只能在所在的外嵌函数中调用
3.内嵌函数修改外嵌函数的值的间接方法

  • 容器对象
  • nonlocal将内部变量转变为外嵌函数的变量

(二)函数闭包

1.定义:内嵌函数对外嵌函数的非全局变量进行引用,那么内嵌函数就会被称为闭包

def FunX(x):
    def FunY(y):
        return x*y
    return FunY
i=FunX(8)(5)
j=FunX(8)
print(i)    #40
print(j(5)) #40

四.lambda表达式

(一)特点

只保留参数表达式的函数

lambda x,y,z:x+y+z

(二)优点

  • 不使用时,自动释放内存空间
  • 精简代码
  • 增加代码可读性,不必向前寻找函数

第六章 类与对象

一.面向对象程序设计特点

(一)继承
(二)封装
(三)多态

二.面向对象编程

(一)self

与java中this作用相同,用于接收对象的实例

(二)私有变量

1.用__属性名的方式声明私有变量
2.私有变量只能通过方法或对象名.-类名--属性名的方式访问
3.继承的特点

  • 子类自动继承父类的属性和方法
  • 子类可以重写父类的成员和方法
  • 如果父类重写自己的构造方法,那么子类将会继承父类在构造方法中声明的对象,若想访问父类的属性
    • 可以用super()函数
    • 将子类声明的对象传入父类构造方法中,然后将父类属性的值赋给子类的属性

4.属性的名字若与方法重名,方法就会被覆盖
5.类对象的改变可以使未被赋值的实例对象发生改变
6.绑定:类对象首先访问方法和属性后,方法和属性就与类对象绑定,那么实例对象就无法对属性和方法进行操作,不过在方法的参数列表中加入self接收实例对象,实例对象就能对属性和方法进行操作