https://www.python.org/downloads/windows/
双击按照提示安装就可以了。
如果解决了您的问题请采纳!
如果未解决请继续追问
背景
本来呢,在Windows系统中,安装Python是很简单的,双击对应的exe,然后一直下一步,就可以了。
但是再简单的事情,对于没见过的人来说,都还是不那么简单的。
并且,另外也有一些需要提醒的注意事项,所以,下面就来截图解释如何在Windows中安装Python。
前提
安装之前,对Python不了解的,可以先去看:
【整理】Python语言简介
【教程】如何下载最新版的,各种版本的,包括Python 2.x和Python 3.x的Python
去下载到了Python的安装文件了。
比如我此处的,针对64位Win7的,下载的是:python-2.7.3.amd64.msi
在Windows系统中安装Python
双击python-2.7.3.amd64.msi,弹出对话框中,选择默认的:
为所有人都安装Python
点击Next,进入:
可以看到,默认的安装路径是:C:\Python27
提示:
Python默认的安装路径,是C盘,文件夹名字,是Python加上前两位主版本号,比如:
Python27,表示Python 2.7.x
Python31,表示Python 3.1.x
之类的。
此处,我自己修改为了,自己想要的某个路径
4.点击Next后,出现配置所要安装的项目:
此处,顺便解释一下:
Register Extensions:使得此处安装的Python变成默认的安装的Python。比如你之前也安装了别的版本,那么选择此项,则让此处要安装的Python为默认的;
Tcl/Tk:包含了一些图形环境相关的库:Tkinter和相关开发工具:IDLE,pydoc
Document:就是那个Python HTMLHelp文件,即安装完自后的那个Python Mannual(Python手册)
Utility Scripts:一些Python写的脚本工具
Test suite:用于测试的Python工具
5.点击Next后,就可以看到,正在安装了:
6.然后等一会,就安装完成了。
转自:http://my.oschina.net/chihz/blog/123437这边只说明面向对象方面的,其他方面见上面链接
面向对象
(1) 经典类和新式类
Python OO最神奇的地方就是有两种类,经典类和新式类。
新式类跟经典类的差别主要是以下几点:
1. 新式类对象可以直接通过__class__属性获取自身类型:type
2. 继承搜索的顺序发生了改变,经典类多继承属性搜索顺序: 先深入继承树左侧,再返回,开始找右侧新式类多继承属性搜索顺序: 先水平搜索,然后再向上移动
3. 新式类增加了__slots__内置属性, 可以把实例属性的种类锁定到__slots__规定的范围之中。
4. 新式类增加了__getattribute__方法
Python 2.x中默认都是经典类,只有显式继承了object才是新式类
Python 3.x中默认都是新式类,不必显式的继承object
python 2.x:
>>>ClassicClass.__class__
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: class ClassicClass has no attribute '__class__'
>>>class NewClass(object):
... pass
...
>>>NewClass.__class__
python 3.x:
>>>class NewClass:pass
...
>>>NewClass.__class__
<class 'type'>
(2) 无绑定方法
在Python 2.x中除了类方法和静态方法,其余的方法都必须在第一个参数传递self跟实例绑定,但是在Python 3.x中废除了这条规定,允许方法不绑定实例,这样的方法跟普通的函数没有区别:
Python 2.x:
>>>class MyClass:
... def function():
... print "function"
...
>>>MyClass.function()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unbound method function() must be called with MyClass instance as first argument (got nothing instead)
>>>m = MyClass()
>>>m.function()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: function() takes no arguments (1 given)
Python 3.x:
>>>class MyClass:
... def function():
... print("function")
...
>>>MyClass.function()
function
>>>m = MyClass()
>>>m.function()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: function() takes no arguments (1 given)
(3) 重要的重载
1. next()和__next__():这应该是继print之后第二大坑爹的不兼容吧,Python程序漫山遍野都是迭代器,但是2和3之间迭代器的实现接口方法名是不同的……嗯,啥都不说了。
2. 分片拦截:Python 3.x之前, 类可以定义__getslice__和__setslice__方法来专门拦截分片,并且这两个方法优先于__getitem__和__setitem__, 但是Python 3.x时代这俩方法再也不存在了,全部的工作都交给了__getitem__和__setitem__,因此在使用这两个方法之前要先判断传递进参数的类型是不是slice对象。
3. __bool__方法:我们知道Python中默认将所有的空对象定义为布尔意义上的False,在自己定义的类中我们也可以加入自定义的布尔判断标准,在2.x中这个方法名叫做__nonzero__, 这个名字显然非常不直观并且不科学!所有考试交白卷的孩子我们都要否定他们的才能么?显然不能!因此Python 3.x中这个方法被重名命为__bool__
4. 3.x 取消了用于大小比较的__cmp__方法,取而代之的是:__lt__、__gt__、__le__、__ge__、__eq__、__ne__,嗯,我感觉这个想法真是不能苟同……有谁能说服我给我洗脑让我爱上这一堆__lt__、__gt__、__le__、__ge__、__eq__、__ne__么。。。
(4) 类修饰器
在我的上一篇博客中秀了一把函数装饰器在表单验证中的使用,http://my.oschina.net/chihz/blog/122897
在3.x的时代,类也有装饰器了,这个装饰器威力巨大,能把装饰的类搞的面目全非,总之想怎么搞就怎么搞,用法同函数装饰器基本一致,只不过传递的参数是类型:
>>>def shutdown(cls):
... def shutdown_func(self):
... print("do something...")
... cls.shutdown = shutdown_func
... return cls
...
>>>@shutdown
... class Test:pass
...
>>>t = Test()
>>>t.shutdown()
do something...
异常
先来看一段代码
python 2.x:
>>>class Person:
... def __init__(self, msg):
... self.msg = msg
...
>>>try:
... raise Person, "woca"
... except Person as p:
... print p.msg
...
woca
python 3.x:
>>>class Person:
... def __init__(self, msg):
... self.msg = msg
...
>>>try:
... raise Person("woca")
... except Person as p:
... print(p.msg)
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
TypeError: exceptions must derive from BaseException
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
TypeError: catching classes that do not inherit from BaseException is not allowed
>>>
接下来说不同:
1. 在2.x时代,所有类型的对象都是可以被直接抛出的,在3.x时代,只有继承自BaseException的对象才可以被抛出。
2. 2.x raise语句使用逗号将抛出对象类型和参数分开,3.x取消了这种奇葩的写法,直接调用构造函数抛出对象即可。
在2.x时代,异常在代码中除了表示程序错误,还经常做一些普通控制结构应该做的事情,在3.x中可以看出,设计者让异常变的更加专一,只有在错误发生的情况才能去用异常捕获语句来处理。