1、创建数据库,初始化,存入数据、查询操作
def init(data):
data['first']={}
data['middle']={}
data['last']={}
storage={}
init(storage)
print(storage)
my_sister='Anne Lie Hetland'
storage['middle'].setdefault('Lie',[]).append(my_sister)
def lookup(data,label,name):
return data[label].get(name)
print(lookup(storage,'middle','Lie'))
2、函数参数改变啥时候会导致全局变量改变
Python参数传递采用的肯定是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象——相当于通过“传值”来传递对象。
3、name='a'
n=name
n='b'
>>name
'a'
解释:当n被赋予一个新的值的时候,他会被指向存入该值的新的地址,两变量不再指向同一个地址了。
4、参数传递之关键字传递方式
5、*容器()
**字典
12.03
1、复习参数传递
2、容器类型参数
表示和类别:打一个*,这是一个元组参数;打两个则表示字典。
元组只能装未知参数,字典可以装带关键字参数。
传参情况:一个容器参数、多个参数(当容器参数放中间的时候,最后一个一定要以关键字的形式传参,否则会因为歧义而报错)
work1:
def in_the_middle(*x,y,z):
print(x,y,z)
in_the_middle(1,2,3,4,5,y=6,z=7)
容器参数后面的参数均要以关键字的形式进行传参。
def dic(**params):
print(params)
dic(x=1,y=2,z=3)
def dic1(x,y,z=3,*tuple,**dic):
print(x,y,z)
print(tuple)
print(dic)
dic1(1,2,3,4,5,m=1)
3、解包
def container(greeting,name):
print(greeting,name)
params={'name':'Garibel','greeting':'hello'}
container(**params)
总结:今天主要是学习了Python里参数传递的打包和解包两种参数传递情形。
解包时有中特殊情况,就是函数定义时和函数调用时怎么定义怎么调用,关键在函数内部的使用是直接输出对象还是通过对象来进行调用。