集合
集合简介
• 集合表现形式set 集合和列表非常相似
• 不同点
• 集合只能存储不可变对象
• 集合中存储的对象是无序的
• 集合不能出现重复元素
• 使用{}来创建集合
• 可以通过set()来将序列和字典转换成集合
• len() 使用len()来获取集合中元素的数量
• add()像集合中添加元素
• update()将一个集合中的元素添加到另一个集合当中
• pop()随机删除集合中的一个元素一般是删除最后一个元素
• remove() 删除集合中指定的元素
• clear() 清空集合
集合的运算
& 交集运算
(1)| 并集运算
(2)- 差集运算
(3)^ 亦或集
(4)<= 检查一个集合是否是另一个集合的子集
(5)< 检查一个集合是否是另一个集合的真子集
(6)>=检查一个集合是否是另一个集合的超集
(7)>检查一个集合是否是另一个集合的真超集
可变对象
每个对象都保存了三个数据
- id(标识)
- type(类型)
- value(值)
列表就是一个可变对象
a[0] = 10 (改的是对象里面的value)
这个操作是通过变量去修改对象里面的值
这个操作不会改变变量所指向的对象
a = [1,2,3]
print('修改前',a,id(a))
通过索引修改列表
a[0] = 10
print('修改后',a,id(a))
a = [4,5,6] (改的是变量)
这个操作是在给变量重新赋值
这种操作会让变量指向新的对象
a = [1,2,3]
b = a
b = [7,8,9]
print('a',a,id(a))
print('b',b,id(b))
函数
函数简介
函数也是个对象(function)
函数用来保存一些可执行的代码, 在你需要的时候可以对这些语句进行多次调用
函数中保存的代码不会立即执行,需要调用函数的时候代码才能执行
调用函数 函数对象()
语法
def 函数名([形参1,形参2,形参3....])
代码块
def fn():
print('这是我的第一个函数')
print(fn)
fn()
fn是函数对象 fn()调用函数
print是函数对象 print()调用函数
函数的参数
- 定义一个函数,可以用来求任意2个数的和
参数 - 在定义函数的时候,可以在函数后面的括号里面定义数量不等的形参
- 多个形参要以(,)逗号隔开
- 形参也叫形式参数,定义形参就相当于在函数内部声明了变量,但是并没有赋值
- 实参(实际参数)
- 如果函数在定义的时候,指定了形参,那么在调用函数的时候也必须传递形参
- 实参将会赋值给对应的形参,就是有几个形参就得传递几个实参
def fn(a,b):
print(a,'+',b,'=',a+b)
fn(1,2)
fn(88,666)
函数的传递方式
定义一个函数的时候是可以指定默认值的
指定了默认值之后,如果用户传递了参数则默认值不生效
如果用户没有传递,则默认值生效
位置传参
位置参数就是将对应位置上的实参赋值给对应位置上的形参
关键字传参
关键字参数,可以不按照定义的顺序去传递,根据参数名去传递参数
位置参数和关键字参数可以混合使用,必须将位置参数写到前面
实参可以传递任意类型的对象 - 在函数中对形参进行赋值,不会影响其他的变量
- 当我们通过形参去修改对象时(value),会影响到所指向该对象的变量
不定长参数
在定义函数的时候,可以在形参的前面加上一个(星号)
这样这个形参将会获取到所有的实参
它会将这些实参保存到一个元组当中
定义一个函数 求任意数的和
a会接受所有位置的实参,并且会将这些实参统一保存到一个元组当中
def s1(a):
定义一个变量保存结果
r = 0
遍历元组,将元组当中的数进行相加
for n in a:
r += n
print(r)
s1(1,2,3,4,5,6)
带星号的参数是可以和其他参数进行配合使用的,但是注意带星号的参数只能后一个
def fn1(a,b,c):
print('a = ',a)
print('b = ',b)
print('c = ',c)
fn1(1,2,3,4,5,c=6)
** 形参可以接收其他关键字参数,它会将这些参数统一保存到一个字典当中
字典的key就是参数的名字,字典的value就是参数的值
** 形参也只能有一个,并且必须写在所有参数的后面
def fn3(**a):
print('a =',a)
fn3(b = 1,d = 2,c = 3)
参数的解包
- 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递
- 要求序列中的元素的个数必须和形参的个数一致