1.集合的运算和可变不可变类型
-
& 交集运算
-
| 并集运算
-
-差集运算
-
^ 亦或集
-
<= 检查一个集合是否是另一个集合的子集
-
< 检查一个集合是否是另一个集合的真子集
-
=检查一个集合是否是另一个集合的超集
-
检查一个集合是否是另一个集合的真超集
-
可变不可变类型
- 不可变类型:不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放在这一个新的内存地址里, 而原来的那个变量就不在引用原数据的内存地址而转为引用新数据的内存地址了,相当于改变了变量指向的内存地址.
有:int ,str,tuple - 可变类型:可变数据类型是指变量所指向的内存地址处的值是可以被改变的,也就是说可变类型在赋值的时候copy的是地址或者引用.
有;list set dict
总结:可变类型可变的是值,不可变不可变的是id
- 不可变类型:不可变数据类型在第一次声明赋值声明的时候, 会在内存中开辟一块空间, 用来存放这个变量被赋的值, 而这个变量实际上存储的, 并不是被赋予的这个值, 而是存放这个值所在空间的内存地址, 通过这个地址, 变量就可以在内存中取出数据了. 所谓不可变就是说, 我们不能改变这个数据在内存中的值, 所以当我们改变这个变量的赋值时, 只是在内存中重新开辟了一块空间, 将这一条新的数据存放在这一个新的内存地址里, 而原来的那个变量就不在引用原数据的内存地址而转为引用新数据的内存地址了,相当于改变了变量指向的内存地址.
2.函数的简介
- 函数也是一个对象
- 函数用来保存一些可执行的代码,并且可以在需要时,对这些语句进行多次调用
语法
def 函数名([形参1,形参2,形参3....]):
代码块
注意:
函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)
print是函数对象 print()是调用函数
3.函数的参数
- 3.1 形参和实参
- 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值
- 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参
- 3.2 函数的传递方式
- 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效
- 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参
- 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递
- 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去
# 形参参数默认值
def fun(a,b,c=None):
print(a)
print(b)
print(c)
fun(12,12)
# 位置参数
def fun(a,b,c):
print(a)
print(b)
print(c)
fun(12,12,1)
# 关键字参数
def fun(a,b,c):
print(a)
print(b)
print(c)
fun(b = 2,a = 5,c = 4)
# 混合使用位置参数和关键字参数
def fun(a,b,c):
print(a)
print(b)
print(c)
fun(1,c=4,b=3)
4. 不定长参数
- 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中
- 带*号的形参只能有一个,可以和其他参数配合使用
- *形参只能接受位置参数,不能接受关键字参数
- **形参可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值
- **形参只有一个,并且必须写在所有参数的后面
5.参数的拆包
- 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
- 要求序列中的元素的个数必须和形参的个数一致
6.作业
# 1. 打印名片程序:输入姓名,电话号码,性别,最后打印出来名片
# • 控制姓名长度为6-20
# • 电话号码长度11
# • 性别只能允许输入男或女
# • 每一样信息不允许为空
while True:
name = input('输入姓名:')
if len(name) >= 6 and len(name) <= 20:
num = (input('输入电话号码:'))
if len(num) == 11:
gender = input('输入性别;')
if gender == '男' or gender == '女':
break
else:
print('''不知道这是什么
------------请重新输入-----------''')
continue
else:
print('''电话长度必须等于11
------------请重新输入-----------''')
continue
else:
print('''姓名长度不为6-20
------------请重新输入-----------''')
continue
print(name)
print(num)
print(gender)
# 使用函数求前20个斐波那契数列斐波那契数列:1,1,2,3,5,8,13,21...即:
# 起始两项均为1,此后的项分别为前两项之和
# def fip_num(n):
def fip_num(n):
a = 1
b = 0
for i in range(n):
a, b = b, b + a
if b == 1 or b == 2:
print(b)
else:
print(b)
fip_num(20)
# 编写一段代码,定义一个函数求1-100之间所有整数的和,并调用该函数打印出结果
def fun(n):
sum1 = 0
for i in range(n+1):
sum1 += i
print(sum1)
fun(100)