社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

python • 6 年前 • 394 次点击  






*全文较长,大约需要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
 
394 次点击