python(高级1)

 

目录

1.import搜索路径

2.python模块

3.作用域:LEGB规则

4.==、is、浅拷贝、深拷贝

5.原码、反码、补码

6.进制间的转换

7.位运算

8.私有化

9.属性property


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

猜你喜欢

转载自blog.csdn.net/poyue8754/article/details/82218299