我是怎样通过类比来学习 python2 的

转载请注明出处:
(http://blog.csdn.net/BruceHurrican/article/details/53541663)

在学习 python 之前我对 python 是个小白。在工作中用到好多第三方的工具(如 freeline),这些工具中就有好多 .py 的文件, 为了弄懂这些文件里的逻辑才来学习python 的,当前 freeline 采用的是 python2版本的,所以我是以 python2来学习的。PS: 我是做安卓的,对 Java 什么知道的多些,python 就……T_T

环境搭建

首先交待下我的学习工具,mac, pyCharm, sublime。
刚开始不推荐用 pyCharm 直接写 python 代码,因为好多东西 IDE 都帮我们做了,有些基础原理方面的东西就学不到了。

因为我用的是 mac ,已经帮我安装了 python,如果没有安装 python 的话,需要自行去安装,传送门
在终端输入

python –version

我的电脑出现的是 Python 2.7.10,表示我的电脑已经可以使用 python 了。

知识点整理

如前所述,我对 java 知道的多点,所以在学习 python 时总是习惯性的拿 python 和 java 来对比,不晓得哪个大牛说过,≖‿≖✧程序语言具有类比性,学好了一门,再去学另一门会容易些。不敢说我对 java 理解的有多透彻,以我 leader 的评价来说,算是熟悉吧,毕竟开发 android app 够用了。扯远了,哈……

先整体了解下 java 和 python 的异同吧
1. 从编译类型上来说 python 是解释型语言,java 是编译型语言也是解释型语言。python 是不需要编译的,可以直接运行的。java运行速度快,python慢,代码量上python少,java快。java是静态语言,声明变量必须指明变量类型,python是动态语言,必须指明变量类型。
2. 两者都对数据类型敏感,不同的数据类型之间的转换是需要类型转换的。
3. 书写单行语句时,java 必须以分号”;”结尾,python是可加可不加分号的,如下:

python
 print 'aa' # 1
 print 'bb'; #2

注意,如果 #1,#2在同一行的话,则#1后面必须加分号,如下:

  python
      print 'aa'; print 'bb'

-4. java 中双引号表示字符串,单引号表示字符,python 中 两种符号都表示字符串,python 中没有字符这种数据类型,另外 python 中还可以用 三个单引号 ”’来表示字符串

a=”’hello python”’
三个单引号还可以用来显示多行字符串
b = ”’hello python
hello java”’

-5. python 中对换行非常敏感,多条语句执行时,就是依据换行和缩进来决定招行范围的,如:

python
if 1<0:
    print 'hello python' #1
    print 'hello python2' #2
print 'hello java' #3

if 判断语句只能影响到 #1,#2,影响不到#3。这是因为 python 中不像 java 可能通过 花括号”{}”来表示代码块,方法体,python 对应的称为代码组,函数,代码组,函数是以冒号开始的相同缩进表示属于相同的代码组或函数,所以在 python 中不能随便缩进,不像 java,在一行语句前多敲几下空格是不影响最终结果的
6. python 中用中括号”[]”表示列表

c=[1,2,3,4]

相当于 java 中的集合,可以增删改查,
7. python 中 的圆括号代表可读列表,只能读取不能修改相当于 java 中的常量数组。
8. python 中的 字典和 java 中的 map 有点类似都是KV 结构

python
dd = {'a':1,'b':2,'c':3}

-9. python 中使用其他包下的函数需要引包使用 import 关键字,这点和 java 一样
10. 重复执行命令,在 java 中如果要打印两遍同样的信息,要么循环,要么写两遍同样的语句,python 中只需要在调用的地方加上”*2”即可

python
    print 'aa'*2

-11. python是面向对象的,这点和 java 相同,但是写法上又有点不同,因为在 Java 语法中,在类名后是用花括号包括的部分称为类体,在 python 中无此用法。python 中是依靠冒号的缩进组成的代码组来表示类体的,如:

python
    class KK:
        def __init__(self,name):
            self.name = name
        def showName(self):
            print 'name: ', name

    ks=KK('bruce')
    ks.showName()

”’_ _ init _ _(self,name)”’是类的构造函数, name 是入参,self 是本身,类的实例化没有 new 关键字,调用实例方法和 Java 类似,
12. 垃圾回收机制,和 java 类似,当对象不再被引用时,会调用类 del方法回收内存
13. java 和 python 都支持继承,区别是 python 支持多继承,java 继承的关键字 extends 而 python 是用圆括号来表示,多个父类用逗号分隔,如

python
    class KK:
    '测试类'
    def __init__(self, name):
        self.name = name
    def showName(self,msg):
        print 'name: ', self.name + msg
    def __del__(self):
        class_name = self.__class__.__name__
        print class_name + '销毁'
class SS:
    'SS'
    def __init__(self):
        print '调用子类构造方法2'
    def showTxt(self,msg):
        print msg
class TT(KK,SS):
    'TT'
    def __init__(self):
        print '调用子类构造方法'

-14. python 子类重写父类方法直接声明一个同名同参的方法即可,没有 java 的 override 关键字。
15. 类变量的权限,对于成员变量,类实例可以访问,这点类似 Java 类中的 public 修饰的成员变量。对于私有变量 python 中在类中声明时须加两个下划线

class TT:
__ss = 30

按照 Java 的思维习惯,私有变量是不能被外部实例访问,如上

tt=TT()
tt.__ss

会报错 AttributeError: TT instance has no attribute ‘_ss’,这样理解也没有什么问题,但是 python 和 Java 在访问私有变量是有个很大的不同,上述方法行不通,但是可以通过 tt._TT__ss 的形式来访问私有变量,这样私有变量也不是“私有”了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值