zoukankan      html  css  js  c++  java
  • 2015/8/26 Python基础(1):基本规则及赋值

    Python有如下的基本规则:
      #后表示注释
       是行分隔符
      是继续上一行,将过长语句分开
      ;分号将两个语句连接在一行中
      :冒号将代码头和体分开
      代码块用缩进块的方式体现
      不同缩进深度分隔不同的代码块
      Python文件用模块的形式组织

    缩进推荐风格,缩进四个空格宽度,避免使用制表符。

    赋值语句
    Python中,主要赋值运算符是等号( = )
    赋值不是直接将一个值赋给一个变量,对象是通过引用传递的。不管变量是新创建的还是已经存在的,都是将该对象的引用赋值给变量。

    C语言中,赋值语句可以当成一个表达式,可以返回值。但在Python中,赋值语句不会返回值。这使得这样的语句是非法的

    >>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
    y = (x = x + 1)
    ^
    SyntaxError: invalid syntax
    
    >>> if (a = 3):
    
    SyntaxError: invalid syntax

    这就避免了判断语句中,将 == 符号误写成 = 的问题。是一个很好的功能。

    同样的Python中链式赋值并没有问题。

    >>> y = (x = x + 1) # assignments not expressions! File "<stdin>", line 1
    y = (x = x + 1)
    ^
    SyntaxError: invalid syntax
    
    >>> if (a = 3):
    
    SyntaxError: invalid syntax

    同时还有增量赋值符

    +=   -=   *=   /=   %=   **=
    <<=  >>=   &=   ^=   |=

    相对于普通赋值不仅仅是写法改变,最有意义的变化是第一个对象仅被处理一次。
    Python不支持x++或--x这样的前置/后置自增/自减运算
    多元赋值

    >>> x, y, z = 1, 2, 'a string'
    >>> x
    1
    >>> y
    2
    >>> z
    'a string'
    >>> x, y, z
    (1, 2, 'a string')

    赋值时将等号两边的对象都看成元组

    使用多元赋值的方法可以不使用中间变量直接交换表量的值

    >>> x , y = 1, 2
    >>> x, y
    (1, 2)
    >>> x, y = y, x
    >>> x, y
    (2, 1)

    专用下划线标识符

      _xxx 不用'from module import *'导入
      __xxx__系统定义名字
      __xxx 类中私有变量名

    风格提示: 避免用下划线作为变量名的开始
    下划线对于解释器有特殊的意义,而且是内建标识符所使用的符号,所以应避免下划线作为变量名的开始。一般来讲_xxx被看做私有的,在模块或类外不可使用,所以当变量是私有时,用_xxx是很好的习惯。因为__xxx__有特殊含义,所以普通变量命名应避免这种风格


    关于变量的赋值部分
    Python的变量的赋值都是引用。这设计到它的内存管理机制。Python使用了引用计数这一简单技术。内部记录着所有使用中的对象各有多少引用。
    当对象被创建时,就创建一个引用计数,当对象不背需要时,即引用计数为0时就被垃圾回收。
    当对象被创建并赋值给变量时,该对象的引用计数就被设置为 1
    当同一个对象又被赋值给其它变量时,或者作为参数传递给函数,方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用或者称别名,就被创建(引用计数加1)

    x = 2
    y = x

    第一句创建了一个整数对象并引用赋值给x。x是第一个引用,该对象的引用计数设置为 1 。当y = x 语句执行时,并没有为y创建一个新对象,而是该对象的引用计数增加了1次。这是引用计数的增加。同样还有作为参数被函数调用,或者对象被加到某个容器对象中时。
    而当变量被赋值给另一个对象时,原对象的引用计数也会自动减 1

    foo = 3
    foo = '123'

    当3被创建赋值给foo时,引用计数是1 。 当它重新赋值给对象'123'时,3的引用计数自动减1
    当本地引用离开了作用范围,比如函数结束时。
    对象别名被显式的销毁
    对象别名被赋值给其他对象
    对象从一个窗口对象中移除
    窗口对象本身被销毁
    这几个情况都会减少引用计数

  • 相关阅读:
    使pre的内容自动换行
    textarea文本换行和页面显示换行符
    SQL查询包含汉字的行
    网站引导页插件intro.js 的用法
    jquery.cookie中的操作
    sql自动生成汉语拼音和首字母函数
    IE,Chrome滚动条样式CSS
    Vcenter server 5.5上传ISO镜像
    Vcenter server 5.5添加用户角色及分配权限
    Vcenter server 5.5安装部署
  • 原文地址:https://www.cnblogs.com/SRL-Southern/p/4769324.html
Copyright © 2011-2022 走看看