1.深拷贝和浅拷贝
a.什么是拷贝?
将变量中的值赋值一份,产生新的数据,然后将新的数据对应的地址返回。
b.浅拷贝
直接拷贝地址
c.深拷贝
将地址对应的值拷贝,产生新的地址
![](https://img.haomeiwen.com/i14187468/d3c1f13dbbef1053.png)
2.字典和列表的应用
说明:列表的元素和字典的值可以是任何类型的数据
1.列表中有字典
![](https://img.haomeiwen.com/i14187468/812ba966bd7916e9.png)
![](https://img.haomeiwen.com/i14187468/32e91ffd49fabe42.png)
2.字典中有列表
写一个程序,保存一个班级的信息,
包含班级名,位置,所有学生(学生中需要保存名字,年龄和学校)
![](https://img.haomeiwen.com/i14187468/81fb81f97de57e97.png)
练习:在班级中添加一个学生,姓名:老王, 年龄:40, 学校:北大青鸟
![](https://img.haomeiwen.com/i14187468/9d43308722fffb93.png)
删除班里小于30岁的学生
![](https://img.haomeiwen.com/i14187468/57a0bce75549cfdb.png)
3.函数的声明
说明:函数就是对实现某一特定功能代码段的封装
分类:自定义函数(程序员声明实现其功能)和内置函数(系统已经声明实现完成)
1.声明函数的语法
def 函数名(参数列表):
函数体
说明:
a.def ---->python中声明函数的关键字
b.函数名----->标识符,不能是关键字,遵守PEP8命名规范(所有字母小写多个单词用下划线隔开)
见名知义(看见名字就知道函数的功能)
c.() ----->固定写法
d.参数列表---->形参列表,参数名1,参数名2,....
可以有多个函数,也可以没有
参数是用来从函数外部给函数里面传值得
e. : ---->固定格式
f.函数体--->就是实现函数功能的代码段
2.初学者声明函数的步骤
a.先确定函数的功能
b.根据功能确定函数名
c.确定参数:确定有没有,确定有几个(看实现函数的功能需不需要从函数里面传值,需要传几个)
d.实现函数的功能
e.确定返回值
3.函数的调用
声明函数的时候,不会执行函数体,函数体自由在函数调用的时候才会执行
函数名(实参列表)
说明:
函数名 --->必须是已经声明过的变量的函数
() --->固定写法
实参列表 ----->数据1,数据2.....
用来给形参赋值
实例:
![](https://img.haomeiwen.com/i14187468/982c37b85483062d.png)
4.函数的调用
1.格式
函数名(实参列表)
2.函数的调用过程(重点!!!!)
第一步:回到函数声明的位置
第二步:把实参赋值给形参(传参:一定保证每个参都有值)
第三步:执行函数体
第四步:返回返回值---->返回给函数调用表达值
第五步:执行完函数体回到函数调用的位置,接着执行后面的代码
![](https://img.haomeiwen.com/i14187468/05a01ad74dd40193.png)
5.函数的参数
1.位置参数和关键参数
根据调用函数
位置参数:按照实参的顺序一一给形参赋值
关键字:形参1=值1,形参2=值2...
![](https://img.haomeiwen.com/i14187468/d177370cf5c0669d.png)
2.默认值
函数声明的时候可以给参数设置默认值,但是有默认值的参数必须放在参数后面
有默认值的参数,在调用的时候不用传参
![](https://img.haomeiwen.com/i14187468/c33f9039316925dd.png)
3.不定长参数
参数不确定的时候,可以形参前面加*,将这个形参变成一个元祖,用来接收多个参数
注意:如果函数有多个参数,那么不定长的参数要放在后面
![](https://img.haomeiwen.com/i14187468/12763f09bec9b729.png)
6.函数的返回值
函数的返回值就是函数调用的表达式的值,就是return关键字后面的表达式的值
python中所有的函数值都是返回值,返回值默认是None
执行函数体没有遇到return,函数的返回值就是None;遇到return函数,返回值就是return后面的值
函数调用表达式 --->调用函数的语句(函数名(实参))
return ---->只能写在函数体中,用来返回返回值和结束函数
注意:看一个函数的返回值,只看有没有遇到return,只要没有遇到就是None,遇到就是return后面的值
![](https://img.haomeiwen.com/i14187468/0ed66466e2b9bfa7.png)
情况二:有return
'''
中兴好书的时候,一旦于丹return,函数就直接结束,并且把return后面的结果作为返回值
注意:并不是只要函数中有retrun,函数的返回就是return后面的值
![](https://img.haomeiwen.com/i14187468/1aa401f739a7ccc7.png)
![](https://img.haomeiwen.com/i14187468/d41e8647acd29c54.png)
如果是先函数的功能会产生新的数据,就将新的数据返回。如果不会产生新的数据就不用返回
![](https://img.haomeiwen.com/i14187468/567537df8b76abf8.png)
![](https://img.haomeiwen.com/i14187468/75cb412253732402.png)
![](https://img.haomeiwen.com/i14187468/28f8cf457d83154c.png)
4.函数的调用
1.补充:python中的函数可以有多个返回值
练习:求多个数和的平均值
![](https://img.haomeiwen.com/i14187468/b840616cbdf98abf.png)
2.函数的调用过程是一个压栈的过程
每次调用函数的时候,系统都会在内存中(栈)开辟空间来存储函数执行过程中产生数据(函数中声明的变量)。
当函数调用完成后,这块内存会自动销毁。
网友评论