python语言的变量随时_Python参数注解

#### 1.函数定义的弊端

- python是动态语言,变量随时可以被赋值,且能赋值为不同的类型,动态语言很灵活,但是这种特性也是弊端;

- **难发现**:由于不做任何类型检查,直到运行期问题才显现出来,或者线上运行时才能暴露出问 题 ;

- **难使用**:函数的使用者看到函数的时候,并不知道你的函数的设计,并不知道应该传入什么类 型的数据;

- **解决办法**:可以通过增加文档Documentation String(帮助文档)和使用函数参数注解两种办法来解决这个弊端;

#### 2.什么是参数注解

```

def show(x: int, y: int) -> int:

'''

:param x:

:param y:

:return:

'''

return x * y

print(show(10,20)) # 200

```

* 函数中间使用 ''' '''包裹起来的注释说明就是参数注解;

#### 3.使用参数注解的好处

* 参数注解可以避免动态语音的弊端;

* 可以对函数的参数进行类型注解和对函数的返回值进行类型注解;

* 参数注解只对函数参数做一个辅助的说明,并不对函数参数进行类型检查;

#### 4.Functools模块的使用

```

# 示例1

import inspect

def add(x:int, y:int, *args,**kwargs) -> int:

return x + y

sig = inspect.signature(add)

print(sig) # (x: int, y: int, *args, **kwargs) -> int

print(sig.parameters) # OrderedDict([('x', ), ('y', ), ('args', ), ('kwargs', )])

# 示例2: partial偏函数

from functools import partial

def add(x, y):

return x + y

partial_add = partial(add, x=1)

result = partial_add(y=2)

print(result) #输出: 3

# lru_cache

from functools import lru_cache

import time

@lru_cache()

def add(x, y):

time.sleep(10)

return x + y

print(add(1,2))

print(add(2,3))

print(add(2,3))

print(add(2,3))

```

* 指那些作用于函数或者返回其它函数的函数,通常只要是可以被当做函数调用的对象就是这个模块的目标;

* lru_cache装饰器的作用就是把计算结果保存在内存中,下一次有同一个参数传入的话就不会再次进行计算;

参考:https://www.9xkd.com/user/plan-view.html?id=4267794533

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69908432/viewspace-2639606/,如需转载,请注明出处,否则将追究法律责任。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值