零基础 学 python开发 (Genius套餐A) 二十五
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了零基础 学 python开发 (Genius套餐A) 二十五,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3405字,纯文字阅读大概需要5分钟。
内容图文
![零基础 学 python开发 (Genius套餐A) 二十五](/upload/InfoBanner/zyjiaocheng/829/7d6f3f2faa9742e1b4e40149e464503f.jpg)
夜光序言:
对自己承诺:我要强大到任何事情都无法破坏我内心的平和……
正文:
4.6 字典与函数
4.6.1 目标
Python 的数据类型是非常灵活的,字典是非常常用的一种类型,字典可以作为函数参数,函数也可以返回一个字典。
目标是设计一个程序存储省份与其所辖城市的信息,实现查询功能,掌握字典再函数中的应用。
4.6.2 字典与函数
1、字段作为函数参数
字典作为函数参数,如果在函数中改变了字典,那么调用处的字典也同时被改变!也就是说调用处的实际参数与函数的形式参数是同一个变量, 这一点与普通的整数、浮点数、字符串变量不同。
例 4-6-1:字典作为函数参数
def fun(dict):
dict["name"]="aaa"
print("inside:",dict)
dict={"name":"xxx","age":30};
print("before",dict)
fun(dict)
print("after",dict);
结果:
before {'name': 'xxx', 'age': 30}
inside: {'name': 'aaa', 'age': 30}
after {'name': 'aaa', 'age': 30}
由此可见,dict 在函数中变化后,在主程序中也变化了。
2、函数返回字典
字典可以作为函数返回值返回。
例 4-6-2:字典作为函数返回值
def fun():
dict={}
dict["name"]="aaa"
dict["age"]=20
dict["gender"]="male"
return dict
def show(dict):
keys=dict.keys()
for key in keys:
print(key,dict[key])
dict=fun()
print(dict)
show(dict)
结果:
{'name': 'aaa', 'age': 20, 'gender': 'male'}
name aaa
age 20
gender male
4.6.3 字典与字典参数
Python 中除了用"*"表示的元组可变参数外,还有一种是"**"表示的字典可变参数,一般标识为**kargs,这种 kargs 在函数中是一个字典,在调用时实际参数按 key=value 的键值对方式提供参数。
例 4-6-3:具有字典可变参数的函数
def fun(x,y=2,**kargs):
print(x,y)
print(kargs)
fun(1,2)
fun(1,2,z=3)
fun(1,2,a=3,b="demo")
fun(x=1,y=2,z=3)
fun(y=1,x=2,z=5,s="demo")
fun(x=1,z=3)
结果:
1 2
{}
1 2
{'z': 3}
1 2
{'a': 3, 'b': 'demo'}
1 2
{'z': 3}
2 1
{'z': 5, 's': 'demo'}
1 2
{'z': 3}
由此可见在调用时 fun(1,2,a=3,b="demo")使得 kargs={'a': 3, 'b': 'demo'}变成一个字典。
注意如果函数有*args 及**kargs 参数同时存在,那么*args 必须放在**kargs 参数前面,即函数最后两个参数是*args,**kargs。
例 4-6-4:具有元组可变参数与字典可变参数的函数
def fun(x,y=2,*args,**kargs):
print(x,y)
print(args)
print(kargs)
fun(1,2)
fun(1,2,3,4)
fun(1,2,3,4,z=5,s="demo")
结果:
1 2
()
{}
1 2
(3, 4)
{}
1 2
(3, 4)
{'z': 5, 's': 'demo'}
由于*args 的参数时位置参数,因此有*args 出现时,*args 前面的函数参数在调用时不能
以关键字参数的方式出现,只能以位置参数的方式出现,例如下列是错误的调用:
fun(x=1,y=2,3,4)
4.6.4 【案例】字典存储省份与城市
1、案例描述
设计一个程序存储省份与其所辖城市的信息,实现查询功能。
2、案例分析
设计字典 provinces 如下:
provinces={"广东":["广州","深圳"],"四川":["成都", "内江", "乐山"]}
字典 provinces 的 keys 是各个省的名称,一个省的值时一个列表,是它下辖的各个城市。
3、案例代码
#provinces 是全局的变量
provinces={}
def append(province,cities):
?global provinces
?if province not in provinces.keys():
?provinces[province]=cities
?else:
?print(province+"已经存在")
def show():
?for p in provinces.keys():
?print(p,provinces[p])
def seekProvince(province):
?if province in provinces.keys():
?print(province,end=":")
?for c in provinces[province]:
?print(c,end=" ")
?print()
?else:
?print("没有这个省份")
def seekCity(city):
?for p in provinces.keys():
?if city in provinces[p]:
?print(city+"属于"+p+"省")
?return
?print("没有这个城市")
append("广东",["广州","深圳"])
append("四川",["成都", "内江", "乐山"])
append("贵州",["贵阳","六盘水","兴义"])
show()
seekProvince("四川")
seekCity("六盘水")
程序结果:
广东 ['广州', '深圳']
四川 ['成都', '内江', '乐山']
贵州 ['贵阳', '六盘水', '兴义']
四川:成都 内江 乐山
六盘水属于贵州省
内容总结
以上是互联网集市为您收集整理的零基础 学 python开发 (Genius套餐A) 二十五全部内容,希望文章能够帮你解决零基础 学 python开发 (Genius套餐A) 二十五所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。