python 进阶学习1-词典

本文介绍了Python中的词典操作、文件读写、模块导入方法及参数传递技巧。包括词典的增删改查、文件的打开与读写、不同方式导入模块以及如何使用包裹传递参数。
作者:Vamei 出处:http://www.cnblogs.com/vamei
01、词典
词典的元素没有顺序不能通过下标引用元素。词典是通过键来引用
词典的常用方法:
dic.keys()           # 返回dic所有的键
dic.values()         # 返回dic所有的值
print dic.items()          # 返回dic所有的元素(键值对)
dic.clear()                # 清空dic,dict变为{}
del dic['tom']             # 删除 dic 的‘tom’元素
print(len(dic))#词典中元素的总数

dic={
	'DXT':"美女",
	'DWH':"炖胎1",
	'LSQ':"炖胎2",
	'MAOMAO':"炖炖胎"
}	

print (type(dic))
print (dic['DXT'])
print (dic['MAOMAO'])
print(dic) 
print(dic.keys())
print(dic.values())
输出:
<class 'dict'>
美女 炖炖胎 {'DXT': '美女', 'DWH': '炖胎1', 'LSQ': '炖胎2', 'MAOMAO': '炖炖胎'} dict_keys(['DXT', 'DWH', 'LSQ', 'MAOMAO']) dict_values(['美女', '炖胎1', '炖胎2', '炖炖胎'])

  • 词典元素的循环调用
for key in dic:
	print(dic[key])
02、文本的输入与输出
打开文件:
f=open("test.txt","r") #"r"是读文件

f=open("test.txt","rb")#"rb"是读二进制文件

f=open("test.txt","w")#"w"是写文件

f=open("test.txt","a") #"a"是在文件后追加写

读文件:
content=f.read()#读取所有内容

content=f.read(100)#读100字节

content=f.readlines( )#读一行

content=f.readlines( )#读每行
如果文件是文本文件,还可以直接遍历文件对象获取每行:
for line in content:
     print(line)



写文件:
f=open("test.txt","a")#在文件后追加写

f.write('I am writing!')

f.close()


f.writelines(list_of_text_strings)#写入多行

03、模块
引入模块

我们先写一个first.py文件,内容如下:

def laugh():
    print 'HaHaHaHa'

 

再写一个second.py,并引入first中的程序:

import first

for i in range(10):
    first.laugh()

在second.py中,我们使用了first.py中定义的laugh()函数。

引入模块后,可以通过模块.对象的方式来调用引入模块中的某个对象。上面例子中,first为引入的模块,laugh()是我们所引入的对象。

Python中还有其它的引入方式,

import a as b             # 引入模块a,并将模块a重命名为b

from a import function1   # 从模块a中引入function1对象。调用a中对象时,我们不用再说明模块,即直接使用function1,而不是a.function1

from a import *           # 从模块a中引入所有对象。调用a中对象时,我们不用再说明模块,即直接使用对象,而不是a.对象

这些引用方式,可以方便后面的程序书写。

搜索路径

Python会在以下路径中搜索它想要寻找的模块:

  1. 程序所在的文件夹
  2. 标准库的安装路径
  3. 操作系统环境变量PYTHONPATH所包含的路径

 

如果你有自定义的模块,或者下载的模块,可以根据情况放在相应的路径,以便Python可以找到。


04、参数传递之包裹传递
包裹传递
定义函数时,我们有时候并不知道调用的时候会传递多少个参数。这时候,包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会非常有用。
def func(*name):
	print(type(name))
	print(name)

func('DXT','MAOMAO')
func(1,2,3)

在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple),这就是包裹位置传递。

为了提醒Python参数,name是包裹位置传递所用的元组名,在定义func时,在name前加*号。

输出:
<class 'tuple'>
('DXT', 'MAOMAO')
<class 'tuple'>
(1, 2, 3)
当传递的是字典时,在name前加**号
def func1(**dict):
	print(type(dict))
	print (dict)


func1(a=1,b=44)
输出:
<class 'dict'>
{'a': 1, 'b': 44}


解包裹
*和**,也可以在调用的时候使用,即解包裹(unpacking)
  • 对tuple的解包裹:
def func2(a,b,c):
	print(a,b,c)

args=(1,3,4)
func2(*args)
所谓的解包裹,就是在传递tuple时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,是为了提醒Python:我想要把args拆成分散的三个元素,分别传递给a,b,c。

  • 对字典的解包裹:
dict2={
	'a':1,
	'b':2,
	'c':3
}
func2(**dict2)
输出:
1 2 3
在传递词典dict时,让词典的每个键值对作为一个关键字传递给func










评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值