python怎么使用?,PYTHON怎么用
@ Python中的函数装饰器:
Python使用@作为函数的修饰符,主要用于修饰块或类中的函数。出现在函数名上方的行中。
例如,如果你想测试一个函数的运行时间,而被测试的函数并没有写在函数内部,你可以使用下面的方法。
第一种类型:@函数名
import timedef times _ long(fn):def get _ time(* args):start=time . time()num=args[0]print(这是start!,num)fn(* args)end=time . time()print( this is end!,end-start)return fn(2 * num)return get _ time @ times _ longdef sum_a(m):time . sleep(m)print(这是sum _ a!,m)sum_a(4)# output #这是start!4#这是sum_a!4#这就是结局!4.000227212905884#这是sum_a!8解释:
你可以看到先执行了测时间的函数,然后在测时间的函数内部调用了这个函数,在测时间的函数完成之后再执行本该执行的函数。Return fn(2*num)表示返回后需要执行sum_a。如果不是同名函数,那么sum_a不会被执行。
第二种
@staticmethos:静态函数
Classdemo: def print _ all (self,name):print(name)@ class method def print _ all 2(name):print(name)是一种不依赖于类函数变量属性的函数。
@classmethod:类函数
修饰符对应的函数不需要实例化,不需要self参数,但是第一个参数需要是代表自己类的cls参数,可以用来调用类的属性、方法和实例化对象。
class(object):bar=1 deffunc 1(self):print( foo )@ classmethoddeffunc 2(cls):print( func 2 )print(cls . bar)cls()。
示例:
在python中,双下划线是私有变量,不能从外部直接访问。
类人(对象):def __init__(本人,姓名,年龄):本人。_ _ name=name self。_ _ age=age def get _ age _ fun (self):回归自我。_ _ age def set _ age _ fun (self,value): if not isinstance (value,int): raise value error (Age必须是一个数字!)如果value0或value100:引发valueerror(年龄必须是0-100) self。_ _ _ age=valuedef print _ info(self):print( % s:% s %(self。_ _ name,Self。__age)) p=person (balala ,20)p . __age=17 print(p . _ _ age)# 17 print(p . get _ age _ fun())# 20表面上看,上面的代码“成功地”设置了_ _ age。#内部__age变量已经被Python解释器自动改成_Person_age,而外部代码给p增加了一个新的__age变量,所以调用get_age_fun的输出就是初始值p . set _ age _ fun(35)print(p . get _ age _ fun())# 35 print(p . print _ info())# balala:35当我们稍微修改一下,把私有变量改成单下划线,就变成了全局变量和公共变量。
类人(对象):def __init__(本人,姓名,年龄):本人。__name=name self。_age=age def get_age_fun(self):回归自我。_age def set_age_fun(self,Value): if not isinstance (value,int): raise value error (Age必须是数字!)如果value0或value100:引发valueerror(年龄必须是0-100) self。_ age=valuedef print _ info(self):print( % s:% s %(self。_ _ name,Self。_age)) p=person (balala ,20)p . _age=17 print(p . _ age)# 17 print(p . get _ age _ fun())#这里是17,不是20,因为_ age此时是一个全局变量,更新后的值p . set _ age _ fun(35)print(p . get _ age _ fun())# 35 print(p . print _ info())# balala:35当我们使用@property时,可以将函数作为一个不带括号的属性来访问,比如
类人(对象):def __init__(本人,姓名,年龄):本人__name=name self ._ _ age=age @ property def get _ age _ fun(self):回归自我age @ get _ age _ fun。setter # get _ age _ fun是上面声明的方法def set_age_fun(self,value): if not isinstance(value,int): raise ValueError(年龄必须是数字!)如果值为0或值为100:提高ValueError(年龄必须是0-100)自我. _ _ age=value def print _ info(self):print( % s:% s %(self .__name,self .__age))p=Person(balala ,20)p . _ _ age=17 print(p . _ _ age)# 17 print(p . get _ age _ fun)# 20注意这里不带()第35页注意不能这样调用赋值了p.set_age_fun=35 #这里设定_年龄_乐趣就是声明的函数不带()print(p . get _ age _ fun)# 35 print(p . print _ info())# balala:35参考001 菜鸟
002 cnblog
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。