字典
- 字典是Python语言中唯一的映射类型
- 字典对象是可变的,它是一个容器类型,能存储任意个数的Python对象,其中也可包括其他容器类型
- 字典是Python中最强大的数据类型之一
字典的定义:
- d = {}
- d = {“key1”:”value1”}
- d = {“key1”:”value1”,”key2”:”value3”}
字典的特性:
- 字典是可变数据类型;可使用len(d)内置函数,计算字典的长度;
- 字典是无序的,与序列(str,list,tuple)不同的是,不支持索引,切片,连接与重复。只能通过key值获取对应的value值;
- 字典支持异构,支持嵌套;
字典的增加:
- d.update()
- d.setdefault(key[,value])
如果key存在,不更改;如果key不存在,添加key-value到字典中;
如果key值有,并不存在d字典中,默认value值为None;
字典的删除:
- d.pop(key) # 根据某个key值删除字典中的key-value值;
- d.popitem() # 随机删除key-value值
- d.clear() # 清空字典的所有内容,字典还存在
- del(d[“key”]) # 删除指定的key值
- del(d) # 删除字典d,d直接不存在
In [12]: d
Out[12]: {'passwd': '234', 'user1': 'westos'}
In [13]: del(d["passwd"])
In [14]: d
Out[14]: {'user1': 'westos'}
In [15]: del(d)
In [16]: d
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-16-e29311f6f1bf> in <module>()
----> 1 d
NameError: name 'd' is not defined
In [17]:
字典的修改:
- d[“key2”]=”value3”
In [7]: d
Out[7]: {'passwd': '123', 'user1': 'westos'}
In [8]: d["passwd"] = "234"
In [9]: d
Out[9]: {'passwd': '234', 'user1': 'westos'}
字典信息的查看:
- d.get(“key”) # 如果key存在,返回value值;如果不存在,返回None;
- d[“key”] # 如果key存在,返回value值;如果不存在,直接报错;
- d.has_keys(“key”) # 如果key存在,返回True;如果不存- 在,返回False;
- d.items()
- d.keys()
- d.values()
In [2]: d
Out[2]: {'passwd': '123', 'user1': 'westos'}
In [3]: d.keys()
Out[3]: ['passwd', 'user1']
In [4]: d.values()
Out[4]: ['123', 'westos']
遍历字典所有key-value值:
In [5]: d
Out[5]: {'passwd': '123', 'user1': 'westos'}
In [6]: for key,value in d.items():
...: print key,value
...:
passwd 123
user1 westos
字典的复制:
- d.copy()
In [105]: d1 = d.copy()
In [106]: id(d)
Out[106]: 20314528
In [107]: id(d1)
Out[107]: 20338192
函数
定义函数:
- def关键字,依次写出函数名、括号、括号中的参数和冒号 :
- 在缩进块中编写函数体,函数的返回值用 return 语句返回
内置函数:
- min,max,sum,zip,abs,
int,float,str,list,tuple,bool,
In [56]: bool(1)
Out[56]: True
In [57]: bool("")
Out[57]: False
函数实质上是一个变量;函数名是一个指向函数对象的引用,完全可以把函数赋值给一个变量,相当于给这个函数起了个别名;
In [59]: a = abs # a变量指向abs函数
In [60]: a(-1) # 可以通过a实现abs的功能;
Out[60]: 1
In [61]: abs(-1)
Out[61]: 1
定义与调用函数:
def 函数名([形式参数]):
函数体 # 函数要执行的程序
return 返回值 # 如果没有return返回,默认返回值为None;
函数名([实参])
注意:有返回值的函数,必须print fun(),可以打印出返回值;
函数的返回值:
- 在函数中,一旦遇到return关键字,函数就执行结束;
- 函数返回值只能返回一个,如果想间接返回多个值,返回值实际是一个元组;
函数的参数传值:
- 必选参数: 形参与实参的个数必须相同,否则直接报错;
- 默认参数: 在定义函数时,给形参一个默认值;
- 可变参数: 传入的参数个数是可变的,可以是n-1个,也可以是0个;一般实参中用*args来表示可变参数;args接收的是一个元组(tuple);
空函数:
- 定义一个什么事也不做的空函数,可以用 pass 语句;
- pass 可以用来作为占位符,还没想好怎么写函数的代码,
就可以先放一个 pass ,让代码能运行起来
def nofunc():
pass
参数检查:
- 调用函数时,如果参数个数不对,Python解释器会自动检查出来并抛出 TypeError
- 如果参数类型不对,Python 解释器就无法帮我们检查
- 数据类型检查可以用内置函数 isinstance 实现
变量的作用域:
- 全局参数:在函数外定义的函数
- 局部参数:在函数内部定义的函数;
- global:声明局部变量为全局变量;
a = "westos"
def func():
global a
a = "test"
func()
print a
如果不用global定义变量,print a打印出来的还是”westos”