吾之技能树,Python修完

今天是传说中的XX节,所以现充啊、有妹啊什么的…… #必须烧了

但是不管怎么说呢,过几天就得回学校去了w。

经过24天的超负荷运转,基本完成了Python的学习。

虽然很累,但是鶿觉得,这个寒假过的值!

至于Python,鶿直接上Python3了,说实话,Python3相对于Python2变化挺大的,但是不管如何,Python3是趋势,所以总有一天会普及~

Python  在鶿看来,以简洁,优雅,严谨,和高成产力著称(实际上动态语言就是为这个而生的。

简洁,主要表现在语法和功能上。

其实也就是Python内置了许多强大的函数和模块,而不要你像写C/C++那样需要自己动手:

a=’123′
b=’123′
c=’4′
a==b #True
a==c #False

说到优雅,其实就是语法更加符合人类的语言和思维:

x=’man’
y=’woman’
x is ‘man’ #True
x is not ‘woman’ #True
y is ‘woman’ #True

至于严谨,Python严格使用缩进来控制流程,不需要分号,也不需要括号,其实这一定程度上也造成了Python的简洁:

def main():
    a="x y z"
    print('%'.join(a))

main() #x% %y% %z

至于高生产力,因为Python有强大的内置数据结构和类库,所以省力!

可以说Python的所有数据都是类,但是却不像那狗日的java一样,放个屁也得构造去一个类,然后在类里面构造一个方法出来。
也不需要将 主类的“XXX”名称 整的和 “XXX”.java 文件名一样。

Python是直译式的,所以甚至不像 C/C++ 有 main() 函数,所以我上面的例子才有 def main()这样的定义。

不喷了,看例子:

a=’abcdefg{0}’
a.format(“#dear#”)  #’abcdefg#dear#’
a[2:6:2] #返回ce,即2~6字符分片,步长为2

然后,有人说Python里面是没有“数组的”。

什么叫没有数组,其实是有更强大的数据结构 —— 列表,元组等等。

L=[-17.5,’kilo’,49,’v’,[‘ram’,5,’echo’],7] #你在C/C++里面见过把整数和字符串混一起的数组嘛?
print(L.pop(0)) #返回-17.5
print(L) #返回[‘kilo’, 49, ‘v’, [‘ram’, 5, ‘echo’], 7]

其实列表就是一种强大的混合类型数组,我相信,只要你愿意,应该可以用 C语言 的 Struct 构造一个 List 出来。

所以,有这些NB的东西,还能不高生产力吗?

不多说,Python看起来简单,但是简单的只是Python的基础,说到Python高级编程,其实难度也是挺大的。

Python的类无构造函数,也不能 重载初始化函数__init__() ,因为Python有强大的字符串分析能力,所以这只是小case。

Python的类里面有一些特殊方法,诸如 __lt__(self,other):

class Point:
	def __init__(self,x=0,y=0):
		self.x=x
		self.y=y
	def printx(self):
		print(self.x,self.y)
        def __lt__(self,other):
            if self.x

实际上 __lt__(self,other) 就是对类的 < 号进行重载。看到这里,是否有似曾相识的感觉?
对!就是对 C++ 里面运算符重载的 Python 低难度实现!

然后,Python不像Java那样,Python和C++一样是支持多继承的,即一个儿子可以有几个老师!
我一直认为多继承才是完备的面向对象,才是对现实世界的真正模拟,所以Python基本具备了C++的大部分能力!

然后,什么成员函数修饰器不说,连类修饰器也有,还有就是,比如要你用Python标准库自己写个TCP Client和TCP Server进行交互也是比较吃力的,还有诸如等等……

然后呢,鶿想拿Python和么些语言进行对比一下,对,就拿他和JavaScript比吧。

有人觉得好笑,我拿Python和JavaScript比,我想做过JavaScript高级编程的程序员,还是会理解我的。

Python用它自己的理念实现了数据结构,面向对象,lambda……一系列完备功能。

虽然Python也能动态创建一个函数:

import math
code='''
def area_of_sphere(r):
    return 4*math.pi*r**2
'''
context={}
context["math"]=math
exec(code,context)

area_of_sphere=context["area_of_sphere"]
area=area_of_sphere(5) 
print(area)
#返回 314.1592653589793 

Python还能:

list(map(lambda x:x**2,[1,2,3,4])) #返回[1, 4, 9, 16]
list(filter(lambda x:x>0,[1,-2,3,-4])) #返回[1, 3]

但是闭包和lambda还是没JavaScript那么原味(以下是JavaScript代码的函数字面量与闭包演示):

function funcObject(x,y,z){
	alert(z(x,y));
}

function testfuncObject()
{
	funcObject(3,4,function(x,y) {return x*y;});
}
testfuncObject(); #返回12

至于JavaScript的什么 “一次性对象” 啊,什么 “原型” 啊……(估计是从计算机诞生那天起也只有JavaScript特有的吧~

所以,在鶿所有的技能树中,鶿依旧认为JavaScript才是我所会的语言中最有创造性,最灵活,最松散的,是最接近Lisp的语言。

但是JavaScript由于特性太多,所以不像Python那么严谨,换句话说,就是JavaScript不好控制。

和 Python 的哲学 —— “用一种方法,最好是只有一种方法来做一件事” 相比。

JavaScript几乎无所不能,在JS里面,从没有百分之百的正确语法,也没有百分之百正确的结果!

好吧,不多扯了,以免引发口水战。

哦,说到技能树,如你所见,这是鶿两年半以来……:


这棵树已经完成了一些,但是并没有完全完成,如果不出意外,鶿在大学生涯还想再自学最后一门语言,大家猜猜,会是什么?

最后,放一个完整的Python3程序演示,这个小程序并不能完全体现Python的特性,但是起码可以体现Python的简洁与优雅吧:

将近一个月的消耗,鶿的魔法值也下降到了最低点,我要好好休息一阵子了。

About Mucid

My life is brilliant !
This entry was posted in Notes Of Life and tagged , , , , , , , , . Bookmark the permalink.

112 Responses to 吾之技能树,Python修完

  1. バーバリー ショルダーバッグ says: Internet Explorer 6.0 Internet Explorer 6.0 Windows XP Windows XP

    I am often to blogging and i really appreciate your content.The article has really peaks my interest.I am going to bookmark your site and keep checking for new information.

  2. 节操掉光的的千寻 says: Google Chrome 19.0.1084.56 Google Chrome 19.0.1084.56 Windows XP Windows XP

    太技术了(跪..
    俺是看到代码就想屎星人www

  3. 海晓 says: Google Chrome 20.0.1094.0 Google Chrome 20.0.1094.0 openSUSE x64 openSUSE x64

    一直不喜欢python2的utf8处理机制,还没了解3有没有这方面的变化.

  4. hit9 says: Firefox 12.0 Firefox 12.0 GNU/Linux GNU/Linux

    python好东西~~~

  5. averainy says: Google Chrome 19.0.1084.46 Google Chrome 19.0.1084.46 Windows XP Windows XP

    我猜你的下一门语言不是ruby就是Haskell

  6. 影楼网销 says: 360Safe Explorer 360Safe Explorer Windows 7 Windows 7

    学习学习了啊

  7. 外汇交易 says: Firefox 10.0.2 Firefox 10.0.2 Windows XP Windows XP

    真的强大呀,可是看不懂,

  8. freetstar says: Firefox 10.0.2 Firefox 10.0.2 Windows 7 x64 Edition Windows 7 x64 Edition

    最后学lisp? :?:

  9. yetone says: Firefox 2012 Firefox 2012 Arch Linux x64 Arch Linux x64

    你去哪了啊 :cry:

  10. 朵未 says: Firefox 7.0.1 Firefox 7.0.1 GNU/Linux x64 GNU/Linux x64

    Mucid厉害~~怪不得这么少更新。我刚装了Ubuntu,以后多多指教啊~

  11. zodiacg says: Google Chrome 17.0.963.46 Google Chrome 17.0.963.46 Windows 7 x64 Edition Windows 7 x64 Edition

    对Python的缩进控制流程有极大的好感,这种迫使程序变得结构清晰易读的设定真是太棒了……

    上C语言课的时候同学叫我帮忙改程序,第一件事就是把格式调整一下,缩进弄明白了……

  12. win8迷 says: CoolNovo 2.0.1.40 CoolNovo 2.0.1.40 Windows 7 Windows 7

    :???: 围观技术帝,哥们你越来越强大了

  13. 王会勇 says: Google Chrome 17.0.963.56 Google Chrome 17.0.963.56 Windows XP Windows XP

    博客看起来很清爽啊,果然不是搞程序就是搞设计的人

  14. Tonebean says: Google Chrome 19.0.1041.0 Google Chrome 19.0.1041.0 Windows XP Windows XP

    许久不见,你学会Python了。

  15. an9 says: Google Chrome 10.0.648.204 Google Chrome 10.0.648.204 Windows XP Windows XP

    :twisted: 技术文,看不懂啊.