Python知识点_01

python知识点

1、深拷贝、浅拷贝、引用

  • 1.对象的赋值
    • 都是进行对象引用(内存地址)传递,即‘’ b is a‘’ ,a 变 b 也变
  • 2.浅拷贝
    • 会创建一个新的对象,即 “c is not a” ,但是,对于对象中的元素,浅拷贝就只会使用原始元素的引用(内存地址),也就是说”c[i] is a[i]”

    • 当我们使用下面的操作的时候,会产生浅拷贝的效果:

      • 使用切片[:]操作
      • 使用工厂函数(如list/dir/set)
      • 使用copy模块中的copy()函数
  • 3.深拷贝
    • 会创建一个新的对象,即”d is not a” ,并且 对于对象中的元素,深拷贝都会重新生成一份(有特殊情况,下面会说明),而不是简单的使用原始元素的引用(内存地址)
    • 拷贝的特殊情况
      • 对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有拷贝这一说
      • 如果元祖变量只包含原子类型对象,则不能深拷贝

2、协程和线程

3、python版本

  • print math.floor(5.5) 返回5.0 【python2】
  • print(math.floor(5.5)) 返回5 【python3】

4、字符串编码解码

  • 字符串编码的过程:gbk==>unicode==>utf16==>url解码
  • 字符串解码顺序为:url解码==>utf16==>unicode==>gbk

5、ASCII大小贵规则

  • 1)数字0~9比字母要小。如"7"<“F”;
  • 2)数字0比数字9要小,并按0到9顺序递增。如"3"<“8”
  • 3)字母A比字母Z要小,并按A到Z顺序递增。如"A"<“Z”
  • 4)同个字母的大写字母比小写字母要小。如"A"<“a”。

6、对象三要素

  • Python中的对象包含三要素:id、type、value其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
  • is判断的是a对象是否就是b对象,是通过id来判断的在这里,a,b为字符串不可变类型,所以指向相同地址,所以 a is b
  • ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
  • 例子:a = ‘123’ ,b = ‘123’ 。 a is b是正确的

7、装饰器

  • 装饰器本身是一个函数,目的是在不改变待装饰函数的情况下,增加一些额外的功能,装饰器的返回值是已装饰的函数对象。
  • 连接在此

8、生成器

9、列表推导式

10、浮点数

  • 浮点数在计算机内无法精确表示, 1.2-1.0 == 0.2,返回False.
  • 9/3.0=3.0, 9/3=3.0

11、函数参数位置

  • Python2 参数顺序:必选参数、默认参数、可变参数和关键字参数。
  • Python3参数顺序:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。

11、列表的append()方法

  • 会将待加入的对象作为一个整体添加,例如:a = [1,2,3],b = [‘hello’,3],a.append(b)结果为:[1,2,3,[‘hello’,3]]。

12、动态语言

  • 动态语言的定义:动态编程语言 是 高级程序设计语言 的一个类别,在计算机科学领域已被广泛应用。它是一类 在 运行时可以改变其结构的语言 :例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。动态语言目前非常具有活力。众所周知的 ECMAScript ( JavaScript )便是一个动态语言,除此之外如 PHP 、 Ruby 、 Python 等也都属于动态语言,而 C 、 C++ 等语言则不属于动态语言。

13、argv

  • sys.argv是传递给python脚本的命令行参数【字符串】列表。argv[0]为该脚本自身路径,其余为命令行参数。

14、解释型语言的特性

  • 非独立
  • 效率低

15、解释型语言和编译型语言

  • 解释性语言和编译性语言的定义:

    • 计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
    • 翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
  • 解释性语言的定义:

    • 解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
    • 现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
  • 编译性语言的定义:

    • 编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

16、变量命名方式

  • python中主要存在四种命名方式:
    • 1、object #公用方法
    • 2、_object #半保护
      • 被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,在模块或类外不可以使用,不能用’from module import *’导入。
      • __object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是_classname__methodname。
    • 3、_ _ object #全私有,全保护
      • #私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访 问到这个数据,不能用’from module import *’导入。
    • 4、_ _ object_ _ #内建方法,用户不要这样定义

17、__new__和__init__的区别

  • __new__是一个静态方法,而__init__是一个实例方法
  • __new__方法会返回一个创建的实例,而__init__什么都不返回
  • 只有在__new__返回一个cls的实例时,后面的__init__才能被调用
  • 当创建一个新实例时调用__new__,初始化一个实例时用__init__

18、locals()

  • 可以使用该函数查看当前作用域内的所有局部变量和值的字典。

19、变量的引用

  • 可以使用sys库中的getrefcount方法用于查看,一个对象被引用多少次。

20、函数式编程

  • 函数式编程是一种结构化编程范式,是如何编写程序的方法论
  • 函数是第一等公民first class,是指它享有与变量同等的地位
  • 高阶函数可以接收入另一个函数作为其输入参数
  • 函数可以像变量一样被当被参数传入,也可以被return

21、python中set和frozenset方法和区别

  • set(可变集合)与frozenset(不可变集合)的区别:
    *set无序排序且不重复,是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。
    • 基本功能包括关系测试和消除重复元素. 集合对象还支持union(联合), intersection(交集), difference(差集)和sysmmetric difference(对称差集)等数学运算.
    • sets 支持 x in set, len(set),和 for x in set。作为一个无序的集合,sets不记录元素位置或者插入点。因此,sets不支持 indexing, 或其它类序列的操作。
  • frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值