zoukankan      html  css  js  c++  java
  • 学习Python的核心注意点(Pycharm2017开发)

    1.Python 中的变量:是容器(bucket)还是标签(label)?

           在Python中“变量”这个名称或许有点误导性,应该叫“名称”或“标签”会更准确一些。但是,似乎所有人都习惯称为“变量”了。无论叫什么名称,都应该知道Python中的变量是如何进行工作的。

           对变量的常见解释就是存储值的容器,有点像个桶(bucket),当然这不算准确。对许多编程语言(如C语言)来说,这种解释是合理的。

           但是,Python中的变量不是容器,而是指向Python对象的标签,对象位于解释器的命名空间中。任意数量的标签(或变量)可以指向同一个对象。当对象发生变化时,所有指向它的变量的值都会改变。

           通过以下简单代码,深刻体会理解上述含义:

    1 a=[1,2,3]
    2 b=a
    3 c=b
    4 b[1]=5
    5 print(a,b,c)
    View Code

            上述代码运行结果为:[1, 5, 3] [1, 5, 3] [1, 5, 3]

            如果将变量视为容器,以上结果就说不通了。改变了一个容器的内容,另外两个容器不应该同时发生变化。但是,如果变量只是指向对象的标签,就说得通了。3个标签都指向同一个对象,若对象发生变化,则3个标签都会反映出来。

           如果变量指向的是常量或不可变值,上述区别就不是十分明显了:

    1 a=1
    2 b=a
    3 c=b
    4 b=5
    5 print(a,b,c)
    View Code

              上述代码运行结果为:1 5 1

            因为变量指向的对象无法改变,所以变量的表现与两种解释均符合。实际上在第三行代码执行完毕后,a、b和c就全都指向了同一个不可更改的整数对象,其值为1。下一行代码b=5则是让 b指向整数对象5,但a和c的指向没有变化。



  • 相关阅读:
    十二周学习进度
    冲刺第十天
    19.Maven 的单模块之 Spring MVC + Spring + Spring Data JPA 项目(基于 IntelliJ IDEA)
    18. Maven 的单模块 / 多模块之 Spring MVC + Spring + Mybatis 项目讲解(重点)
    16.Java Web 项目环境搭建
    17.Maven 项目介绍
    15.Postfix Completion 的使用
    16.插件讲解
    14.Emmet 讲解
    13.文件代码模板讲解
  • 原文地址:https://www.cnblogs.com/Qmin/p/12123274.html
Copyright © 2011-2022 走看看