python基础(二)

目录

  一.语句和语法

  二.变量赋值

  三.标识符和关键字

  四.基本风格

  五.内存管理

 

一、语句和语法

  Python语句中有一些基本规则和特殊字符:
  1.井号(#)表示之后的字符为Python注释
  2.换行 (\n) 是标准的行分隔符(通常一个语句一行)
  3.反斜线 ( \ ) 继续上一行

    有两种例外情况一个语句不使用反斜线也可以跨行。在使用闭合操作符时,单一语句可以跨多行,例如:在含有小括号、中括号、花括号时可以多行书写。另外就是三引号包括下的字符串也可以跨行书写。

>>> print """hi there,this is a long message for you
that goes over multiple lines...you will find out soon that triple
quotes in Python allows this kind of fun!it is like a day on the beach!"""
hi there,this is a long message for you
that goes over multiple lines...you will find out soon that triple
quotes in Python allows this kind of fun!it is like a day on the beach!
>>> print (3 +
       2)
5
>>> #推荐使用括号,这样可读性更好

   4.分号 ( ; )将两个语句连接在一行中(虽然python允许这么做,但是不推荐)

  5.冒号 ( : ) 将代码块的头和体分开
  6.语句(代码块)用缩进块的方式体现

    缩进相同的一组语句构成一个代码块,我们称之代码组。像 if、while、def 和 class 这样 的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。 我们将首行及后面的代码组称为一个子句(clause)。
  7.不同的缩进深度分隔不同的代码块(推荐:使用四个空格宽度,避免使用制表符)

    Python使用缩进来分隔代码组。代码的层次关系是通过同样 深度的空格或制表符缩进体现的。同一代码组的代码行必须严格左对齐(左边有同样多的空格 或同样多的制表符),如果不严格遵守这个规则,同一组的代码就可能被当成另一个组,甚至 会导致语法错误。
  8.Python文件以模块的形式组织

    每一个Python脚本文件都可以被当成是一个模块。模块以磁盘文件的形式存在。当一个模块变得过大,并且驱动了太多功能的话,就应该考虑拆一些代码出来另外建一个模块。模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导 入(import)调用。

二、变量赋值

  1.赋值运算符(=)

  注意,赋值并不是直接将一个值赋给一个变量。在Python语言中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。

>>> x = 2
>>> y = (x = x + 2)  #不支持
SyntaxError: invalid syntax
>>> y = x = x + 2    #支持链式赋值
>>> x,y
(4, 4)
>>> 

   2.增量赋值:+=  -=  *=  /=  %=  **=  <<=   >>=   &=   ^=   |=

  3.多重赋值

>>> x = y = z = 6
>>> x
6
>>> y
6
>>> z
6

   4.多元赋值,Python的多元赋值方式可以实现无需中间变量交换两个变量的值。是不是很方便喽

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

三、标识符

  (1)python标识符

    1.第一个字符必须是字母或下划线(_)

    2.剩下的字符可以是字母、数字和下划线

    3.大小写敏感

  (2)python关键字

>>> import keyword
>>> keyword.kwlist
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print',
'raise', 'return', 'try', 'while', 'with', 'yield'] >>>

   (3)python内建

    除了关键字之外,Python还有可以在任何一级代码使用的“内建”的名字集合,这些名字可以由解释器设置或使用。然而,有些情况要求覆盖(也就是:重定义,替换)它们。Python不支持重载标识符 所以任何时刻都只有一个名字绑定。

  (4)专用下划线标识符 

    Python用下划线作为变量前缀和后缀指定特殊变量

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

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

四、风格指南

  (1).注释 (2).文档 (3).缩进 (4).选择合适的标识符

  python编程风格

    # (1) 起始行(通常只有在类Unix环境下才使用起始行,有起始行就能够仅输入脚本名字来执行脚本,无需直接调用解释器)

    # (2) 模块文档

    # (3) 模块导入

    # (4) 变量定义(这里的变量是全局变量,除非必须,否则就要尽量使用局部变量代替全局变量

    # (5) 类定义

    # (6) 函数定义

    # (7) 主程序

五、内存管理

    1.变量无需事先声明(变量在第一次被赋值时自动声明,而且只有被创建和赋值后才能使用)

  2.变量无须指定类型(动态类型,对象的类型和内存都是运行时确定的。在创建时,解释器会根据语法和右侧的操作数来决定新对象的类型)

  3.不必关心内存管理

  4.变量名会被“回收”

  5.引用计数   要保持追踪内存中的对象,python使用了引用计数。一个内部跟踪变量称为引用计数器。每个对象各有多少引用称为引用计数

    增加引用计数

      (1)对象被创建 x = 3

      (2)或另外的别名被创建 y = x

      (3)或被作为参数传递给函数(新的本地引用) foo(x)

      (4)或成为容器对象的一个元素 mylist = [123,x,'xyz']

    减少引用计数

      foo = 'xyz'  引用计数变成1

      bar = foo    增加了别名bar 引用计数变成2

      foo = 123    foo被重新赋值,xyz的引用计数自动减1,变为1

      (1)一个本地引用离开了其作用范围

      (2)对象的别名被显式的销毁 del y

      (3)对象的一个别名被赋值给其他对象 x = 123

      (4)对象被从一个窗口对象中移除 mylist.remove(x)

  6.del语句能够直接释放资源(执行del会删除该对象的最后一个引用,即引用计数会减为0)

    注意:任何追踪或调用程序会给一个对象增加一个额外的引用,这会推迟该对象被回收的时间

  7.垃圾收集 

    不再使用的内存会被一种称之为垃圾收集的机制释放。虽然解释器跟踪对象的引用计数,但垃圾收集器负责释放内存。它是一块独立的代码,用来寻找引用计数为0 的对象。同时也负责检查那些虽然引用计数大于0但也应该被销毁的对象。特定情形会导致循环引用。

    

posted @ 2016-08-05 08:23  悟空,你真了不得  阅读(1051)  评论(4编辑  收藏  举报