python就业班1_

综下所述:有两个知识点:

(1)sys.path

import sys
sys.path 
这个打印出来导入的模块,搜索的路径,需要要添加的话,
sys.path.append('../')的形式添加。

(2)reload(test)

import 后,程序运行过程中更改,函数并不会更改,如果要刷新函数
from imp import *
reload(test)
才会重新加载test.py函数。

(3)循环导入
a.py b.py
a 与 b 相互以调用,这样就会出现循环导入的问题。
在设计的初始阶段,应该避免这种调用方法。
(4)== 与 is
== 判断,值 是否相等
is 判断是否是同一个东西
c=a ,是引用传递,
id(a) 查看a对象的内存地址。
(5)深拷贝、浅拷贝

浅拷贝
    a=[11,22,33]
    b=a
深拷贝
    import copy
    a=[11,22,33]
    c=copy.deepcopy(a)
    copy.copy()
         可变类型:copy第一层(列表【】)
         不可变类型:不copy (元组())
    copy.deepcopy()
        可变类型和不可变类型,都copy
        如果有引用,继续copy.

(6)进制、位运算

(7)原码、反码、补码

(8)位运算,&

左移*2   5<<1   10
右移/2    10>>1   5
按位与 &       全1才1,否则0 ,逐位进行与运算。
按位或 |       全0才0,否则1    
按位异或    ^       相同为1,不同为0 
取反      ~       取相反 

(9)property

方式一:
    class Test(object):
        def __init__(self):
            self.__num=100
        def getNum(self):
            return self.__num
        def setNum(self,newValue):
            self.__num=newValue
        num=property(getNum,setNum)
    t=Test()
    print(t.num)
    t.num=200
    print(t.num)
  方式二:装饰器
    class Test(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:
                return "error value type".
    t=Test()
    print(t.money)
    t.money=200
    print(t.money)
    

1.知识点

导入
循环导入
作用域
== is
深copy,浅 copy
禁制,位运算
私有化
其他的知识点

2.import导入模块

import xxx
=>ImportError :No module named 'xxx'

import sys
sys.path
=>打印出列表。显示,导入包时,搜索的路径。
sys.path
['',
'/usr/lib/python35.zip',
...]
这是一个列表,列表支持append .

sys.path.append('/home') .添加home路径到sys.path的查询路径上。

import .导入之后的模块,如果运行Python后就会一直用之前import 的内容,这个时候,如果程序发生了变化,import 的内容,
不会发生变化。

(2)重新加载:
如果在程序运行的过程中,要重新加载程序:
from imp import *
reload(test)

3.循环导入
a.py
b.py
a要导入b,b还要导入a的情况。

一大半的错误,都是自己刚开始的时候,没有注意到错误引起的。
b.py
def b():
    print("------b-----")
a.py
from b import b
def a():
    print("-------a---")
    b()
a()
然后运行调用,python a.py
就会输出了,之前一直报错,EOLError ,for why ,because i forget the "" of b function .
  1. == 与 is
    a=[11,22,33]
    b=[11,22,33]
    a==b
    True
    a is b
    False
    c=a
    c is a
    True
    id(a) 140664155920392
    id(b) 140664155926664
    id(c) 140664155920392

    c=a ,传递的是a的内存的引用。实际指向同一个东西。
    如果这个时候,a的内容更改,会重新创建列表。
    这时候 c is a False .即c 和 a 将不再是同1个东西。

    a=100
    b=100
    a ==b True
    a is b True .
    a=10000
    b=10000
    a=b True
    a is b False
    在python 中,如果值在-126-127之间,则is 的时候是相同的,除此之外是不相同的。
    5.深拷贝、浅拷贝

    浅拷贝:引用地址的传递,没有开辟新内存创建。
    a=[11,22,33]
    b=a
    a is b
    True
    深拷贝:将对象的内存内容重新创建,如果有引用,引用的对象也重新创建。
    import copy
    a=[11,22,33]
    c=copy.deepcopy(a)
    这个是深copy,id(a)!=id(b)
    a=[11,22,33,44],此时,b也会更改为[11,22,33,44]
    c不会更改
    深拷贝:(copy.deepcopy()--如果里面有引用,就接着copy)
    a=[11,22,33]
    b=[44,55,66]
    c=[a,b]
    d=c
    e=copy.deepcopy(c)

     a.append(44)
     d
     [[11,22,33,44],[44,55,66]]
     e
     [[11,22,33],[44,55,66]]
     元组,和列表,都会发生copy变化。

    深拷贝:(copy.copy()--仅copy第一层。是可变类型,copy一层, 不可变类型,不copy)
    a=[1,2,3]
    b=[4,5,6]
    c=[a,b]
    e=copy.copy(c)
    a.append(4)
    c
    [[1,2,3,4],[4,5,6]]
    e
    [[1,2,3,4],[4,5,6]]
    如果是列表【】,第一层是copy 的。
    如果是元组(),第一层不copy .
    元组特点:(不可变类型)copy可以判断是否是可变类型。
    6.进制、位运算

    进制

     十进制、二进制、八进制、十六进制

    转换

7.原码、反码、补码

1个字节有8位
1B=8bit

0000    0000    0000    0001
第一个0 用来表示符号。(0为正,1为负)

+2
0000    0000    0000    0010
-2
1000    0000    0000    0010

+1 与 -1 相加
0000    0000    0000    0001
1000    0000    0000    0001
=》
1000    0000    0000    0010
结果是-2 .是错误的。

规则:
正数: 原码  =  反码  = 补码
负数: 反码  = 符号位不变.其他取反
      补码  =  反码 + 1
      原码  = 补码的符号为不变--》数据位取反+1
补码相加

溢出:
CPU小模块,加法比较快。减法慢。

十进制转二进制:bin(18) 0b10010
十进制转八进制:oct(18) 0o22
十进制转十六进制:hex(18) 0x12

十六进制转十进制:int('0x12',16)
八进制转换十进制:int('0o22',8)

8.位运算

对数值,进行bit位运算。

乘法运算:
    转换成二进制,往左移动。每移动一次,乘以2。而且效率很高。
问:如何快速对两个值,进行相乘?
    左移和右移动,速度很快,效率很高。

5<<1    10
5<<3    40
10>>1   5

位移运算符:>> ,<< 
<<,>> 位运算作用:快速进行乘法和除法。
2*3 
    2<<1 +2

运算,都是对补码,进行运算。
~9  ==-10 
9的原码:0000   1001
9的补码:0000   1001    
对补码取反:1111  0110
转成原码:1000   1010
就是 -10 .        

9.私有化

__init__() 无法访问,私有化。
python中 ”__“代表私有化。

如果子类,继承了原来的类,那么子类,不能访问原来的类的私有化的属性。
(1)
__属性    私有属性
__方法    私有方法
    私有属性,私有方法,类外面,不能用
    子类,不能继承的。子类不能直接调用。
(2)
属性
方法
    公有变量
(3)
__属性__
__方法__
    系统提供的方法,自己不要写这样的符号
(4)
_属性
_方法
    模块内可用,模块外不能用。私有化属性和方法。
    from somemodule import * .
    禁止导入,类内部和子类可以用。
    名字重整
    __xx__ 系统的方法
    _x: 类内部可访问方法。

10.property

class Test(object):
    def __init__(self):
        self.__num=100
    def getNum(self):
        return self.__num
    def setNum(self,newNum):
        self.__num=newNum
t=Test()
print(t.num)
t.num=200
print(t.num)

property的作用,相当于对方法进行了封装,开发者对属性设置数据的时候更加方便。
(1)property用法一:
    class Test(object):
        def __init__(self):
            self.__num=100  
        def getNum(self):
            return self.__num   
        def setNum(self,newNum):
            self.__num=value
        num=property(getNum,setNum)
    t=Test()
    print(t.num)
    t.mum=200
    print(t.num)
(2)property用法二
    class Test(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:not int type")

转载于:https://www.cnblogs.com/sujingnuli/p/10122664.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
├─01基础 │ │ 第1节 linux操作系统基础 │ │ 第2节 python语法基础 │ │ 第3节 项目-飞机大战 │ │ 补充资料 │ │ │ └─第1节 linux操作系统基础 │ └─01.Linux以及命令 │ └─视频 │ 04-unix、minix、Linux操作系统的发展1.flv │ ├─02Python核心编程 │ 第1节 python高级编程 │ 第2节 linux系统编程 │ 第3节 网络编程 │ 第4节 web服务器案例 │ 第5节 正则表达式 │ ├─03数据结构与算法 │ 第1节 数据结构和算法基础 │ 第2节 顺序表 │ 第3节 栈与队列 │ 第4节 链表 │ 第5节 排序与搜索 │ 第6节 树与树算法 │ 资料 │ ├─04数据库 │ 第1节 MySQL │ 第2节 MongoDB │ 第3节 Redis │ ├─05前端 │ 第1节 HTML │ 第2节 CSS │ 第3节 PhotoShop │ 第4节 HTML5+CSS3 │ 第5节 移动端页面开发 │ 第6节 JavaScript │ 第7节 JQuery │ 第8节 移动端JS库 │ 第9节 Bootstrap │ 资料 │ ├─06django │ 第1节 Django │ 第2节 天天生鲜项目思路 │ 第3节 Git │ 资料 │ ├─07爬虫 │ 第1节 Python爬虫基础类库 │ 第2节 scrapy框架 │ 第3节 scrapy-redis分布式策略 │ 资料 │ ├─08 tornado │ 第1节 Tornado │ 第2节 爱家租房项目 │ 第3节 微信公众号 │ 资料 │ ├─09shell和自动化运维 │ 第1节 运维和shell │ 第2节 shell常用工具 │ 第3节 nginx │ 第4节 自动化部署 │ 资料 │ ├─课件和资料 5

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值