python学习心得
来源:互联网 发布:文字读取软件在线 编辑:程序博客网 时间:2024/05/16 08:05
最近开始学习python,感觉python和c++,java,perl有些不同,现记录于此。
python的变量都是引用,并且变量本身没有类型,定义一个变量,直接把变量名写出来就搞定。比如
a = 3
a = 'spam'
a = 1.23
a = myclass()
我们可以把不同类型的对象,赋值给a,a都能接受。这点和其他语言很不一样(c++就是一种强类型语言,变量也有类型,你只能把对象赋值给同类型的变量),这点也为写python代码提供了不同的思路。a是一个变量,a本身没有类型说明,所有类型的说明都来自于a所引用的对象。当我们对a进行操作,对类型的检查都来源于a引用的对象,而和a本身无关。这一点,使得python在语言层面就能很好的支持多态。
对下面的代码,放在任何地方,语法总是对的:
def testFunction( obj )
obj.testFunction()
参数obj作为一个变量,它本身可以接受任何对象,所以obj调用一个叫 “testFunction”的成员函数,语法上是可以的。只有在运行时刻,obj所引用的对象确定了,这时候,obj能够调用的成员函数才确认,这时候如果找不到“testFunction”这个成员函数,才报错。
(带来的缺点就是,如果手误,对函数名拼错了,也只有运行后才知道)
(python是个动态语言,可以对对象在运行时,增加属性,即我们可以程序跑起来后,代码运行过程中添加一个成员函数,然后调用这个成员函数就不会报错了)
由此导致了2个问题:
1,c++,java中继承接口的概念在python似乎没啥意义。
在c++中,我们定义了个接口类,通过继承这个接口类来实现不同版本的实现。我们把这个接口类暴露出来,而对继承类隐藏起来。外面只知道接口,不知道实现。外面因为有了接口,也知道怎么调用,多完美的设计模式。
可惜到了python,接口似乎没啥意义。接口的本意是告诉外面那些函数可以调用,这样可以通过编译器的编译。而在python中,哪些函数可以调用,直接给个文档就ok了,外面按照文档就可以编码了。因为一个变量调用任何函数在语法上都不会报错。
2,不导入模块,也能调用模块内的类方法。
在c++,java中,我们include一个头文件之后,才可以使用这个头文件定义的函数,变量名等等。
到了python,如果是通过变量来引用一个对象,我们对变量的操作完全不受限制,即使我们不import定义这个对象的模块,语法上也是没有问题。我们只有在定义一个对象时候(也就是new一个对象的时候)才需要import这个模块的定义文件。这样看来,我们可以减少很多模块之间的import操作,只要在当前文件中,是通过变量来操作这个对象,我们就不需要import对应模块到当前的文件中。
- Python学习心得
- Python 学习心得
- python 学习心得
- python学习心得
- Python学习心得
- python学习心得
- Python学习心得
- python 学习心得
- Python 学习心得(一)
- python学习心得和体会
- Python学习心得(1)
- Python学习心得new
- python 源码学习心得
- python学习心得--日常记录
- Day1 Python学习心得
- Python爬虫学习心得
- python生成器学习心得
- python yield学习心得
- 原Google、Facebook产品经理分享产品管理核心之道
- 鸟哥的私房菜在线版本
- OpenCV编程案例:实现一个双目摄像头图像显示的程序
- 使用VS 2013的Bing Code Search插件写SharePoint代码
- _cplusplus的使用
- python学习心得
- 回车键提交登陆界面
- Unity 3D NGUI两种事件添加方式比较
- 驯服Trivia烂代码:bjdp.org第13次编程道场议程安排
- 如何优化app,减少App的大小
- IPV4首部
- The Yapps Parser Generator System Version 1.1
- Visual C++编程实现摄像头视频捕捉
- HBase 0.94 --之数据压缩(DataBlock compression,HLog compression)