《深入理解Python》读书笔记Ⅰ

1、在Python中万物皆对象,字符串是对象,列表是对象,函数式对象,甚至模块也是对象。万物皆对象:一切都可以赋值给变量或作为参数传递给函数。


2、Python函数没有明显的begin和end,没有标明函数的开始和结束的花括号。唯一的分隔符是一个冒号(:),接着代码本身是缩进的。代码块是通过它们的缩进来定义的,开始缩进表示块的开始,取消缩进表示块的结束。


3、Python使用硬回车来分割语句,冒号和缩进来分割代码块。C++和Java使用分号来分割语句,花括号来分割代码块。


4、模块是对象,并且所有的模块都有一个内置属性__name__,如果import模块,那么__name__的值通常为模块的文件名,不带路径或文件扩展名。但也可以像一个标准的程序一样直接运行模块,这种情况下__name__的值将是一个特别的缺省值,__main__。


5、字典(dictionary)中没有元素顺序的概念,它会在你想要以一种特定的,可重现的顺序(像以key的字母表顺序)存取dictionary元素的时候骚扰你。dictionary的key是大小写敏感的。dictionary的值可以是任意数据类型,包括字符串、整数、对象,甚至其他的dictionary,在单个dictionary里,dictionary的值并不需要全部都是同一数据类型,可以根据需要混用和匹配。


6、append向list的末尾追加单个元素。insert将单个元素插到list中,数值参数是插入点的索引,如:list.insert(2,"new"),list中的元素不必唯一。extend用来连接list,不要使用多个参数来调用extend,要使用一个list参数进行调用,如:list.extend(["two","elements"])。


7、extend(扩展)和append(追加)的差别:

li = ['a','b','c']

li.extend(['d','e','f'])  #现在新的li中有6个元素,['a','b','c','d','e','f']

li = ['a','b','c']

li.append(['d','e','f']) #现在新的li包含4个元素,['a','b','c',['d','e','f']]


8、index在list中查找一个值的首次出现位置,如:list.index("new"),如果list中没有找到值,Python会引发一个异常。要测试一个值是否在list内,使用in,如果值存在,它返回True,否则返回False。


9、Python中的布尔数据类型:

0为false;其他所有数值皆为true。

空串(“”)为false;其他所有字符串皆为true。

空list([ ])为false;其他所有list皆为true。

空tuple(())为false;其他所有tuple皆为true。

空dictionary({})为false;其他所有dictionary皆为true。

Python中的True和False,第一个字母是大写的。


10、remove仅仅删除list中一个值得首次出现,如:list.remove("new"),如果在list中没有找到值,Python会引发一个异常。pop:删除list的最后一个元素,然后返回删除元素的值。


11、list也可以用+运算符连接起来,list = list+otherlist 相当于list.extend(otherlist),但+运算符把一个新(连接后)的list作为值返回,而extend只修改存在的list。Python支持+=运算符,list+=[‘two'] 等同于list.extend(['two'])。*运算符可以作为一个重复器作用于list,li = [1,2]*3等同于li = [1,2]+[1,2]+[1,2],即将三个list连接成一个。


12、tuple和list之间的相互转换:

tuple可以转换成list,反之亦然。内置的tuple函数接收一个list,并返回一个有着相同元素的tuple。而list函数接收一个tuple返回一个list。


13、一次赋多值

v = ('a','b','e')

(x,y,z) = v    #此时x被赋予'a'值,y被赋予'b'值,z被赋予'e'值

连续赋值

range(7)      #range(7)返回[0,1,2,3,4,5,6]

(MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY) = range(7)   #此时MONDAY~SUNDAY分别被赋予0~6

内置的range函数返回一个元素为整数的list,这个函数的简化调用形式是接收一个上限值,返回一个初始值从0开始的list,它依次递增,直到但不包含上限值。也可以传入其他的参数来指定一个非0的初始值和非1的步长。


14、当定义一个只包含一个元素的tuple时逗号是必须的,如(userCount,)。如果省略逗号,Python不会知道(userCount)究竟是一个只包含一个元素的tuple还是变量userCount的值。


15、Python中试图将一个字符串同一个非字符串连接会引发一个异常,字符串连接只能在被连接的每一个都是字符串时起作用。


16、映射list

Python的强大特性之一是其对list的解析,通过对list中的每个元素应用一个函数,从而将一个list映射为另一个list。

li = [1,9,8,4]

[elem*2 for elem in li]      #返回[2,18,16,8]

Python循环遍历li中的每个元素,对每个元素均执行如下操作:首先临时将其值赋给变量elem,然后Python应用函数elem*2进行计算,最后将计算结果追加到要返回的list中。


17、dictionary的keys方法返回一个包含所有键的list,这个list没按dictionary定义的顺序输出。

values方法返回一个包含所有值得list,它同keys方法返回的list输出顺序相同。

items方法返回一个由形如(key,value)组成的tuple的list,这个list包括dictionary中所有的数据。

params = {'server':'mpligrim','database':'master','uid':'sa','pwd':'secret'}

params.keys()     #返回['server','uid','database','pwd']

params.values()    #返回['mpilgrim','sa','master','secret']

params.items()     #返回[('server','mpligrim'),('uid','sa'),('database','master'),('pwd','secret')]


18、split与join正好相反,它将一个字符串分割成多元素list,分隔符(";")被完全去掉,它没有在返回的list中的任意元素中出现。split接受一个可选的第二个参数,它是要分割的次数。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值