zoukankan      html  css  js  c++  java
  • python基础(二)

    目录

      一.语句和语法

      二.变量赋值

      三.标识符和关键字

      四.基本风格

      五.内存管理

    一、语句和语法

      Python语句中有一些基本规则和特殊字符:
      1.井号(#)表示之后的字符为Python注释
      2.换行 ( ) 是标准的行分隔符(通常一个语句一行)
      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但也应该被销毁的对象。特定情形会导致循环引用。

        

  • 相关阅读:
    墙内正确安装docker和docker-compose的方法
    VS2015编译ncnn
    caffe模型转ncnn模型
    Ncnn-Installation-on-Windows
    CV2 Fourcc解析
    手动安装OpenCV下的IPP加速库
    Ubuntu下安装Caffe
    Linux安装CUDA教程参考
    最正确的姿势安装cudnn,网上大多数教程都太坑了
    安装多版本cuda时,nvcc和cuda版本不一致问题
  • 原文地址:https://www.cnblogs.com/jianjianyang/p/5736160.html
Copyright © 2011-2022 走看看