zoukankan      html  css  js  c++  java
  • python之路:进阶篇

    一、作用域
    在Python 2.0及之前的版本中,Python只支持3种作用域,即局部作用域,全局作用域,内置作用域;在Python 2.2中,Python正式引入了一种新的作用域 --- 嵌套作用域;在Python 2.1中,嵌套作用域可以作为一个选项被开启;嵌套作用域的引入,本质上为Python实现了对闭包的支持,关于闭包的知识,网上有很多解释,这里就不详细展开了。相应地,变量查找顺序由之前的LGB变成LEGB(L:Local,E:Enclosing,G:Global,B:Built-in)。

    在Python中,并不是任何代码块都能引入新的作用域,这与C有很大的不同:

    #include<stdio.h>
    int main() {
        if(2 > 0) {
            int i = 0;
        }
        printf("i = %d", i);
        return 0;
    }

     在这段代码中,if子句引入了一个局部作用域,变量i就存在于这个局部作用域中,但对外不可见,因此,接下来在printf函数中对变量i的引用会引发编译错误。

    if True:
        i = 0
    print i

     在这段代码中,if子句并没有引入一个局部作用域,变量i仍然处在全局作用域中,因此,变量i对于接下来的print语句是可见的。

    实际上,在Python中,只有模块,类以及函数才会引入新的作用域,其它的代码块是不会引入新的作用域的。
      在Python中,名字绑定在所属作用域中引入新的变量,同时绑定到一个对象。名字绑定发生在以下几种情况之下:
        1.参数声明:参数声明在函数的局部作用域中引入新的变量;
        2.赋值操作:对一个变量进行初次赋值会在当前作用域中引入新的变量,后续赋值操作则会重新绑定该变量;
        3.类和函数定义:类和函数定义将类名和函数名作为变量引入当前作用域,类体和函数体将形成另外一个作用域;
        4.import语句:import语句在当前作用域中引入新的变量,一般是在全局作用域;
        5.for语句:for语句在当前作用域中引入新的变量(循环变量);
        6.except语句:except语句在当前作用域中引入新的变量(异常对象)。
    只要在内存里存在就可以使用

    二、三元运算

    Python对于类似C语言的三元条件表达式condition ? true_part : false_part,虽然Python没有三目运算符(?:),但也有类似的替代方案,那就是true_part if condition else false_part。

    >>> 1 if True else 0  
    1  
    >>> 1 if False else 0  
    0  
    >>> "Fire" if True else "Water"  
    'Fire'  
    >>> "Fire" if False else "Water"  
    'Water'

     使用and-or技巧,利用条件判断的优先特性来实现三元条件判断,比如P∧Q,在Python中如果P为假,那么Python将不会继续执行Q,而直接判定整个表达式为假(P值),当然如果P为真,那就还要继续执行Q来决定整个表达式值;同样的P∨Q,如果P为真,那么就不会继续执行Q了…

    简化if判断:
    name = 'ales'
    #######################################################
    if 1 == 1:
        name 'sb'
    else:
        name '2b'
    可以写成:
    name = "sb" if 1 == 1 else "2b"    
    name = 值1 if 条件 else 值2
    #如果条件成立,输出值1,否则输出值2
    >>> name = 'dog'
    >>> name = "boy" if 1 == 1 else "gol"
    >>> print name
    boy
    三、进制
        二进制,01
        八进制,01234567
        十进制,0123456789
        十六进制,0123456789ABCDE每种语言都有一个常用的进制,python常用的是十进制
    四、python基础
    通过type可以查看对象类型,dir(类型名) 查看类中提供的所有功能
    help(类型名) 查看类中所有详细的功能名 help(类型名.功能名)查看类中某功能的详细

    python的一切事物都是对象,对象基于类创建

    >>> type(list)        #查看对象属于哪个类
    <type 'type'>
    ##############################################################
    >>> dir(list)            #查看类中有那些功能
    ['__add__''__class__''__contains__''__delattr__''__delitem__''__delsli
    ce__''__doc__''__eq__''__format__''__ge__''__getattribute__''__getit
    em__''__getslice__''__gt__''__hash__''__iadd__''__imul__''__init__',
     '__iter__''__le__''__len__''__lt__''__mul__''__ne__''__new__''__r
    educe__''__reduce_ex__''__repr__''__reversed__''__rmul__''__setattr__'
    '__setitem__''__setslice__''__sizeof__''__str__''__subclasshook__''a
    ppend''count''extend''index''insert''pop''remove''reverse''sort'
    ]

      #带双下划线的叫内置方法,可能有多种执行方法,最少一种。不带双下划线的叫非内置

    非内置执行方法
    list.append()

    内置方法执行方式:

    >>> n1 = -9
    >>> abs(n1)
    9
    >>> n1.__abs__()
    9
    >>> help(list)   #查看类中所有详细的功能
    >>> help(list.append)    #查看类中某功能的详细信息
    Help on method_descriptor:
    append(...)
        L.append(object) -- append object to end
    Python列表函数&方法

    python包含以下函数:

    序号函数
    1cmp(list1, list2)
    比较两个列表的元素
    2len(list)
    列表元素个数
    3max(list)
    返回列表元素最大值
    4min(list)
    返回列表元素最小值
    5list(seq)
    将元组转换为列表

    python包含以下方法:

    序号方法
    1list.append(obj)
    在列表末尾添加新的对象
    2list.count(obj)
    统计某个元素在列表中出现的次数
    3list.extend(seq)
    在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    4list.index(obj)
    从列表中找出某个值第一个匹配项的索引位置
    5list.insert(index, obj)
    将对象插入列表
    6list.pop(obj=list[-1])
    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    7list.remove(obj)
    移除列表中某个值的第一个匹配项
    8list.reverse()
    反向列表中元素
    9list.sort([func])
    对原列表进行排序
    Python支持四种不同的数值类型:

    整型(int)-通常被称为是整型或整数,是正或负整数,不带小数点。

    长整型(long integers)~无限大小的整数,整数最后是一个大写或小写的L

    浮点型(floating point real values)=浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)

    复数(complex numbers)- 复数的虚部以字母J或j结尾,如:2+3j

    intlongfloatcomplex
    1051924361L0.03.14j
    100-0x19323L15.2045.j
    -7860122L-21.99.322e-36j
    0800xDEFABCECBDAECBFBAEl32.3+e18.876j
    -0490535633629843L-90.-.6545+0J
    -0x260-052318172735L-32.54e1003e+26J
    0x69-4721885298529L70.2-E124.53e-7j

    长整型也可以使用小写“L”,但是还是建议您使用大写“L”,避免与数字“1”混淆。python使用“L”来显示长整型。

    python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者comples(a, b)表示,复数的实部a和虚部b都是浮点型

    python数字类型转换
    int(x [,base ])         将x转换为一个整数  long(x [,base ])        将x转换为一个长整数  float(x )               将x转换到一个浮点数  
    complex(real [,imag ])  创建一个复数  
    str(x )                 将对象 x 转换为字符串  
    repr(x )                将对象 x 转换为表达式字符串  eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
    tuple(s )               将序列 s 转换为一个元组  
    list(s )                将序列 s 转换为一个列表  
    chr(x )                 将一个整数转换为一个字符  
    unichr(x )              将一个整数转换为Unicode字符  
    ord(x )                 将一个字符转换为它的整数值  
    hex(x )                 将一个整数转换为一个十六进制字符串  
    oct(x )                 将一个整数转换为一个八进制字符串
    python数学函数

    函数返回值 ( 描述 )
    abs(x)返回数字的绝对值,如abs(-10) 返回 10
    ceil(x)返回数字的上入整数,如math.ceil(4.1) 返回 5
    cmp(x, y)如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1
    exp(x)返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045
    fabs(x)返回数字的绝对值,如math.fabs(-10) 返回10.0
    floor(x)返回数字的下舍整数,如math.floor(4.9)返回 4
    log(x)如math.log(math.e)返回1.0,math.log(100,10)返回2.0
    log10(x)返回以10为基数的x的对数,如math.log10(100)返回 2.0
    max(x1, x2,...)返回给定参数的最大值,参数可以为序列。
    min(x1, x2,...)返回给定参数的最小值,参数可以为序列。
    modf(x)返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。
    pow(x, y)x**y 运算后的值。
    round(x [,n])返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。
    sqrt(x)返回数字x的平方根,数字可以为负数,返回类型为实数,如math.sqrt(4)返回 2+0j

    Python随机函数

    随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性,

    python包含以下常用随机数函数:

    函数描述
    choice(seq)从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。
    randrange ([start,] stop [,step])从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1
    random()随机生成下一个实数,它在[0,1)范围内。
    seed([x])改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。
    shuffle(lst)将序列的所有元素随机排序
    uniform(x, y)随机生成下一个实数,它在[x,y]范围内。
    Python三角函数

    python包括以下三角函数:

    函数描述
    acos(x)返回x的反余弦弧度值。
    asin(x)返回x的反正弦弧度值。
    atan(x)返回x的反正切弧度值。
    atan2(y, x)返回给定的 X 及 Y 坐标值的反正切值。
    cos(x)返回x的弧度的余弦值。
    hypot(x, y)返回欧几里德范数 sqrt(x*x + y*y)。
    sin(x)返回的x弧度的正弦值。
    tan(x)返回x弧度的正切值。
    degrees(x)将弧度转换为角度,如degrees(math.pi/2) , 返回90.0
    radians(x)将角度转换为弧度
     Python数学常量

    常量描述
    pi数学常量 pi(圆周率,一般以π来表示)
    e数学常量 e,e即自然常数(自然常数)。

    Python 字符串

     符   号描述
             %c 格式化字符及其ASCII码
          %s 格式化字符串
          %d 格式化整数
          %u 格式化无符号整型
          %o 格式化无符号八进制数
          %x 格式化无符号十六进制数
          %X 格式化无符号十六进制数(大写)
              %f 格式化浮点数字,可指定小数点后的精度
              %e 用科学计数法格式化浮点数
             %E 作用同%e,用科学计数法格式化浮点数
          %g %f和%e的简写
             %G %f 和 %E 的简写
          %p 用十六进制数格式化变量的地址
    元组元算符

    与字符串一样,元组之间可以使用 + 号和 * 号进行运算,这就意味着他们可以组合和赋值,运算后生成一个新的元组。

    Python 表达式结果描述
    len((1, 2, 3))3计算元素个数
    (1, 2, 3) + (4, 5, 6)(1, 2, 3, 4, 5, 6)连接
    ['Hi!'] * 4['Hi!', 'Hi!', 'Hi!', 'Hi!']复制
    3 in (1, 2, 3)True元素是否存在
    for x in (1, 2, 3): print x,1 2 3迭代

    元组的元素不能修改,元组的元素的元素可以修改

    元组索引、截取

    Python 表达式结果描述
    L[2]'Hello'读取第三个元素
    L[-2]'Hello'反向读取;读取倒数第二个元素
    L[1:]('Hello', 'world')截取元素
    元组内置函数

    python元组包含了以下内置函数

    序号方法及描述
    1cmp(tuple1, tuple2)
    比较两个元组元素。
    2len(tuple)
    计算元组元素个数。
    3max(tuple)
    返回元组中元素最大值。
    4min(tuple)
    返回元组中元素最小值。
    5tuple(seq)
    将列表转换为元组。
    字典内置函数&方法

    python字典包含了以下内置函数:

    序号函数及描述
    1cmp(dict1, dict2)
    比较两个字典元素。
    2len(dict)
    计算字典元素个数,即键的总数。
    3str(dict)
    输出字典可打印的字符串表示。
    4type(variable)
    返回输入的变量类型,如果变量是字典就返回字典类型。

    python字典包含了以下内置函数:

    序号函数及描述
    1radiansdict.clear()
    删除字典内所有元素
    2radiansdict.copy()
    返回一个字典的浅复制
    3radiansdict.fromkeys()
    创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    4radiansdict.get(key, default=None)
    返回指定键的值,如果值不在字典中返回default值
    5radiansdict.has_key(key)
    如果键在字典dict里返回true,否则返回false
    6radiansdict.items()
    以列表返回可遍历的(键, 值) 元组数组
    7radiansdict.keys()
    以列表返回一个字典所有的键
    8radiansdict.setdefault(key, default=None)
    和get()类似, 但如果键不已经存在于字典中,将会添加键并将值设为default
    9radiansdict.update(dict2)
    把字典dict2的键/值对更新到dict里
    10radiansdict.values()
    以列表返回字典中的所有值
  • 相关阅读:
    简单的自我介绍
    学习总结(北航助教陈彦吉)
    2019春季第十二周助教总结
    2019春季第十一周助教总结
    第十一周作业
    2019春季第十周助教总结
    2019春季第九周助教总结
    第九周作业
    2019春季第八周助教总结
    第八周作业
  • 原文地址:https://www.cnblogs.com/wulaoer/p/5029784.html
Copyright © 2011-2022 走看看