zoukankan      html  css  js  c++  java
  • 编程语言学习——python(1)

      python中一切皆对象,我觉得这里的对象和面向对象编程中的对象应该是不一样的。python中变量1,'a',函数,类,模块都是对象,在使用type()函数的时候,对于上面的几个对象都会返回一个结构相似的内容<type '类型'>,其中a为定义的函数,b为定义的类。

    >>> print type(a)
    <type 'function'>
    >>> print type(b)
    <type 'classobj'>
    >>> print type(1)
    <type 'int'>

      python是动态类型语言,即应用与对象分离的(定义变量时不要声明它的类型,而是在赋值的时候将变量的应用给变量名)。这里的应用是指内存地址,和指针有点类似。我们用名字表示应用,变量名、函数名、类名等,使用id()函数可以查看名字所对应的地址值。对象则就是上面说的变量(1,'a',True),函数,类等。

      

      python中一切皆对象,则内存中python应该是使用相同的方法管理各种对象的。应用是用来使用对象的,赋值语句可以看做对象与应用的链接。

    #变量,这里只有一个对象1,a/b/c都是对象1的应用
    a=1
    b=1
    c=a
    
    #新的对象2,此时a不再是1的应用,而是2的应用
    a=2
    
    #函数,f,f2为下面同一个函数的应用
    def f():
        print "abc"
    
    f2=f
    #此时f变成了'a'对象的应用,不再是上面函数的应用
    f='a'

      python对象在内存中,都维护着一个应用计数,新增应用时加,删除应用时减。计数为0时,就有可能清除该对象所占的内存。清除与否是与对象的内容和python中的gc设置有关的。gc是python关于垃圾回收相关的一个库。

  • 相关阅读:
    干货 | 日均流量200亿,携程高性能全异步网关实践 https://mp.weixin.qq.com/s/JdbPf_H4pn5PnPH2LIKQlw
    go获取机器的mac地址和ip
    扫清障碍和风险
    如何优雅地记录操作日志
    WebSocket 基础与应用系列(一
    pytest测试框架
    两个循环依赖的类中都有@Async 报错问题
    jvm 分析常用笔记
    Qt5.2~5.8下载地址
    windows的bat脚本中文乱码或者文件中文乱码
  • 原文地址:https://www.cnblogs.com/z964166725/p/5675725.html
Copyright © 2011-2022 走看看