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

    Python 基础

    语句和语法

    凝视

    python中用#号进行凝视

    继续

    假设一个语句须要跨行,那么须要用来连接两个跨行的语句

    if name == 'qeesung' and 
        age == 23

    在两种情况下是不须要使用反斜线来进行跨行连接的:

    • 一个闭合操作时,即含有小括号,中括号。花括号能够进行多行书写,比方在定义一个列表,元组字典的时候就能够进行跨行
    alist = [2,2,3,4,                                                         5,6,7,8                                                           ]                                                                                                    
    • 在三引號包含下的字符串能够跨行书写
    test_str = '''Hello
    World This is Great World
    '''

    代码组

    缩进一个同样的语句的代码快,我们称之为代码组。比方if,while,class等语句都是结束的

    代码的缩进

    python是通过所经代码来区分代码块的。随着缩进深度的添加,代码的层次也在加深,没有缩进的代码是最高层次的,被称为脚本的主体(main)部分

    在一行书写多个语句 (;)

    之间我们讲过用来将一个语句写在多行,如今我们能够用来将多个语句写在一行

    import sys ; x = 'foo' ; sys.stdout.write(x+'
    ')

    模块

    每个python脚本文件都能够被当做是一个模块。模块以磁盘文件的形式存在。
    模块里的代码能够是一段直接执行的脚本,也能够是的一堆相似库函数的代码

    变量赋值

    首先我们先来理解一下什么叫做对象,对象就是一个在内存中有类型的区域。

    赋值操作符

    python语句里面,=是基本的赋值操作符

    anInt = 12
    aString = 'Hello World'
    # ...

    注意:

    • python里面的赋值不是将一个值赋值给一个变量,在赋值时,无论这个对象是新创建的。还是一个已经存在的,都是将对象的引用赋值给变量
    • 在python里面的赋值语句并不会返回一个值。以下语句就是错误的
    x = 1
    y = (x=x+1)# error , 赋值语句不返回值

    增量赋值

    所谓的增量赋值就是採用以下的操作符:+=,-=,**=等操作符
    注意:
    增量赋值和一般的赋值操作不仅仅是写法上的改变,还有更加深层次的改变:

    • 一般赋值操作是一定会改变变量指向的对象的值
    • 增量赋值操作对于不可变对象来说,会改变变量指向的对象;对于可变对象来说,不会改变变量指向的对象

    以下举个栗子:
    一般赋值操作

    print '+'*6, ' number ', '+'*6
    number1 = 1
    print id(number1)
    number1 = 2
    print id(number2)
    print 
    
    print '+'*6,' list ' , '+'*6
    list1 = [1,2,3]
    print id(list1)
    list1 = [4,5,6]
    print id(list1)

    执行结果:
    ++++++ number ++++++
    157259952
    157259940
    ++++++ list ++++++
    3077201548
    3074661452

    可见一般的赋值操作是会改变变量指向的对象的

    增量赋值操作

    print '+'*6, ' number ', '+'*6
    number1 = 1
    print id(number1)
    number1 += 2
    print id(number2)
    print 
    
    print '+'*6,' list ' , '+'*6
    list1 = [1,2,3]
    print id(list1)
    list1 += [4,5,6]
    print id(list1)

    执行结果:
    ++++++ number ++++++
    159398064
    159398040
    ++++++ list ++++++
    3077873292
    3077873292

    所以对于不可变对象来说。增量赋值操作是会改变变量指向的对象的。对于可变对象来说,增量操作是不会改变变量指向的对象的

    多重赋值

    看以下的栗子:

    x = y = z = 1

    新建了一个值为1的整形对象,然后将其引用传给x,y,z,三个变量

    多元赋值

    多元赋值事实上就是元组的赋值

    x, y, z=1, 2, `a string`

    实际上就是以下的元组赋值

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

    python编写的基本风格

    模块的结构和布局

    在编写一个python脚本的时候能够依照以下的布局进行编写:

    1. 起始行:#/usr/bin/env python
    2. 模块文档:''' this is a test modle '''
    3. 模块导入:import sys
    4. 变量定义: list1 ={} ;number1 = 0
    5. 类定义:class MyClass:
    6. 函数定义: def func():
    7. 主程序: if __name__ == '__main__':

    由于主程序代码不论是模块被导入还是直接执行都会执行,我们必须知道程序的执行方向,在某些情况下,一个应用程序须要导入另一个应用程序的一个模块,以便重用某些代码,这时,我们仅仅想訪问那些位域其它应用程序中的代码。而不想执行它们,我们能够通过__name__来推断一个程序是作为模块被导入还是作为程序来执行:

    • 假设模块被导入。__name__就是模块的名字。
    • 假设模块是被直接执行。__name__的值就是__main__

    于是我们能够利用上面的这样的机制,来将測试代码也写在主程序中,在独立执行代码的时候,我们就执行測试代码,在作为模块被导入的时候。就什么都不做

    举个栗子:

    #/usr/bin/env python
    '''there are math function'''
    
    def my_add(number1 , number2):
        return number1+number2
    
    def my_sub(number1, number2):
        return number1-number2
    
    if __name__ == '__main__':
        if 10 == my_add(4, 6):
            print 'add test pass'
        else:
            print 'add test failed'
        if -2 == my_sub(4, 6):
            print 'sub test pass'
        else:
            print 'sub test failed'

    假设我们直接执行这个脚本。那么就会执行測试代码,假设作为模块导入,就什么都不做

    内存管理

    python定义的变量有以下的特性:

    • 变量无序事先声明
    • 变量无序指定类型
    • 程序员不用关心内存管理
    • 变量名会被”回收”
    • del 语句能够直接释放资源

    变量定义

    python里面的变量仅仅有被创建和赋值后才干被使用,由于不论什么变量假设没有初始化,那么变量就没有不论什么意义。

    引用计数

    在创建一个对象的时候。就创建一个引用计数,当这个对象不再须要时。也就是说。这个对象的引用计数变为0时,它就被垃圾回收。

    添加引用计数

    当对象被创建并将其引用赋值给变量时。该对象的引用计数就被设置为1
    举个栗子:

    x = 3.14 # 创建一个浮点型对象,并将引用赋值给x,引用计数为1
    y = x # 为x指向的浮点型对象新建一个新的别名。引用计数添加为2

    另一些其它方法也能添加对象的引用计数,比方将该对象作为參数传入函数,或者将对象添加到容器对象其中。

    #对象被创建
    x = 3.14
    #另外的别名被创建
    y = x
    #作为參数传递给函数
    foobar(x)
    #成为容器对象的一个对象
    list1=[123, x, 'xyz']

    降低引用计数

    当对象的引用被销毁时。引用计数会降低。比較常见的就是变量离开其作用范围时。

    比方函数执行结束时。全部的局部变量都被自己主动销毁,对象的引用计数就随之降低。

    在以下的情况下,一个对象的引用计数会降低:

    • 一个本地对象引用离开了其作用范围
    • 对象的别名被销毁
    del x 
    • 对象的一个别名被赋值给其它对象的引用
    x = 123
    • 从一个窗体对象中移除
    list1.remove(x)
    • 窗体对象本身被销毁
    del list1

    del语句

    del 语句会删除对象的一个引用,当del所删除的对象的引用计数降低为0以后。该对象就会被垃圾收集器回收

  • 相关阅读:
    sql中触发器的使用
    sql中优化查询
    sql中case when语句的使用
    CSRF学习小结
    javascript正则表达式笔记
    elementUI单选框获取值
    elementUI内置过渡(折叠)
    elementUI内置缩放过渡(缩放)
    elementUi内置过渡动画(淡入)
    创建koa2项目
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7297984.html
Copyright © 2011-2022 走看看