• python 基础学习五:关键字


    今天依旧在啃:《笨方法学python》,其中习题37是复习各种关键字。我本想百度一下记一下就ok了,但是百度出来第一个就Hongten的博客。我才意识到我也有博客,我应该学习他,把这些积累的东西都放到博客中。

    主要参考:http://www.cnblogs.com/hongten/p/hongten_python_keywords.html#undefined
    python2.7关键字详解:

    and del from not while as elif
    global or with assert else if pass
    yield break except import print class exec
    in raise continue finally is return def
    for lambda try

    一共:31个。注意:如果要现在自己电脑中运行我写的这些代码,需要在第一行加上

    #coding:utf-8   因为我的输出中有中文
    

    1.and  :表示逻辑‘与’

    2.del  :用于list列表操作,删除一个或者连续几个元素。

    3.from :导入相应的模块,用import或者from...import

    4.not :表示逻辑‘非’

    5.while :while循环,允许重复执行一块语句,一般无限循环的情况下用它。示例如下:

    while Ture:
        if a > b:
            add()#调用函数求和
        else:
            print "输入错误!重新输入!"
    

    6.as :
    as单独没有意思,是这样使用:with....as用来代替传统的try...finally语法的。
    基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。
    紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面 返回对象的__exit__()方法。示例如下:

    class Sample:
        def __enter__(self):
            print "In __enter__()"
            return "Foo"
     
        def __exit__(self, type, value, trace):
            print "In __exit__()"
     
     
    def get_sample():
        return Sample()
     
     
    with get_sample() as sample:
        print "sample:", sample
    

    输出结果:

    In __enter__()
    sample: Foo
    In __exit__()
    
    第一步: __enter__()方法被执行
    
    第二步: __enter__()方法返回的值 - 这个例子中是"Foo",赋值给变量'sample'
    
    第三步:执行代码块,打印变量"sample"的值为 "Foo"
    
    第四步: __exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到Sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。
    
    你也可以参考这里:http://zhoutall.com/archives/325
    

    7.elif  :和if配合使用的,if语句中的一个分支用elif表示。

    8.global :定义全局变量,在函数内定义,示例如下:

    #coding:utf-8
    #################
    #习题37:复习各种符号
    #################
    #前言
    #
    
    #熟悉global
    
    #定义全局变量,变量名全部大写
    NAME = "txd"
    
    #得到NAME值
    def get_NAME():
        return NAME
        
    #重新设定NAME值
    def set_NAME(name_value):
        global NAME
        NAME = name_value
        
    print u"输出全局变量NAME的值:",get_NAME()
    new_name = "521txd"
    set_NAME(new_name)#为全局变量重新赋值
    print u"输出赋值完的全局变量NMAE的值:",get_NAME() 
    

    输出结果:

    输出全局变量NAME的值: txd
    输出赋值完的全局变量NMAE的值: 521txd
    

    9.or   :表示逻辑“或”

    10.with :和as一起用,使用的方法请看as,在上面!

    11.assert:表示断言(断言一个条件就是真的,如果断言出错则抛出异常)用于声明某个条件为真,如果该条件不是真的,则抛出异常:AssertionError

    12.else :看下面if的解释

    13.if :if语句用于选择分支,依据条件选择执行那个语句块。(这里多说一句:if语句中最好不要嵌套if语句,你可以把嵌套的if语句写在另一个函数中)

    if a > b:
        print "a > b
    elif a < b:
        print "a < b"
    else:
        print "a = b"
    

    14.pass :pass的意思就是什么都不做。
    用途及理解:当我们写一个软件的框架的时候,具体方法,类啊之类的都不写,等着后续工作再做。那么就在方法和类里面加上pass,那样编译起来就不会报错了!就像这样:

    #理解pass的用途
    def test_pass():pass  #如果不加pass,抛出错误:IndentationError: expected an indented block
    
    test_pass()
    

    15.yield :用起来和return很像,但它返回的是一个生成器。我这样说不是很生动。你可以去看看这个关于Python中的yield(最后写的那个斐波那契,我觉得他就是大神),或者请看下面的代码:

    #理解yield
    def test_yield(n):
        for i in range(n):
            yield i*2#每次的运算结果都返回
                  
    for j in test_yield(8):
        print j,":",
    print u"结束理解yield"   
    #利用yield输出斐波那契数列
    ##########
    #看这里,太厉害了,不是我写的。。。。
    ##########
    def fab(max):
        a,b = 0,1
        while a < max:
            yield a
            a, b = b, a+b
    print u"斐波那契数列!"
    for i in fab(20):
        print i,",",
    
    输出结果:
    
    0 : 2 : 4 : 6 : 8 : 10 : 12 : 14 : 结束理解yield
    斐波那契数列!
    0 , 1 , 1 , 2 , 3 , 5 , 8 , 13 ,
    

    16.break :作用是终止循环,程序走到break的地方就是循环结束的时候。(有点强行终止的意思)
    注意:如果从for或while循环中终止(break)之后 ,else语句不执行。

    17.except :和try一起使用,用来捕获异常。

    try:  
       block  
    except [exception,[data…]]:  
       block  
     
    try:  
    block  
    except [exception,[data...]]:  
       block  
    else:  
       block
    

    该种 Python异常处理语法的规则是:
    ◆执行try下的语句,如果引发异常,则执行过程会跳到第一个except语句。
    ◆如果第一个except中定义的异常与引发的异常匹配,则执行该except中的语句。
    ◆如果引发的异常不匹配第一个except,则会搜索第二个 except,允许编写的except数量没有限制。
    ◆如果所有的except都不匹配,则异常会传递到下一个调用本代码的最高层try代码中。
    ◆ 如果没有发生异常,则执行else块代码。

    第一种格式:

    #理解except
    try:
        num = 5/0
    except:
        print u"计算出错"
    

    第二种:

    try:  
       f = open("file.txt","r")  #如果该文件不存在
    except IOError, e:  #捕获IO异常
       print u"IO错误!"
       print e                #输出错误信息,这里e是错误信息
    输出结果:
    
    计算出错
    IO错误!
    [Errno 2] No such file or directory: 'file.txt'
    

    18.import :用来导入模块,有时这样用from....import

    19.print :输出

    20.class :定义类

    21exec :我还没弄懂exec语句用来执行储存在字符串或者文件中的python语句。可以生成一个包含python代码的字符串,然后使用exec语句执行这些语句。

    22.in :查找列表中是否包含某个元素,或者字符串a是否包含字符串b。需要注意的是:不可以查看list1是否包含list2。代码如下:

    #理解in
    first_list = [1, 2]
    second_list = [1, 2, 3]
    element = 1
    red = 'red'
    red_clothes = "red clothes"
    
    print red in red_clothes #true
    print first_list in second_list  #false
    print element in first_list      #true
    
    输出结果为:
    
    True
    False
    True
    

    23.raise :raise可以显示地引发异常。一旦执行raise语句,后面的代码就不执行了

    #理解raise
    try:
        raise IOError #这里可以raise一个自定义的错误类。那样就叫做自定义异常了
        print u"是否执行?" #不执行
    except IOError:
        print "IOError test raise"
    
    
    输出结果如下:
    
    IOError test raise
    

    24.continue:跳过continue后面循环块中的语句,继续进行下一轮循环

    25.finally :看到finally语句,必然执行finally语句的代码块。

    python异常总结,请看下面的代码:

    One:

    #打开一个文件,但有可能找不到
    try:
        f = open('xxx')
        do something
    except:
        do something
    finally:
        f.close()
    

    Two:

    try:
        f = open('xxx')
    except:
        print 'fail to open'
        exit(-1)
    try:
        do something
    except:
        do something
    finally:
        f.close()
    
    我们为什么要写finally,是因为防止程序抛出异常最后不能关闭文件,但是需要关闭文件有一个前提就是文件已经打开了。
    在第一段错误代码中,如果异常发生在f=open(‘xxx’)的时候,比如文件不存在,立马就可以知道执行f.close()是没有意义的。改正后的解决方案就是第二段代码。
    

    26.is :Python中的对象包含三要素:id、type、value

    其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值
    
    is判断的是a对象是否就是b对象,***是通过id来判断的***
    ==判断的是a对象的值是否和b对象的值相等,是通过value来判断的
    
    
    #理解is
    e = 1
    es = 1.0
    ess = 1
    print u"""is就是比对id的值,看是否指向同一对象,
    这里需要注意的是:同一对象,不是值相等就是同一对象。"""
    print id(e)
    print id(es)
    print id(ess)
    

    27.return:用于跳出函数,也可以在跳出的同时返回一个值。

    28.def :用于定义方法

    29.for :for....in 一起使用:它在一序列的对象上递归,就是遍历队列中的每个项目

    30.lambda:即匿名函数,不用想给函数起什么名字。提升了代码的简洁程度。如:

    #理解lambda
    g = lambda :"lambda test."
    print g()
    num1 = lambda x, y=1:x + y
    print num1(1)      #多个变量的时候,可以不给有默认值的变量传值
    print num1(10,10)  #值得注意的是,如果y没有默认值而且不给它传值的话报错!
    
    输出结果:
    
    lambda test.
    2
    20
    

    31.try :出现在异常处理中,使用格式为:try...except,try中放想要执行的语句,except捕获异常

    代码见,25.

  • 相关阅读:
    js调用手机震动
    模拟器 Android Studio
    不修改代码,让调用方法 替换到另外一个方法
    springboot 获取请求 / 响应 接收和设置请求头 、请求码的方法
    mysql binlog 实现数据库同步先占位 有空研究下
    Airtest无线连接android手机
    springboot + spring cloudeureka
    更新一条数据多个字段的方法
    PyAutoGUI 操作C端 识别图片 点击(有空就看一下) 可以替代 Autoit
    playwright入门
  • 原文地址:https://www.cnblogs.com/txdblog/p/15330545.html
Copyright © 2020-2023  润新知