Python为什么是解释型语言
因为Python语言是顺序执行的,没有静态检查,没有编译链接过程,可以交互式运行。C语言类型不对是编译抛的错误,Python类型不对是运行抛的错误。也就是python是一条条(一行行)运行的,C需要整个编译之后才能运行。
面向对象和面向过程的区别
面向对象是把构成问题的事务分解成各个对象,建立对象来描述某个事务在解决问题的步骤中的行为;面向过程是分析出解决问题所需要的步骤,然后用一些函数把这些步骤一步步实现,使用的时候依次调用函数就行了。
Python的优势和缺点
**优势:**解释型语言,语法简单易懂,可读性强,有很多库可以用,可以让我们站在巨人的肩膀上简单的实现想要的功能,可扩展,和其他编程语言或其他软件有可连接的接口,免费开源、可移植,自动内存管理,让程序员可以专注于代码的实现。
**缺点:**Python的可解释特征使其运行速度变慢,动态语言的特点可能会增加运行时错误。
装饰器介绍
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,它接受一个函数作为参数,并返回一个函数,利用python的@语法来放置。
功能:1.引入日志;2.函数执行时间统计;3.执行函数前预备处理;4.执行函数后清理功能;5.权限校验;6.缓存。
Python 装饰器@staticmethod、@classmethod、@property的区别和使用
@classmethod:类方法,类方法是给类用的,类在使用时会将类本身当做参数传给类方法的第一个参数,python为我们内置了函数classmethod来把类中的函数定义成类方法。
@staticmethod:静态方法,该方法不强制要求传递参数。
用上面两个装饰器就可以不用在实用类前对类进行实例化了。
@property:将一个实例方法提升为属性,便于访问。我们可以使用@property装饰器来创建只读属性,@property装饰器会将方法转换为相同名称的只读属性,可以与所定义的属性配合使用,这样可以防止属性被修改。
写一个装饰器
import functools
import time
def print_run_time(func):
@functools.wraps(func) def wrapper(*args,**kw):
local_time=time.time()
func(*args,**kw)
t=time.time()-local_time
print(t)
return wrapper
@print_run_time
def test(x):
for i in range(1000):
print(x,end='')
print('\n')
return x
test(1)
functools.warp方法是把被wrapped的函数的属性传递给wrapper的函数,不写的话不支持参数。
|