python

1.以下代码的执行结果:

a='abc'
b=a
a='xyz'
print b

python解释器做的事
1. 在内存中创建了一个 ‘abc’ 的字符串;
2. 在内存中创建了一个名为 a 的变量,并把它指向 ‘abc’ 。也可以把一个变量 a 赋值给另一个变量 b ,这个操作实际上是把变量 b 指向变
量 a 所指向的数据。因此最终print b 会打印abc。

2.list:python内置的数据类型

s = ['python', 'java', ['asp', 'php'], 'scheme']

可以将s看成一个二维数组,len(s)=4,s[0]为python,s[2]为[‘asp’,’php’]
s[2][0]为asp,s[2][1]为php。s下标是从0开始的.
tuple:元组和list基本一样,只是tuple一旦初始化就无法更改类似于const修饰的数组。
注意:定义一个只有1个元素的tuple,如果你这么定义:

>>> t = (1)  
>>> t
>>> 1

定义的不是tuple,是 1 这个数!所以,只有1个元素的tuple定义时必须加一个逗号, 即t=(1,)
最后来看一个“可变的”tuple:

>>> t = ('a', 'b', ['A', 'B'])
>>> t[2][0] = 'X'  
>>> t[2][1] = 'Y'  
>>> t  
('a', 'b', ['X', 'Y'])

tuple所谓的“不变”是说,tuple的 每个元素,指向永远不变。即指向 ‘a’ ,就不能改成指向 ‘b’ ,指向一个list, 就不能改成指向其他对象,但指向的这个list本身是可变的!

3.if判断条件可以简写,比如写:

if a:
    print "ahha"

只要a是非零数值,非空字符串,非空list等,就判断为True,否则为False。

4.dict利用哈希表的原理通过键值来获取值,作为key的对象无法改变,但是dict所占用的内存非常高。

5.函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当 于给这个函数起了一个“别名”,函数可以同时返回多个值,但其实就是一个tuple。

6.默认参数可以简化函数的调用。设置默认参数时,有几点 要注意:
一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么 默认参数不能放在必选参数前面); 二是如何设置默认参数。 当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参 数就可以作为默认参数。 使用默认参数有什么好处?最大的好处是能降低调用函数的难度。

7.尾递归是指,在函数返回的时候,调用自身本身,并且,return语句不能包含表达 式。这样,编译器或者解释器就可以把尾递归做优化,使递归本身无论调用多少 次,都只占用一个栈帧,不会出现栈溢出的情况,遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化, 所以,即使把上面的 fact(n) 函数改成尾递归方式,也会导致栈溢出。

8.切片:L[0:3] 表示,从索引0开始取,直到索引3为止,但不包括索引3。即索引0,1, 2,正好是3个元素。前10个数,每两个取一个:L[:10:2]。
所有数,每5个取一个:L[::5]。

9.列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来 创建list的生成式。 举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 可以用 range(1, 11).

10.for 循环其实可以同时使用两个甚至多个变量,比如 dict 的 iteritems() 可 以同时迭代key和value.

11.generator保存的是算法,每次调用 next() ,就计算出下一个元素的 值,直到计算到最后一个元素,没有更多的元素时,抛出StopIteration的错误。

12.这就是定义generator的另一种方法。如果一个函数定义中包含 yield 关键字,那 么这个函数就不再是一个普通函数,而是一个generator.

13在代码运行期间动态增加功能的方 式,称之为“装试器”(Decorator)。在面向对象(OOP)的设计模式中,decorator被称为装饰模式。OOP的装饰模式 需要通过继承和组合来实现,而Python除了能支持OOP的decorator外,直接从语法层次支持decorator。Python的decorator可以用函数实现,也可以用类实现。

14.is 判断两个实例是否是同一个, 即是否是对同一对象的引用. 改方法对tuple 和str 同样适用。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值