牛客专项错题笔记——python

range函数
函数语法:
range(stop)
range(start, stop[, step])
参数说明
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)


python严格区分大小写


内部作用域想修改全局变量,需要使用global声明。
等同于:函数内部可以修改全局变量,只需要使用global声明即可。
在这里插入图片描述
输出为:4


动态语言——运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。
PHP/Python/Ruby/ECMAScript(JavaScript)都属于动态语言;
C/C++/C#/object C等不属于动态语言。


浅拷贝深拷贝
浅拷贝只是复制了对象的引用地址,两个对象指向同一个内存地址,所以修改其中任意的值,另一个值都会随之变化。用copy模块中的copy方法实现。

深拷贝是将对象及值复制过来,两个对象修改求中任意的值另一个值不会改变。用copy模块中的deepcopy方法实现。

python2,3 列表和字典直接赋值是浅拷贝,浅拷贝情况下对其中一个的改变都会相应改变另一个。

python中的6个标准数据类型:
不可变数据:Number(数字)、String(字符串)、Tuple(元组);
可变数据:List(列表)、Dictionary(字典)、Set(集合);


数据类型相关:
字典中的键值必须是唯一的,是不可变类型。列表是可变的数据类型。所以列表中的项目不能用来作为字典的键。


字符串解码与编码
编码种类:
ASCII 占1个字节,只支持英文
GB2312 占2个字节,支持6700+汉字
GBK GB2312的升级版,支持21000+汉字
Shift-JIS 日本字符
ks_c_5601-1987 韩国编码
TIS-620 泰国编码
Unicode 2-4字节,已经收录136690个字符,并还在一直不断扩张中…(包含了跟全球所有国家编码的映射关系)

UTF——对Unicode进行转换(UTF是为unicode编码设计的一种 在存储和传输时节省空间的编码方案)
UTF-8: 使用1、2、3、4个字节表示所有字符;优先使用1个字符、无法满足则使增加一个字节,最多4个字节。英文占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个
UTF-16: 使用2、4个字节表示所有字符,优先使用2个字节,否则使用4个字节表示。
UTF-32: 使用4个字节表示所有字符

python执行过程:
1、解释器找到代码文件,把代码字符串按文件头定义的编码加载到内存,转成unicode
2、把代码字符串按照语法规则进行解释,
3、所有的变量字符都会以unicode编码声明,默认文件编码是utf-8

错题示例:
urllib.quote(line.decode(“gbk”).encode(“utf-16”))
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk


python2相关

除法默认向下取整


if_name_ == ‘main’ 的理解

一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。因此if name == ‘main’: 的作用就是控制这两种情况执行代码的过程,在if name == ‘main’: 下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的。

运行原理:每个python模块(python文件,也就是此处的test.py和import_test.py)都包含内置的变量__name__,当运行模块被执行的时候,__name__等于文件名(包含了后缀.py);如果import到其他模块中,则__name__等于模块名称(不包含后缀.py)。而“main”等于当前执行文件的名称(包含了后缀.py)。进而当模块被直接执行时,name == 'main’结果为真。


解释性语言和编译性语言

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值