python基础总结

一,基础语法java

1,输入与输出python

1.1 代码中要修改不可变数据会出现什么问题?抛出什么异常?mysql

答:代码不会正常运行,抛出TypeError异常。sql

1.2 a=1,b=2,不用中间变量交换a和b的值?数据库

答:
flask

方法一:app

1. a=a+bdom

2. b=a-bscrapy

3. a=a-b函数

方法二:

a=a^b

b=b^a

a=a^b

方法三:

a,b = b,a

1.3 print调用Python中底层的什么方法?

答:print方法默认调用sys.stdout.write方法,即往控制台打印字符串。

1.4 简述你对input()函数的理解?

在Python3中,input()获取用户输入,不论用户输入的是什么,获取到的都是字符串类型的。

在Python2中有raw_input()和input(),raw_input()和Python3中的input()做用是同样的,input()输入的是什么数据类型的,获取到的就是什么数据类型的。

1.5 Python2中range和xrange的区别?

答:二者用法相同,不一样的是range返回的结果是一个列表,而xrange的结果是一个生成器,前者是直接开辟一块内存空间来保存列表,后者是边循环边使用,只有使用时才会开辟内存空间,因此当列表很长时,使用xrange性能要比range好。

1.6  read、readline和readlines的区别?

答:read读取整个文件。

readline:读取下一行,使用生成器方法。

readlines:读取整个文件到一个迭代器以供咱们遍历。

1.7 异常

在except中return后还会不会执行finally中的代码?怎么抛出自定义异常?

答:会继续处理finally中的代码;用raise方法能够抛出自定义异常。

1.8 介绍一下except的做用和用法?

答:except:#捕获全部异常

except:<异常名>:#捕获指定异常

except:<异常名1,异常名2>:捕获异常1      或者异常2

except:<异常名>,<数据>:捕获指定异常及其附加的数据

except:<异常名1,异常名2>:<数据>:捕获异常名1或者异常名2及其附加的数据

2 模块与包

2.1 经常使用的Python标准库都有哪些?

答:os操做系统,time时间,random随机数,pymysql链接数据库,threading线程,multiprocessing进程,queue队列等。

第三方库:

Django和flask也是第三方库,requests,virtualenv,selenium,scrapy,xadmin,celery,re,hashlib,md5.

经常使用的科学计算库(如Numpy,Scipy,Pandas).

2.2 赋值,浅拷贝和深拷贝的区别?

1、赋值

在Python中,对象的赋值就是简单的对象引用,这点和C++不一样,以下所示:

a = [1,2,"hello",['python','C++']]
b = a

在上述状况下,a和b是同样的,他们指向同一片内存,b不过是a的别名,是引用。

咱们可使用b is a 去判断,返回true,代表他们地址相同,内容相同,也可使用id()函数来查看两个列表的地址是否相同。

赋值操做(包括对象做为参数,返回值)不会开辟新的内存空间,它只是复制了对象的引用。也就是说除了b这个名字以外,没有其余的内存开销。修改了a,也就影响了b,同理,修改了b也就影响了a.

二,浅拷贝(shallow copy)

浅拷贝会建立新对象,其内容非原对象自己的引用,而是原对象内第一层对象的引用。

浅拷贝有三种形式:切片操做,工厂函数,copy模块中的copy函数。

好比上述的列表a;

切片操做:b = a[:]或者b = [x for x in a];

工厂函数:b = list(a);

copy函数:b = copy.copy(a);

浅拷贝产生的列表b再也不是列表a了,使用is判断能够发现他们不是同一个对象,使用id查看,他们也不指向同一片内存空间。可是当咱们使用id(x)for x in a 和id(x) for x in b 来查看a和b中元素的地址时,能够看到两者包含的元素的地址是相同的。

在这种状况下,列表a和b是不一样的对象,修改列表b理论上不会影响到列表a.

可是要注意的是,浅拷贝之因此称之为浅拷贝,是它仅仅只拷贝了一层,在列表a中有一个嵌套的list,若是咱们修改了它,状况就不同了。

好比:a[3].append('java')。查看列表b,会发现列表b也发生了变化,这是由于,咱们修改了嵌套的list,修改外层元素,会修改它的引用,让它们指向别的位置,修改嵌套列表中的元素,列表的地址并未发生变化,指向的都是用一个位置。

相关文章
相关标签/搜索