zoukankan      html  css  js  c++  java
  • Python学习笔记 02 Python基础

     

    1、语句和语法

     

    #号表示之后为python的注释。

     

    换行(\n)是标准的行分隔符(通常一个语句一行)。

     

    反斜线(\)继续上一行,在使用闭合操作符(小括号,中括号,大括号,三引号)时,单一语句可以跨多行。

     

    分号(;)将2个句子连载一行,可以用于同一行书写多个语句。

     

    冒号(:)将代码块的头和体分开,像if,while,def,class这样的复合语句,首行以关键字开始,以冒号(:)结束,该行之后的一行或多行代码构成代码组。

     

    语句(代码块)采用缩进块的方式体现。

     

    Python文件以模块的形式组织,模块里的代码可以是一段直接执行的脚本,也可以是一堆类似库函数的代码,从而可以被别的模块导入(import)调用。

     

    2、变量赋值

     

    Python语言中,=是主要的赋值操作符。在Python中,对象是通过引用传递的。在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对象的引用(并不是值)赋值给变量。Python的赋值语句不会返回值。

     

    >>> x = 1
    >>> y = (x = x + 1)
    SyntaxError: invalid syntax

     

    链式赋值没问题,比如:

     

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

     

    等号可以和一个算术操作符组合在一起,将计算结果重新赋值给左边的变量。这被称为增量赋值。

     

    >>> x += 1

     

    可以使用的增量赋值操作符:

     

    +=、-=、*=、/=、%=、**=、<<=、>>=、&=、^=、|=,但是不支持x++或—x这样的前置、后置自增/自减运算。

     

    Python支持多重赋值,多元赋值。

     

    >>> x += 1
    >>> x = y = z = 1
    >>> x, y, z = 1, 2, 'a string'

     

    建议加上小括号,提高可读性。

     

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

     

    Python的多元赋值可以实现无需中间变量交换两个变量的值。

     

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

     

    3、标识符

     

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

     

    (2)剩下的字符可以是字母或数字或下划线。

     

    (3)大小写敏感。

     

    Keyword模块中同时包含了一个关键字列表和一个iskeyword()函数。

     

    >>> import keyword
    >>> keyword.iskeyword('while')
    True

     

    Python不支持重载标识符,任何时刻都只有一个名字绑定。

     

    built-in 是__builtins__模块的成员,可以看做任意python模块的全局变量,不要使用。

     

    __xxx 不用‘from module import *’导入

     

    __xxx__系统定义的名称

     

    __xxx 类的私有成员变量

     

    核心风格:避免使用__作为变量的开始,除非是类的私有成员变量。

     

    4、基本风格

     

    文档:pyhton通过__doc__特别变量动态获得,类,模块,函数,第一个没有赋值的字符串可以通过属性:obj.__doc__来进行访问,其中obj是一个模块、类、函数的名字。

     

    模块结构和布局

     

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

     

    (2)模块文档。简要介绍模块功能及重要全局变量的含义,模块外可通过module.__doc__访问这些内容。

     

    (3)模块导入。

     

    (4)变量定义。这里指的是全局变量。尽量用局部变量代替僵尸变量。

     

    (5)类定义语句。所有的类都需要在这里定义。当模块被导入时class语句会被执行。类也就会被定义。类的文档变量是class.__doc__。

     

    (6)函数定义语句。此处定义的函数可以通过module.function()在外部被访问到,当模块被导入def语句会被执行,函数也就都会定义好,函数的文档变量是function.__doc__。

     

    (7)主程序。

     

    每个模块中都最好用__name__=="__main__"来检查进行代码回归测试。

     

    时刻记住:所有的模块都有能力执行python,没有缩进的代码行在模块被导入的时候会被执行,不管是不是真的要执行,都有这个特性,比较安全的方式几乎所有的功能代码都放到函数当中。

     

    5、内存管理

     

    (1)变量无须事先声明;

     

    (2)变量无须指定类型;

     

    (3)程序员不用关心内存管理;

     

    (4)变量名会被“回收”;

     

    (5)del语句能够直接 持释放资源;

     

    引用计数:当对象被创建并赋值给变量时,该对象的引用计数就被设置为1。当同一个对象又被赋值给其他变量时,或作为参数传递给函数、方法或类实例时,或者被赋值为一个窗口对象的成员时,该对象的一个新的引用,或者称作别名,就被创建了(引用计数自动加1)。当对象的引用被销毁时,引用计数会减小。当变量被赋值给另外一个对象时,原对象的引用计数也会自动减1。

     

    (1)对象被创建:

     

    >>> x = 3.14

     

    (2)或另外的别名被创建:

     

    >>>y = x 

     


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

     

    >>>foobar(x)

     

    (4)或成为容器对象的一个元素:

     

    >>>mlist = [133,x,'xyz']

     

    del语句:del obj1, obj2, …, objN,从现在的名称空间中删除对象,引用计数减1。

     

    (1)对象销毁时候,引用计数会减少:引用离开作用范围,函数运行结束、

     

    (2)

     

    >>>foo = 'xyz' #当对象“xyz”被创建,它引用计数为1
    >>>bar = foo #增加个别名,引用增加为2
    >>>foo = 123 #xyz对象减一,自动变成1

     

    (3)对象别名被显式删除或销毁:

     

    >>>del y

     

    (4)对象的一个别名被赋值给其他对象:

     

    >>>x = 123

     

    (5)对象从一个窗口对象中移除:

     

    >>>mylist.remove(x)

     

    (6)窗口对象本身被销毁:

     

    >>>del mylist  #或者离开其作用范围。

     

    6、垃圾收集

     

    解释器跟踪对象的引用计数,垃圾收集器负责释放内存。它用来寻找引用计数为0的对象。也负责检查那些虽然引用计数大于0,但也应该被销毁的对象。

     

    7、Python程序示例

     

    复制代码
    #!/usr/bin/env python

    'makeTextFile.py -- create text file'

    import os

    # get filename
    while True:
    fname = raw_input('Enter file name: ')
    if os.path.exists(fname):
    print"*** ERROR: '%s' already exists" % fname
    else:
    break

    # get file content (text) lines
    all = []
    print "\nEnter lines ('.' by itself to quit).\n"

    # loop until user terminates input
    while True:
    entry = raw_input('> ')
    if entry == '.':
    break
    else:
    all.append(entry)

    # write lines to file with NEWLINE line terminator
    fobj = open(fname, 'w')
    fobj.write('\n'.join(all))
    fobj.close()
    print 'DONE!'
    复制代码

     

    转自:http://www.cnblogs.com/juventus/archive/2012/03/09/2388365.html

  • 相关阅读:
    evernote100个做笔记的好方法
    平衡二叉树的调整模版
    晨间日记的奇迹
    hdu 2952 Counting Sheep
    hdu 1535 Invitation Cards
    poj 3259 Wormholes(spfa)
    poj 2263 Heavy Cargo(floyd)
    poj 3268 Silver Cow Party(SPFA)
    hdu 1690 Bus System
    hdu 3631 Shortest Path(Floyd)
  • 原文地址:https://www.cnblogs.com/viviancc/p/2551755.html
Copyright © 2011-2022 走看看