python3新特点
#xiaodeng
#python 3 #1、编码方式和性能
'''
1、py3运行效率更快
2、默认源文件编码ASCII变为UTF-8,以前文件前加入的coding=utf-8不再需要
3、针对unicode的处理有了明显的改善,效率明显提升
''' #2、数据类型和基本运算
'''
1、int和long进行了统一,统一为int
2、True、False、None都是关键词
3、必须以b'...'表示二进制数据,可以使用u'..'表示字符串,不加u也表示字符串
4、移除<>不等号,使用“!=”表示不等号关系
1)2!=3
2)2<>3 #出现语法错误
5、调整除法符号‘/’的用法,只返回浮点数,要返回整数要使用“//”
6、py3运算对数据的类型要求更加的严格
''' def foo(test=None):
if test is None:
print (test)
foo() print (5/2) #浮点数
print (5//2) #整数
print (1/3) #4、print和exec用法
'''
1、print是一个函数,不再是一个语句,其中不需要用空格,后面打印的内容需要有括号括起来
2、exec函数用法发生变化
''' def foo():
_local=locals()
exec('a=4',globals(),_local)
a=_local['a']
print(a)
foo() #5、input、bin、oct和for循环
'''
1、raw_input统一为input
在py2中用法为:
1)a=raw_input('请输入:')
print a
2)a=input('请输入:') #接收一个有效的表达式,如:2+3,而不能单独接收3
print a
2、for循环的变量不再泄露在全局变量中,此bug已修复
1)Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> i=8
>>> print [i for i in range(5)]
[0, 1, 2, 3, 4]
>>> print i
4 #按照道理来讲for循环中的i与最外面的i=8的i是不同的,但是这里。。。。。
>>> 2)
i=6
print([i for i in range(5)])#结果为[0, 1, 2, 3, 4]
print(i)#结果i=6
'''
#6、a=input('请输入:')#这里不再需要一个有效的表达式,他的用法和raw_input相同
#print(a) #7、range和dict的变化
'''
1、在python2中,range火xrange会创建一个列表。常出现在for循环、字典、列表中,但是py3中xrange改名为range,在python3中使用
使用xrange会触发错误。同时range返回的是可迭代对象而不再是列表形式,要想使range的结果得到一个list数据必须要使用list(range(5))
2、字典内的dict.iterkeys(),dict.itervalues(),dict.iteritems()被keys() and values() and items()所替代
他们的返回结果类似于集的可迭代对象,而不是键值对的列表。从而在不进行键和值条目复制的情况下就能对其执行set操作 ''' a=range(6)
print(a)#result:range(0,6)对象,不是列表
print(list(a))#result:[0, 1, 2, 3, 4, 5]
for i in range(6):
print(i) #print(xrange(5)) #报错:提示为name"xrange" is'not defined #dict案例
d={'name':"iaodeng",'sex':28}
print(d.items())
print(type(d.items())) #<class 'dict_items'>
#返回结果 dict_items([('name', 'iaodeng'), ('sex', 28)])
#这里不再是列表形式
'''
Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> d={'name':"iaodeng",'sex':28}
>>> print d
{'name': 'iaodeng', 'sex': 28}
>>> print d.items()
[('name', 'iaodeng'), ('sex', 28)]
>>> print d.iteritems() #返回一个可迭代对象
<dictionary-itemiterator object at 0x0275E930>
>>> for i in d.iteritems():print i
('name', 'iaodeng')
('sex', 28)
>>>
'''
print('xiaodeng: d.keys():',d.keys()) #xiaodeng: d.keys(): dict_keys(['name', 'sex'])
print(type(d.keys()))#<class 'dict_items'> #values()同理 print("既然是可迭代对象,那么还可以进行下面操作")
for i in d.items():
print(i)
for key in d.keys():
print(key)
print("values用法同理")
print('用list将可迭代对象转化为list数据')
print(list(d.values())) #7、python3具有单一的str类型,其类型相当于python2的unicode,python3所有的字符串都是unicode
#新增bytes类型
a=b"china"
print(type(a)) #<class 'bytes'>
#str和tytes对象都可以使用encode和decode来进行转化
s=a.decode()
print(s) #china 字符串类型
s=s.encode()
print(s) #b"china", tytes字节类型 #8、输入和输出
a=open('test.txt','w')
a.write("write in something")
a.close()
b=open("test.txt","r")
print(b.read()) #note:注意加括号
"""
1、如果要对文本执行任何I/O操作,python3会强制用户使用文本模式,打开文件,如果不想使用默认编码utf-8
通常需要指明所需的编码
2、如果对二进制数据进行I/O操作,必须使用二进制模式打开文件或进行读写操作
eg:
f=open("test1.txt","wb+") #二进制追加模式
f.write(b"w love fengmei") #必须加b,以bytes对象的形式进行写入
f.close()
file=open(filename,mode)
mode:
r:只读模式
w:只写,如果文件已存在则会进行覆盖操作,所以格外小心,如果文件不存在则创建新的文件
a:打开文件用于追加,只写如果文件不存在则创建
b:二进制,不能单独使用
经过演变会有很多形式
""" #9、迭代器
"""
1、range在python3中返回颗迭代对象二不是列表,最大限度节约内存
2、zip(),map(),filter(),key(),value()返回的均是可迭代对象
""" #10、异常错误处理
"""
1、必须使用关键词as,try 和except NameError as e语句
2、案例:
python 2
try:
something
except NameError,err:
print err python3
try:
something
except NameError as err:
print(err)
3、raise触发语法用法的变化,python3只接受带括号的
1)raise IOError,"file error" #出现语法错误
2)raise IOError("file error")
""" #11、面向对象
"""
1、需要单独深入学习
""" #12、模块的变动
python3新特点的更多相关文章
- Python3新特性 类型注解 以及 点点点
Python3新特性 类型注解 以及 点点点 ... Python3 的新特性 Python 是一种动态语言,变量以及函数的参数是 不区分类型 的 在 函数中使用类型注解 相当于 给 形参的 类型 设 ...
- python3新特性函数注释Function Annotations用法分析
本文分析了python3新特性函数注释Function Annotations用法.分享给大家供大家参考,具体如下: Python 3.X新增加了一个特性(Feature),叫作函数注释 Functi ...
- python3 新特性
1.格式化字符串f-string user = "Mike" log_message = f'User{user} has logged in' 2.路径管理库Pathlib 3. ...
- Python3中变量作用域nonlocal的总结
最近,在工作中踩到了一个关于Python3中nonlocal语句指定的变量作用域的坑.今天趁周六休息总结记录一下. 众所周知,Python中最常见的作用域定义如下: 但是,为了更加方便地在闭包函数 ...
- open文件操作
open()做文件操作的就是他1.打开文件#f=open("db","r")#只读#f-open("db","w")#只 ...
- Python【基础第一篇】
一.Python3新特性 编码统一为unicode Python3不支持Twisted,暂时只支持73% 1/2=0.5 print "hello World" 变成 print ...
- Python学习笔记——基础篇【第一周】——变量与赋值、用户交互、条件判断、循环控制、数据类型、文本操作
目录 Python第一周笔记 1.学习Python目的 2.Python简史介绍 3.Python3特性 4.Hello World程序 5.变量与赋值 6.用户交互 7.条件判断与缩进 8.循环控制 ...
- Python之文件与目录操作及压缩模块(os、shutil、zipfile、tarfile)
Python中可以用于对文件和目录进行操作的内置模块包括: 模块/函数名称 功能描述 open()函数 文件读取或写入 os.path模块 文件路径操作 os模块 文件和目录简单操作 zipfile模 ...
- 流畅python学习笔记:第十七章:并发处理
第十七章:并发处理 本章主要讨论Python3引入的concurrent.futures模块.在python2.7中需要用pip install futures来安装.concurrent.futur ...
随机推荐
- HTML 5 <script> async 属性简单设置代码异步执行
HTML5中 script标签支持脚本的异步执行async.脚本将会异步运行: <script type="text/javascript" src="demo_a ...
- Java NIO 的前生今世 之四 NIO Selector 详解
Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...
- C#中的命名空间namespace与Java中的包package之间的区别
Java 包被用来组织文件或公共类型以避免类型冲突.包结构可以映射到文件系统. System.Security.Cryptography.AsymmetricAlgorithm aa; 可能被替换: ...
- LaTeX技巧24:LaTeX常用命令集锦
\hyphenation{word list} %断字命令:\showthe\topmargin %显示某个参数的数值或者内容: 在tex编译过程中出现行溢出(overflow hbox)是由于断字程 ...
- 洛谷 P1082 同余方程
题目描述 求关于 x 的同余方程 ax ≡ 1 (mod b)的最小正整数解. 输入输出格式 输入格式: 输入只有一行,包含两个正整数 a, b,用一个空格隔开. 输出格式: 输出只有一行,包含一个正 ...
- 样条之贝塞尔(Bezier)
我曾经发过两篇关于贝塞尔的文章:数学图形(1.47)贝塞尔(Bézier)曲线,数学图形之贝塞尔(Bézier)曲面.那是使用我自己定义的脚本语言生成贝塞尔图形.由于我自己定义的脚本语法功能有限,所以 ...
- CodeFirst体验之且行且珍惜
CodeFirst作为一种新的开发理念和方式,EF Code-First相对于MVC中的DataFirst,ModelFirst确实开发效率确实高点,至少数据库建表这一块,直接用类映射到数据中,标记 ...
- js命名空间写法
很早知道这种写法,由于基础面向对象不够扎实一直在回避,但是面对整站这种方法还是有必要会 <div id="div1">111</div> <div i ...
- Docker for windows可用性检查
Docker for windows不太稳定,每次启动机器后, 等待Docker启动起来后,要进行如下的检查: Docker启动看,看看图标是否正常,如果是红色,或者报错就是有问题. 打开Hyper- ...
- Maven镜像收集
本贴主要收集国内国外速度比较快的maven镜像,OSC的MAVEN已经关闭了 0.阿里Maven镜像 setting.xml https://github.com/ae6623/Zebra/blob/ ...