python基础知识(持续更新)

【摘要】 常见面试题https://www.zhangjunbk.com/article/23397 静态方法https://www.cnblogs.com/Meanwey/p/9788713.html
1、copy 和 deepcopy 的区别是什么?
python中的对象之间的赋值是按引用传送的。 (1)copy()浅拷贝,只拷贝父对象,不会拷贝对象的内部的子对象。
(…

常见面试题https://www.zhangjunbk.com/article/23397
静态方法https://www.cnblogs.com/Meanwey/p/9788713.html

1、copy 和 deepcopy 的区别是什么?

python中的对象之间的赋值是按引用传送的。
(1)copy()浅拷贝,只拷贝父对象,不会拷贝对象的内部的子对象。

(2)deepcopy()深拷贝,拷贝父对象及其子对象。

#!/usr/bin/python
## -*-f= coding:utf-8 -*-
import copy
origin=[1,2,[3,4]]
cop1=origin #引用
cop2=copy.copy(origin)#浅拷贝
cop3=copy.deepcopy(origin)#深拷贝
origin[2][0]="hey!"
origin[0]="hey!"

print("原来的值:",origin)
print("引用值:",cop1)
print("浅拷贝:",cop2)
print("深拷贝:",cop3)
print("---------------")

print("初始对象地址",id(origin[0]))
print("引用的对象地址",id(cop1[0]))
print("浅拷贝对象地址",id(cop2[0]))
print("深拷贝对象地址",id(cop3[0]))
print("---------------")

print("初始对象地址",id(origin[2][0]))
print("引用的子对象地址",id(cop1[2][0]))
print("浅拷贝子对象地址",id(cop2[2][0]))
print("深拷贝子对象地址",id(cop3[2][0]))

  
 

结果为如下:

原来的值: ['hey!', 2, ['hey!', 4]]
引用值: ['hey!', 2, ['hey!', 4]]
浅拷贝: [1, 2, ['hey!', 4]]
深拷贝: [1, 2, [3, 4]]
---------------
初始对象地址 1497843333168
引用的对象地址 1497843333168
浅拷贝对象地址 1497801451824
深拷贝对象地址 1497801451824
---------------
初始对象地址 1497843333168
引用的子对象地址 1497843333168
浅拷贝子对象地址 1497843333168
深拷贝子对象地址 1497801451888

  
 

py没有赋值,只有引用。py没有变量,平时说的变量只是标签,即引用。

不可变对象包括int,float,long,str,tuple等
对于不可变类型的变量,如果要更改变量,则会创建一个新值,把变量绑定到新值上,而旧值如果没有被引用就等待垃圾回收。

2、代码中经常遇到的*args, **kwargs 含义及用法。

args表示任意位置参数,* kwargs表示任意个关键字参数
用法:def 函数名(位置参数,args,默认参数,**kwargs),记得arg在kwargs之前

#!/usr/bin/python
## -*-f= coding:utf-8 -*-
def Func(a,b,*args,**kwargs): print (a) print (b) print (args) print (kwargs)

Func(0,1,2,3,index1=11,index2=22)

  
 

输出的结果为:

0
1
(2, 3)
{'index1': 11, 'index2': 22}

  
 

注意(2,3)是因为不定的参数形式把剩下没有关键字的参数形成为一个tuple,另外后面2个是赋值关系,会变为字典。

3、Python 中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前缀结尾,区别是什么?

单下划线:

(1)变量为保护变量(只有类对象和子类对象可以访问这些变量)
(2)函数为不能直接访问的类属性,要通过类提供的接口来访问

双下划线:

(1)变量为私有成员(只有类对象自己可以访问,子类对象不能访问该成员)
(2)py里的特殊方法专用的标志符,如__ init()__表示类的构造函数

4、w、a+、wb 文件写入模式的区别

模式 作用 若文件不存在 是否覆盖
w 只写 创建
a+ 可读可写 创建 否,追加写
wb 只写,以二进制写方式打开 创建
其他几个
r+ 可读可写 报错
w+ 可读可写 创建
a 只能写 创建 否,追加写
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享