首页 > 编程语言 > 详细

Python基础知识

时间:2017-07-26 23:05:47      阅读:233      评论:0      收藏:0      [点我收藏+]

 with语句:如果with语句或语句块中发生异常,会调用默认的异常处理器处理,但文件还是会正常关闭

  这看起来充满魔法,但不仅仅是魔法,Python对with的处理还很聪明。基本思想是with所求值的对象必须有一个__enter__()方法,一个__exit__()方法。紧跟with后面的语句被求值后,返回对象的__enter__()方法被调用,这个方法的返回值将被赋值给as后面的变量。当with后面的代码块全部被执行完之后,将调用前面返回对象的__exit__()方法。下面有例子介绍with具体运行过程:

# 这是with的具体运行过程
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__()

 python assert(断言):

  assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假。可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触发异常

assert  表达式
assert  表达式,表达式     (多个表达式)
assert  表达式,‘错误信息’   (添加错误信息参数)
# 下面有一个求质数的例子返回True或False:
def isPrime(n):
    assert n >= 2, n必须大于等于2
    from math import sqrt
    for i in range(2, int(sqrt(n))+1):
        if n % i == 0:
            return False
    return True

print(isPrime(5))   #  传值5>2为质数
print(isPrime(4))   #  传值4>2不为质数
print(isPrime(1))   #  传值1<2

运行结果:
True   
False
Traceback (most recent call last):
  File "E:/My_yanjiu/凤凰财经.py", line 13, in <module>
    print(isPrime(1))
  File "E:/My_yanjiu/凤凰财经.py", line 3, in isPrime
    assert n >= 2, n必须大于等于2
AssertionError: n必须大于等于2    # assert 断言错误信息

 try...except...finally语句:

  当try语句执行时发生异常,回到try语句层,寻找后面是否有except语句。找到except语句后,会调用这个自定义的异常处理器。except将异常处理完毕后,程序继续往下执行。finally语句表示,无论异常发生与否,finally中的语句都要执行。

trypass
exceptpass
finally:
    pass

 copy()与deepcopy()的区别:

  copy拷贝一个对象,但是对象的属性还是引用原来的,deepcopy拷贝一个对象,把对象里面的属性也做了拷贝,deepcopy之后完全是另一个对象了。下面有代码解释,至于为什么列表套列表才明显这个我还没弄明白以后做补充。

import copy

a = [a, b, c, [1, 2]]
b = copy.copy(a)
c = copy.deepcopy(a)
a[3].append(d)

print(a)
print(b)
print(c)
b[3].append(f)
print(a)
print(b)
print(c)

运行结果:
[a, b, c, [1, 2, d]]
[a, b, c, [1, 2, d]]
[a, b, c, [1, 2]]
[a, b, c, [1, 2, d, f]]
[a, b, c, [1, 2, d, f]]
[a, b, c, [1, 2]]

 Python装饰器:

  装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用。

 

Python基础知识

原文:http://www.cnblogs.com/Egbertbaron/p/7241892.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!