61课continue
用于结束本次循环,进入下一次。
62else语句
while语句和for语句自带一个else语句
如果循环没有被break终结,则则执行else
63循环代码优化
其他连接字符用join,插入删除在列表尾部,
64zip并行迭代
zip()对多个数列迭代,就是将列表变成表格,在最短数列用完以后停止。
65推导式创建序列
为了减少代码
列表,【表达式 for item in 可迭代对象】可以【表达式 for item in 可迭代对象 if 条件判断】
y=[x for x in range(5) if x%2==0]
print(y)
字典,{健:值 for 表达式 in 迭代对象},类似列表,也可以加if,for
print()
my_text="i love you,i love you very much"
char_count={c:my_text.count(c) for c in my_text} #字典式增加字典
print(char_count)
char_count1={}
for c in my_text:
char_count1[c]=my_text.count(c) #普通增加字典
print(char_count1)
集合推导式,集合本质是单个的字典
生成器推导式,生成器推导式,因为是小括号,所以有生成器特性,只能使用一次且不能打印。
#生成器推导式(元组)
b=(x for x in range(10) if x%3==0)
print(b)
for x in b:
if x%6==0:
print(x)
for x in b:
if x%6==0:
print(x)
66用循环绘制棋盘同心圆
练习成功
67函数定义调用
def 函数名(参数,列表):
函数
形式参数不需要声明类型,实参需要。
68参数,文档字符串
用三个单引号,'''文档说明'''解释函数,不会执行。
调用help(函数名._doc_)打印输出解释
69返回值详解
结束函数后返回值,为空默认None
如果需要多个返回值,使用列表,元组等将其保存。return[a,b,c]
可以通过函数返回值空结束函数下面的执行
70函数也是对象
内存是,堆和栈两部分
71局部全局变量
函数以外定义,函数内定义,想要在函数内改变全局变量,增加global 关键字声明
72全局变量个局部效率
局部效率高,在循环时在循环外定义全局变量
73参数的传递
传递可变对象,其实是对可变对象的引用,没有生成新的地址
74传递不可变对象
传递时还是引用,但是当赋值时,会创建一个新变量。
75浅拷贝,和深层拷贝,导入copy模块。
浅,copy()只是拷贝引用个体,如果修改引用也原参数修改,添加则不会。
深,deepcopy()将个体和下级都拷贝,
76参数传递,不可变对象
传递不可变对象里包含子对象可变,则元组内可变对象可被修改。
77参数类型
位置参数,默认值参数,命名参数,可变参数
78可变参数,强制命名参数
可变参数是可变数量的参数,*param是将参数放到元组,**param是将参数放到字典。
在带星号的元组参数之后,输入新的参数,必须强制命名参数。
79lambda表达式匿名函数
lambda 参数:简单表达式,
多个匿名表达式做参数,传入参数时应该用数列g【0123456】表示函数数列,再传入参数。函数也是对象。
80eval函数用法
将字符串当成有效表达式求值返回计算结果
s=“print(1)”
eval(s)
等于将“ ”中字符串编程可执行语句
还可以d=eval(“a+b”,(元组)),表示d=a+b
81递归函数
递归调用函数形式一致,内存为如图,不停增加栈,直到满。
82递归实例
#递归阶乘
def text02(n):
if n==0:
return 1
else:
return n*text02(n-1)
print(text02(5))
83 嵌套函数
在函数内部的函数,内部函数只能在内部定义,内部调用
可以用来数据封装,避免重复代码,闭包
84nonlocal global关键字
nonloca声明外层局部变量,如果想在外部使用内部变量,加函数声明。
global全局变量,同理
85LEGB规则
用于嵌套函数查找
86面向对象
设计者思维,
87 对象进化故事
88类的定义
类是摸具,对象是饼干,
类的使用,相当于函数的集合,在使用函数之前要先说明类
class Student:
def __init__(self,name,score):
self.name=name
self.score=score
def say_score(self): #self必须为第一个参数
print('{0}的分数是:{1}'.format(self.name,self.score))
s1=Student('hyh','18')
s1.say_score()
结果:hyh的分数是:18
内存分析,这个类中参数self的作用是储存后两个参数,相当于函数有一个储存参数的地址,名字是self。
89构造函数_init_()
90实例属性,内存
如果生成s2,则在堆中另开劈空间。
但是新开辟的空间不包含s1后添加的age对象,只有初始对象。