目录
一、函数
1、函数传参的方式
def func(a,b,c):
print(f'a:{a}')
print(f'b:{b}')
print(f'c:{c}')
# 位置传参 按形参的位置顺序将实参的值给形参
func(1,2,3)
print('--'*5)
# 关键字传参 指定形参给哪个实参(必须为函数形参名)
func(b=2,c=3,a=1)
print('--'*5)
# 混合使用 关键字必须在位置参数后面
func(1,c=3,b=2)
print('--'*5)
2、形参
形参:
普通形参 缺省参数 不定长元组形参 不定长字典形参
# 缺省参数(普通参数后面) :函数定义时,给形参一个默认值。
# 函数调用时,如果没有值传入,则取默认值
def func(a,b,c=10):
print(f'a:{a}')
print(f'b:{b}')
print(f'c:{c}')
func(1,2)
# 不定长参数 *args
def func(*agrs,**kwargs):
print(agrs)
print(kwargs)
# 形参前面加* 变为不定长元组形参,接受所有位置实参,类型为元组
# 形参前面加** 变为不定长字典形参,接受所有位置实参,类型为字典
print('-'*10)
func(1,2,3,4,5,6,6,)
print('-'*10)
func(a=1,b=2,c=4,d=9)
print('-'*10)
func(1,2,3,4,b=2,c=4,d=9)
print('-'*10)
# 不定长参数应用
def my_sum(*args,**kwargs):
num=0
for i in args:
num+=i
for j in kwargs.values():
num+=j
print(num)
my_sum(1,2,3,a=4,b=5,d=9)
# 形参的完整格式
# 普通形参 缺省参数 不定长元组形参 不定长字典形参
# def 函数名(普通形参,不定长元组形参,缺省参数,不定长字典形参)
# print中的sep 输出值之间的连接符 默认为空格
二、拆包
1、组包
组包 将多个数据给一个变量
a=1,2,3 #元组类型
def func():
return 1,2 #组包
2、拆包
拆包 将容器的数据分别给多个变量 变量个数=数据个数
b,c,d=a
e,f=func()
n,m=[10,20]
q,p={'name':'l','age':18}
3、拆包应用-------交换两个变量值
# 拆包应用 交换两个变量值
a=10
b=2
b,a=a,b
三、类型的可变与不可变
类型的可变与不可变: 不改变变量引用的前提下,是否能改变变量引用中的数据不可变类型:int float bool str tuple 可变类型:list dict
1、不可变类型
a=10
b=10
print(id(a),id(b)) #python中的内存优化,对于不可变类型进行的
print('-'*10)
# 交互终端中,小整数默认范围-5~255 如果是小整数,使用相同的引用地址,如果不是,开辟新的内存
# 代码中无所谓
print(id(a)==id(b))
print('-'*10)
a='hello'
b='hello'
print(id(a),id(b))
print('-'*10)
a=(1,2)
b=(1,2)
print(id(a),id(b))
print('-'*10)
2、可变类型
my_list=[1,2,3]
my_list1=[1,2,3]
print(my_list,id(my_list))
print(my_list1,id(my_list1))
print('-'*10)
my_dict={'name':'ly','age':19}
my_dict1={'name':'ly','age':19}
print(my_dict,id(my_dict))
print(my_dict1,id(my_dict1))
print('-'*10)
注意:
元组是不可变类型,可以在里面存放可变类型
my_tuple2=(1,2,[3,4]) print(my_tuple2,id(my_tuple2)) my_tuple2[2][1]=10 print(my_tuple2,id(my_tuple2))