Python易错知识点

1. __name__
class Person:
 def __init__(self):
 pass
 def getAge(self):
 print __name__
p = Person()
p.getAge()

以上代码作为脚本文件运行时(而不是作为模块被引用),将输出__main__

2. sys.argv
以这种方式运行脚本
python my.py v1 v2

 from sys import argv如何获得v2的参数值? 
:argv[2]

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

3. 浅复制和深复制:

浅复制是指只拷贝父对象,不会拷贝对象的内部的子对象,内部子对象的引用是共享的。
深复制则完全独立于原对象

import copy
a = [1, 2, 3, 4, ['a', 'b']] 
b = a 
c = copy.copy(a) 
d = copy.deepcopy(a) 
a.append(5) 
a[4].append('c') 


a ==  [1,2, 3, 4, ['a', 'b', 'c'], 5]
b ==  [1,2, 3, 4, ['a', 'b', 'c'], 5]
c ==  [1,2, 3, 4, ['a', 'b', 'c']]
d ==  [1,2, 3, 4, ['a', 'b']]
4. 字符串和字符概念问题:

python中不存在char,字符串也不以“\0”结尾
以”\0”结尾是C/C++中存在。

5. 逻辑运算
a = 'a'
print a > 'b' or 'c'

:c
6. 字典
dict2 = { 3 : 5 }
dict4 = {(1,2,3): “uestc”}

错误:
dict3 = {[1,2,3]: “uestc”}

字典的键必须是唯一且不可变的,而list对象是可变的,所以不能作为键值来生成字典。

7. 装饰器函数
def dec(f):
  n = 3
  def wrapper(*args,**kw):
    return f(*args,**kw) * n
  return wrapper

@dec
def foo(n):
  return n * 2

foo(2)

:12

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

所以上面的foo(2)等价于:

foo = dec(foo)
foo(2)

执行过程其实为:
foo(2) = wrapper(2) = foo(2)*3 = 2*2*3 = 12
8. 异常捕捉顺序问题
a = 1
try:
    a += 1
expect:
    a += 1
else:
    a += 1
finally:
    a += 1
print a

:4

try:的语句出现异常才会执行except后的语句,
如果正常,则执行完try后执行else。
另外,finally语句不管有无异常都会执行。

9. 内存管理

对: 变量不必事先声明
错: 变量无须先创建和赋值而直接使用
对: 变量无须指定类型
对:可以使用del释放资源

Python 是弱类型脚本语言,变量就是变量,没有特定类型,因此不需要声明。
每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
用 del 语句可以释放已创建的变量(已占用的资源)。

10.*args 和 **kwargs

*args:(表示的就是将实参中按照位置传值,多出来的值都给args,且以元祖的方式呈现)

def foo(x,y=1,*args):
    print(x)
    print(y)
    print(args)
 
foo(1,2,3,4,5)#其中的x为1,y=1的值被2重置了,3,4,5都给了args


**kwargs:(表示的就是形参中按照关键字传值把多余的传值以字典的方式呈现)

def foo(x,*args,**kwargs):
    print(x)
    print(args)
    print(kwargs)
foo(1,2,3,4,y=1,a=2,b=3,c=4)#将1传给了x,将2,3,4以元组方式传给了args,y=1,a=2,b=3,c=4以字典的方式给了kwargs

1
(2, 3, 4)
{'y': 1, 'a': 2, 'b': 3, 'c': 4}

位置参数、args、kwargs三者的顺序必须是位置参数、args、kwargs
位置参数、默认参数、
kwargs三者的顺序必须是位置参数、默认参数、**kwargs,

11. python 浮点数问题:
1.2 - 1.0
Out[160]: 0.19999999999999996

因为Python 中浮点数的运算存在误差

12.变量有效范围:
x = 1
def change(a):
    x += 1
    print x
change(x)

报错:因为x在未赋值前调用。

正确写法:用 global 声明变量 x,使其成为全局变量
x = 1
def change(a):
    global x
    x += 1
    print x
change(x)

正确写法2:将函数内的 x 参数改为 a
x = 1
def change(a):
    a += 1
    print a
change(x)
13. 运行层面问题:

从运行层面上来看,从四个选项选出不同的一个:
JAVA
Python
objectC
C#

Python 只有它是动态语言

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

14.方法命名方式

Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是?

对:
_foo 不能直接用于’from module import *’
__foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
__foo__代表python里特殊方法专用的标识
错:
__foo 可以直接用于’from module import *’

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

15. __new__和__init__的区别

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

16 解释型语言的特性

python是解释性语言

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

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

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

17.Python的映射类型

字典是 Python 语言中唯一的映射类型。

18 xrange()
[i**i for i in xrange(3)]
[1, 1, 4]

0**0=1 , 1**1=1, 2**2=4

18.协程

下列对协程的理解错误的是?

一个线程可以运行多个协程:对
协程的调度由所在程序自身控制:对
Linux中线程的调度由操作系统控制:对
Linux中协程的调度由操作系统控制:错


协程是一种用户态的轻量级线程,协程的调度完全由用户控制。
协程拥有自己的寄存器上下文和栈。
协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

19. 编解码

有一段python的编码程序如下:urllib.quote(line.decode("gbk").encode("utf-16")),请问经过该编码的字符串的解码顺序是:

url解码 utf16 gbk


题中,先将line解码为gbk编码格式,在编码为utf-16,在进行url编码

20. 元组

若 a = (1, 2, 3),下列哪些操作是合法的?

a[1:-1]
a*3
a[2] = 4 错误
list(a)


元组(tuple)不可变

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,366评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,521评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,689评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,925评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,942评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,727评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,447评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,349评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,820评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,990评论 3 337
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,127评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,812评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,471评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,017评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,142评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,388评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,066评论 2 355

推荐阅读更多精彩内容

  • Python语言特性 1 Python的函数参数传递 看两个如下例子,分析运行结果: 代码一: a = 1 def...
    伊森H阅读 3,067评论 0 15
  • - 我没有很刻意的去想念你, 因为我知道遇到了就应该感恩, 路过了就应该释怀。 - 文 / 阿郎(专栏作者) 来源...
    鲸鱼悦刊阅读 293评论 0 2
  • 加班时间中,旁边的同事听我说一个同事要通过某一个技术去减缩工作量,她很感兴趣,一直在心里盘旋。 问我怎么去...
    ANBBJasmine阅读 362评论 0 0
  • 茶是一種文化,也是可通往明心見性的定慧之路。剛收到的茶,就迫不及待的斗上了,叼銘馬頭岩肉桂,和悟源涧肉桂。 泡茶,...
    亭亭居阅读 480评论 0 0
  • 九月 终将如那日渐干涸的河 用自己的津液 喂养了那岸一春一夏 皮肤皱褶了 筋骨裸露了 大地 一片寂静 一片清明
    馨若子兮阅读 217评论 0 0