Maison développement back-end Tutoriel Python Python3.0与2.X版本的区别实例分析

Python3.0与2.X版本的区别实例分析

Jun 16, 2016 am 08:42 AM
python 区别 版本

本文通过列举出一些常见的实例来分析Python3.0与2.X版本的区别,是作者经验的总结,对于Python程序设计人员来说有不错的参考价值。具体如下:

做为一个前端开发的码农,最近通过阅读最新版的《A byte of Python》并与老版本的《A byte of Python》做对比后,发现Python3.0在某些地方还是有些改变的。之后再查阅官方网站的文档,总结出一下区别:

1. 如果你下载的是最新版的Python,就会发现所有书中的Hello World例子将不再正确。
Python2.X代码如下:

print "Hello World!" #打印字符串 
Copier après la connexion

Python3.0代码如下:

print("Hello World!") 
Copier après la connexion

将字符串放到括号中print出来,这种写法对于我这种学习Java出身的人来说,很是亲切啊~O(∩_∩)O~

2.
Python2.X代码如下:

guess = int(raw_input('Enter an integer : ')) #读取键盘输入的方法 
Copier après la connexion

Python3.0代码如下:

guess = int(input('Enter an integer : ')) 
Copier après la connexion

方法名变得更加容易记!

3.
加入了一个新的nonlocal statement,非局部变量,它的范围介于global和local之间,主要用于函数嵌套,用法如下:

#!/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() 
Copier après la connexion

4.
VarArgs parameters,不知道这个翻译成什么比较妥当?先看下面这个例子:

#!/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)) 

Copier après la connexion

当在参数前面使用*标识的时候,所有的位置参数(1,2,3)作为一个list传递。
当在参数前面使用**标识的时候,所有的关键参数(vegetables=50, fruits=100)作为一个dictionary传递。

5.
关于Packages的话题,个人理解有限。感兴趣的读者可以查阅相关文档。

6.
在数据结构中,多了一种类型:set
Set是一种无序的简单对象的集合,当我们关心一个对象是否在一个集合中存在,而顺序和出现的次数是次要的时候,可以使用set。

7.
关于os.sep方法,(set是separator,分隔符的缩写)
来看看作者的一个很晕菜的例子:
Python2.X代码如下:

target_dir = '/mnt/e/backup/' 
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip' 
Copier après la connexion

Python3.0代码如下:

target_dir = 'E:\\Backup' 
target = target_dir + os.sep + time.strftime('%Y%m%d%H%M%S') + '.zip' 
Copier après la connexion

os.sep的功能是自动辨别操作系统,给出不同的分隔符,Windows上是\\,Linux上是/,原理是明白了,功能也很不错,但是作者的例子。只有一处使用了os.sep,其他的地方还是老的写法啊(E:\\)

8.
可以使用@修饰符声明一个类方法:

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

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 

Copier après la connexion

10.
文件读写的模式又增加了两种:文本本件('t')二进制文件('b')。

11.将打开文件的操作放到使用with语句修饰的方法中,书上说好处是让我们更专注于文件操作,让代码看起来不凌乱,本文还不能完全体会with的好处。现给出示例代码供大家参考:

#!/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='') 

Copier après la connexion

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")

Copier après la connexion

希望本文所述能对大家理解Python3.0与Python2.X一些区别性的用法有所帮助。

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Comment intégrer efficacement les services Node.js ou Python sous l'architecture LAMP? Apr 01, 2025 pm 02:48 PM

De nombreux développeurs de sites Web sont confrontés au problème de l'intégration de Node.js ou des services Python sous l'architecture de lampe: la lampe existante (Linux Apache MySQL PHP) a besoin d'un site Web ...

Quelle est la raison pour laquelle les fichiers de stockage persistants de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Quelle est la raison pour laquelle les fichiers de stockage persistants de pipeline ne peuvent pas être écrits lors de l'utilisation du robot Scapy? Apr 01, 2025 pm 04:03 PM

Lorsque vous utilisez Scapy Crawler, la raison pour laquelle les fichiers de stockage persistants ne peuvent pas être écrits? Discussion Lorsque vous apprenez à utiliser Scapy Crawler pour les robots de données, vous rencontrez souvent un ...

Quelle est la raison pour laquelle le pool de processus Python gère les demandes TCP simultanées et fait coincé le client? Quelle est la raison pour laquelle le pool de processus Python gère les demandes TCP simultanées et fait coincé le client? Apr 01, 2025 pm 04:09 PM

Python Process Pool gère les demandes TCP simultanées qui font coincé le client. Lorsque vous utilisez Python pour la programmation réseau, il est crucial de gérer efficacement les demandes TCP simultanées. ...

Comment afficher les fonctions originales encapsulées en interne par Python Functools.Partial Objet? Comment afficher les fonctions originales encapsulées en interne par Python Functools.Partial Objet? Apr 01, 2025 pm 04:15 PM

Explorez profondément la méthode de visualisation de Python Functools.Partial Objet dans Functools.Partial en utilisant Python ...

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Python multiplateform de bureau de bureau de bureau: quelle bibliothèque GUI est la meilleure pour vous? Python multiplateform de bureau de bureau de bureau: quelle bibliothèque GUI est la meilleure pour vous? Apr 01, 2025 pm 05:24 PM

Choix de la bibliothèque de développement d'applications de bureau multiplateforme Python De nombreux développeurs Python souhaitent développer des applications de bureau pouvant s'exécuter sur Windows et Linux Systems ...

Dessin graphique de sablier Python: comment éviter les erreurs variables non définies? Dessin graphique de sablier Python: comment éviter les erreurs variables non définies? Apr 01, 2025 pm 06:27 PM

Précision avec Python: Source de sablier Dessin graphique et vérification d'entrée Cet article résoudra le problème de définition variable rencontré par un novice Python dans le programme de dessin graphique de sablier. Code...

Comment compter et trier efficacement de grands ensembles de données de produit dans Python? Comment compter et trier efficacement de grands ensembles de données de produit dans Python? Apr 01, 2025 pm 08:03 PM

Conversion et statistiques de données: traitement efficace des grands ensembles de données Cet article introduira en détail comment convertir une liste de données contenant des informations sur le produit en une autre contenant ...

See all articles