Python笔记

1.input()和raw_input()的区别?

两个都是接受输入的函数,input()接受的是一个合法的表达式,而raw_input()输入的数据都为字符串类型。

2.函数式编程

函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允许返回一个函数!Python对函数式编程提供部分支持。由于Python允许使用变量,因此,Python不是纯函数式编程语言。

3.Python内存管理和垃圾回收

当Python的某个对象的引用计数为0时,说明没有引用指向该对象,该对象就要成为被回收的对象了。例如,某个新建的对象被分配给某个应用,对象的引用计数为1。如果引用被删除,对象的引用计数为0,那么该对象就可以被垃圾回收了。如下代码:

1
2
a = [1, 2, 3]
del a

4.Python深拷贝与浅拷贝

Python是一门面向对象语言。任何在Python中创建的变量,最后都指向一个对象。指向这个对象的其实是一个引用。如果对于这个对象进行复制,一般只是增加了一个引用指向这个对象,没有复制对象本身。如果要复制对象的话,就涉及Python深拷贝的操作。
一、利用切片操作和工厂方法list方法拷贝就叫浅拷贝,只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。
二、利用copy中的deepcopy方法进行拷贝就叫做深拷贝,外围和内部元素都进行了拷贝对象本身,而不是引用。但是对于数字,字符串和其他原子类型对象等,没有被拷贝的说法,即便是用深拷贝,查看id的话也是一样的,如果对其重新赋值,也只是新创建一个对象,替换掉旧的而已。

5.Python字符串反转or列表反转

python内置了丰富的操作字符串的函数。下面就以s = ‘abc’为例,介绍几个常用的字符串操作函数。
一、列表转换成字符串
a = list(s) b = ‘’.join(a)
二、字符串反转
1.a = list(s) a.reverse() s = ‘’.join(a)
2.s = s[::-1]
三、分隔字符串
a.split() #括号里添加参数,如’#‘表示字符串以‘#’分开
面试题
a = ‘i am superman’将这个字符串按照每个单词反转输出,即a = ‘superman am i’
x = a.split(‘ ‘)
y = x[::-1]
z = ‘ ‘.join(y)
ps:这是我亲身经历过的题,很遗憾我是用最最原始的方法来做的,f*k,让面试官感到我不是一个接地气的pythoner