目录
1.import搜索路径
import sys
sys.path
程序执行时导入模块路径
sys.path.append('/home/lib/xxx')
# 确保先搜索此路径
sys.path.insert(0,'/home/lib/xxx')
sys.path
2.python模块
.在python中导入一个模块,如果先被调用,再修改模块的内容,则输出的结果为原模块的结果。若想输出修改后的结果,需要先导入from imp import *,然后再重新加载此模块:reload(xxx.py).
3.作用域:LEGB规则
python使用LEGB的顺序来查找一个符号对应的对象
locals -> enclosing function -> globals -> builtins
locals:当前所在命名空间(如函数、模块).
enclosing:外部嵌套的命名空间.
globals:全局变量,函数定义所在模块的命名空间.
builtins:内建模块的命名空间.
4.==、is、浅拷贝、深拷贝
==:是指比较数据的内存地址和内容是否同时相同
is:是指比较数据内容是否相同
浅拷贝: 浅拷贝对不可变类型和可变类型的copy不同
In [1]:import copy
In [2]: a = [11,22,33]
In [3]: b = copy.copy(a)
In [4]: a
Out[4]: [11, 22, 33]
In [5]: b
Out[5]: [11, 22, 33]
In [6]: id(a)
Out[6]: 1588014180872
In [7]: id(b)
Out[7]: 1588014256904
In [8]: a= (11,22,33)
In [9]: b = copy.copy(a)
In [10]: id(a)
Out[10]: 1588014017416
In [11]: id(b)
Out[11]: 1588014017416
深拷贝:对象指向不同的地址内容,即重新开辟一个内存地址
5.原码、反码、补码
规则:
正数:原码=反码=补码
负数:反码=符号位不变,其它位取反。补码=反码+1
第一位是0代表正数,第一位是1代表负数
在计算机中,进行数的相加,即补码进行相加
6.进制间的转换
7.位运算
&:按位与
|:按位或
^:按位异或
~:按位取反
<<:按位左移(左移相当于乘以2)
>>:按位右移(右移相当于除以2)
8.私有化
xx:公有变量
_x:单前置下划线,私有化属性方法,from somemodule import * 禁止导入,类对象和子类可以访问
__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
__xx__:双前后下滑线,用户名字空间的魔法对象或属性。例如:__init__,__不要自己发明这样的名字
xx_:单后置下划线,用于避免与python的关键词冲突
9.属性property
使用property取代getter和setter方法
@property成为属性函数,可以对属性赋值时做必要的检查,并保证代码的清晰短小,主要有两个作用:
1.将方法转换为只读
2.重新实现一个属性的设置和读取方法,可做边界判定
class money(object):
def __init__(self):
self.__money = 0
@property
def money(self):
return self.__money
@money.setter
def money(self,value):
if isinstance(value,int):
self.__money = value
else:
print("error:不是整数数字")
a = money()
print(a.money) # result:0
a.money = 100
print(a.money) # result:100