国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python3.0與2.X版本的區(qū)別實例分析

2019-11-25 18:15:48
字體:
供稿:網(wǎng)友

本文通過列舉出一些常見的實例來分析Python3.0與2.X版本的區(qū)別,是作者經(jīng)驗的總結(jié),對于Python程序設(shè)計人員來說有不錯的參考價值。具體如下:

做為一個前端開發(fā)的碼農(nóng),最近通過閱讀最新版的《A byte of Python》并與老版本的《A byte of Python》做對比后,發(fā)現(xiàn)Python3.0在某些地方還是有些改變的。之后再查閱官方網(wǎng)站的文檔,總結(jié)出一下區(qū)別:

1. 如果你下載的是最新版的Python,就會發(fā)現(xiàn)所有書中的Hello World例子將不再正確。
Python2.X代碼如下:

print "Hello World!" #打印字符串 

Python3.0代碼如下:

print("Hello World!") 

將字符串放到括號中print出來,這種寫法對于我這種學(xué)習(xí)Java出身的人來說,很是親切啊~O(∩_∩)O~

2.
Python2.X代碼如下:

guess = int(raw_input('Enter an integer : ')) #讀取鍵盤輸入的方法 

Python3.0代碼如下:

guess = int(input('Enter an integer : ')) 

方法名變得更加容易記!

3.
加入了一個新的nonlocal statement,非局部變量,它的范圍介于global和local之間,主要用于函數(shù)嵌套,用法如下:

#!/usr/bin/python # Filename: func_nonlocal.py def func_outer():   x = 2   print('x is', x)   def func_inner():     nonlocal x     x = 5   func_inner()   print('Changed local x to', x) func_outer() 

4.
VarArgs parameters,不知道這個翻譯成什么比較妥當(dāng)?先看下面這個例子:

#!/usr/bin/python # Filename: total.py def total(initial=5, *numbers, **keywords):   count = initial   for number in numbers:     count += number   for key in keywords:     count += keywords[key]   return count print(total(10, 1, 2, 3, vegetables=50, fruits=100)) 

當(dāng)在參數(shù)前面使用*標(biāo)識的時候,所有的位置參數(shù)(1,2,3)作為一個list傳遞。
當(dāng)在參數(shù)前面使用**標(biāo)識的時候,所有的關(guān)鍵參數(shù)(vegetables=50, fruits=100)作為一個dictionary傳遞。

5.
關(guān)于Packages的話題,個人理解有限。感興趣的讀者可以查閱相關(guān)文檔。

6.
在數(shù)據(jù)結(jié)構(gòu)中,多了一種類型:set
Set是一種無序的簡單對象的集合,當(dāng)我們關(guān)心一個對象是否在一個集合中存在,而順序和出現(xiàn)的次數(shù)是次要的時候,可以使用set。

7.
關(guān)于os.sep方法,(set是separator,分隔符的縮寫)
來看看作者的一個很暈菜的例子:
Python2.X代碼如下:

target_dir = '/mnt/e/backup/' target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip' 

Python3.0代碼如下:

target_dir = 'E://Backup' target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip' 

os.sep的功能是自動辨別操作系統(tǒng),給出不同的分隔符,Windows上是//,Linux上是/,原理是明白了,功能也很不錯,但是作者的例子。只有一處使用了os.sep,其他的地方還是老的寫法啊(E://)

8.
可以使用@修飾符聲明一個類方法: 

  @classmethod   def howMany(klass):     '''Prints the current population.'''     print('We have {0:d} robots.'.format(Robot.population)) 

9.
可以將以個類用Metaclasses的方式聲明為抽象類抽象方法

from abc import * class SchoolMember(metaclass=ABCMeta):   '''Represents any school member.'''   def __init__(self, name, age):     self.name = name     self.age = age     print('(Initialized SchoolMember: {0})'.format(self.name))   @abstractmethod   def tell(self):     '''Tell my details.''' print('Name:"{0}" Age:"{1}"'.format(self.name, self.age), end=" ")     #pass 

10.
文件讀寫的模式又增加了兩種:文本本件('t')二進制文件('b')。

11.將打開文件的操作放到使用with語句修飾的方法中,書上說好處是讓我們更專注于文件操作,讓代碼看起來不凌亂,本文還不能完全體會with的好處。現(xiàn)給出示例代碼供大家參考:

#!/usr/bin/python # Filename: using_with.py from contextlib import context @contextmanager def opened(filename, mode="r")   f = open(filename, mode)   try:     yield f   finally:     f.close() with opened("poem.txt") as f:   for line in f:     print(line, end='') 

12.python3.0中添加了logging module,給我的感覺類似于Java中的log4j,直接看代碼:

import os, platform, logging if platform.platform().startswith('Windows'): logging_file = os.path.join(os.getenv('HOMEDRIVE'), os.getenv('HOMEPATH'), 'test.log') else:   logging_file = os.path.join(os.getenv('HOME'), 'test.log') logging.basicConfig(   level=logging.DEBUG,   format='%(asctime)s : %(levelname)s : %(message)s',   filename = logging_file,   filemode = 'w', ) logging.debug("Start of the program") logging.info("Doing something") logging.warning("Dying now")

希望本文所述能對大家理解Python3.0與Python2.X一些區(qū)別性的用法有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 临夏市| 沧州市| 汝阳县| 和顺县| 永宁县| 汉源县| 南召县| 尼勒克县| 西畴县| 阜城县| 鹤壁市| 珲春市| 从江县| 十堰市| 庆安县| 永吉县| 沽源县| 策勒县| 都昌县| 昌宁县| 富平县| 阿克陶县| 三亚市| 定结县| 德化县| 弥勒县| 林芝县| 准格尔旗| 鸡西市| 安阳市| 卢湾区| 怀安县| 宝兴县| 邓州市| 柳林县| 昌都县| 台南市| 苏尼特右旗| 仙桃市| 伊通| 西青区|