对python的理解2000字_关于python一切皆对象的理解

关于python一切皆对象的理解

1. 关于python传递参数的方式(值传递和引用传递):

python是一些皆对象的,关于传参,就是python的对象传进去,就是对象引用传递,但是python有可变类型和不可变类型,这是在其他语言没有的概念,当传递对象是不可变类型,就像其他语言的值传递,当对象是可变类型,就相当于其他语言的引用传递

2. python装饰器

1.装饰器的本质就是闭包,只要编程语言中函数可以当值来传递,都可以实现闭包(函数是一等公民),然而python一切皆对象,自然可以实现闭包,装饰器有有和无参装饰器

2.无参:

def dec(func):

def inner(*args,**kwargs):

res = func(*args,**kwargs)

return res

return inner

3.运用场景,登录装饰器,我要你根据用户身份的不同,最后打印不同的字

def out(X):X你穿的参数

def dec(func):

def inner(*args,**kwargs):

if X = '学生'

res = func(*args,**kwargs)

print(‘去写作业’)

return res

if X = ‘老师’:

res = func(*args,**kwargs)

print(‘去上课’)

return res

return inner

return dec

使用:

@out(X)

def login():

pass

3.猴子补丁

核心思想 -------- 模块运行时替换的功能!!!

猴子补丁运用的是python的一切皆对象

体会1:class Dog():

def eat(self):

print('我在吃骨头')

class Cat():

def eat(self):

print('我在吃鱼')

cat = Cat()

cat.eat = Dog.eat

以后调用cat.eat()的时候,猫被换成了吃骨头

体会2:很多代码用到 import json,后来发现ujson性能更高,如果觉得把每个文件的import json 改成 import ujson as json成本较高,或者说想测试一下用ujson替换json是否符合预期,只需要在入口加上:

import json

import ujson

def monkey_patch_json():

json.__name__ = 'ujson'

json.dumps = ujson.dumps

json.loads = ujson.loads

monkey_patch_json()

体会3:

from gevent import monkey

monkey.patch_all() ;打补丁

import gevent

import time

def play():

print('1号玩')

time.sleep(2)

print('2号在玩')

def eat():

print('1号在吃')

time.sleep(2)

print('2在吃')

a = gevent.spawn(eat)

b = gevent.spawn(play)

gevent.joinall([a,b])

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值