Python社区  »  Python

从事Python开发五年,总结了一份超详细的Python学习指南给你!

python • 2 月前 • 180 次点击  






*全文较长,大约需要10-20分钟看完,代码可左右滑动查看

背景

PHP的$和->让人输入的手疼(PHP确实非常简洁和强大,适合WEB编程),Ruby的#、@、@@也好不到哪里(OO人员最该学习的一门语言)。

Python应该是写起来最舒服的动态语言了,一下是一些读书笔记,最后会介绍一下高级的用法:Mixin、Open Class、Meta Programming和AOP。

文中有些地方是用2.7开发的,如果您安装的是3.x,有几点需要注意:

  • print "xxx" 要换成 print("xxx")

  • __metaclass__ = type 删除掉。

类型和表达式部分

你好,世界!

# coding=utf-8
print "你好,世界。"

乘方




    
print 2**10

变量

var = 1
print var
var = "段光伟"
print var

注:这里的var = xxxx不叫变量赋值,而叫变量绑定,python维护了一个符号表(变量名)以及符合对应的值,这个对应关系就叫做绑定,一个符号可以绑定任意类型的值。

获取用户输入

#获取用户输入
x = input("x:")
y = input("y:")
print x*y

注:input接受的是Python代码,输入中可以访问当前执行环境中的变量,如果想获取原始输入需要使用 raw_input。

函数定义




    
def say_b():
print "b"

强类型

Javascript和Php是弱类型的,Python和Ruby是强类型的。弱类型允许不安全的类型转换,强类型则不允许。

#1 + “1” 这行代码在Python中会报错。
print 1 + int("1")
print str(1) + "1"

字符串

#字符串
print '''' 段

伟'''

print r'C:\log.txt'
print 'C:\\log.txt'

序列

这里先介绍三种序列:列表、元祖和字符串。

序列通用操作




可变的列表



不可变的元祖

print (1, 2) #元祖以小括号形式声明。
print (1,) #一个元素的元祖。

字符串格式化




字典



print 语句




序列解包




bool值



bool运算



语句块

:开始语句快,缩进的所有内容都是一个语句块。




三元运算符

print("10 > 1" if 10 > 1 else "不可能发生")

相等比较



循环





函数部分

形参和实参之间是按值传递的,当然有些类型的值是引用(对象、列表和字典等)。



作用域




模块

几个模块相关的规则:

  • 一个文件代表一个模块。

  • 可以用import module导入模块,也可以用form module import member导入模块的成员。

  • 如果导入的是module,必须使用module.member进行访问;如果导入的member,可以直接访问member。

  • 导入的module或member都会变成当前module的member。








输出

b

a

__main__

a

b

b

异常管理




面向对象

先上一张图



几个规则:

  1. 一切都是对象,python中一切都是对象,每个对象都包含一个__class__属性以标记其所属类型。

  2. 每个对象(记得一切都是对象啊)都包含一个__dict__属性以存储所有属性和方法。

  3. 每个类型都包含一个__bases__属性以标记其父类。

  4. 属性和方法的访问规则:依次搜索instance、子类、父类、父类的父类、直到object的__dict__,如果找到就返回。

  5. 属性和方法的设置规则:直接设置instance.__dict__。

  6. 以上属性和方法访问或设置规则没有考虑“魔法方法”,下文会解释。

示例



绑定方法和未绑定方法



绑定方法已经绑定了对象示例,调用的时刻不用也不能传入self参数了。

注:使用对象访问实例方法为何会返回绑定方法?这个还得等到学完“魔法方法”才能解释,内部其实是拦截对方法成员的访问,返回了一个Callable对象。

私有成员



难怪访问不了了,名称已经被修改了,增加了访问的难度而已。

多重继承



如果继承的多个类型之间有重名的成员,左侧的基类优先级要高,上例子Base2会胜出。

接口那里去了,鸭子类型比接口更好用。



调用父类



魔法方法

详细内容参考:http://www.rafekettler.com/magicmethods.html

对象构造相关:__new__、__init__、__del__。



运算符重载:所有运算符都能重载。



属性访问。



集合实现。



可调用对象,像方法一样调用对象。



资源管理




对象描述符。




掺入模块:playable.py


掺入目标模块:test.py




Open Class(打开类型,从新定义成员)



Meta Programming(元编程)



备注

Python在作用域方面非常接近Javascript,类型和对象系统也有几份相似(虽然Javascript是基于原型的),Javascript、PHP、Python和Ruby这几门语言交叉学习会带来意想不到的收获。最后小编准备的python视频学习资料+PDF学习资料想要的加小编QQ群:496248129就可以获取!




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31478
 
180 次点击  
分享到微博