Python常用内置函数和操作符

操作符

一、 * 号用法

1. 乘号

2. 形参——单个星号代表这个位置接收任意多个非关键字参数,转化成元组方式。

def __init__(self, *args):  # 作为形参传入,转换成`元组`的形式
	super(Sequential. self).__init__()
	if len(args) == 1 and isinstance(args[0], OrderDict):
		for key, module in args[0].items():
			self.add_module(key, module)
	else:
		for idx, module in enumerate(args):
			self.add_module(str(idx), module) 

在这里插入图片描述

3. 实参——如果*号加在了是实参上,代表的是将输入迭代器拆成一个个元素。

从nn.Sequential的定义来看,输入要么是orderdict,要么是一系列的模型遇到list,必须用*号进行转化,否则会报错 “TypeError: list is not a Module subclass”
Eg:

	   cfg = [64,64,'M',128,128,'M',256,256,256,'M',512,512,512,'M',512,512,512,'M']
       layers= []
       for v in cfg:
           if v == 'M':
               layers += [nn.MaxPool2d(kernel_size=2,stride = 2)]
           else:
               conv2d = nn.Conv2d(in_channels,v,kernel_size=3,padding = 1)
               if batch_norm:
                   layers += [conv2d,nn.Batchnorm2d(v),nn.ReLU(inplace=True)]
               else:
                   layers += [conv2d,nn.ReLU(inplace=True)]
               in_channels = v
       # use the vgg layers to get the feature
       self.features = nn.Sequential(*layers)
'''
这里 nn.Sequential 输入的是一个列表,所以要用 * 进行转化。
也可以写成:
nn.Sequential(OrderedDict([           #orderdict按照建造时候的顺序进行存储
          ('conv1', nn.Conv2d(64,64,3)),
          ('relu1', nn.ReLU()),
          ('maxpool1', nn.MaxPool2d(2,2)),
          ('conv2', nn.Conv2d(64,128,3)),
          ('relu2', nn.ReLU()),
          ('maxpool2', nn.MaxPool2d(2,2))
        ]))
'''

二、** 号用法

1. 幂指数表示符

2. 形参–代表这个位置接收任意多个带有关键字参数,转化成字典方式。

如果同时使用 *args 和 **kwargs 时,必须 *args 参数列要在 **kwargs 之前
def fun(*args, **kwargs):
	print('args=', args)
	print('kwargs=', kwargs)

fun(1, 2, 3, 4, A='a', B='b', C='c', D='d')
'''
输出结果:
args= (1, 2, 3, 4)
kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'}
'''

内置函数

1. isinstance() 函数

函数作用:

判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 与 type() 区别:
type() 不会认为子类是一种父类类型,不考虑继承关系
isinstance() 会认为子类是一种父类类型,考虑继承关系
如果要判断两个类型是否相同推荐使用 isinstance()

class A:
    pass
 
class B(A):
    pass
 
isinstance(A(), A)    # returns True
type(A()) == A        # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False
  • 本人会不定时更新当前博文,因为这也是一个积累的工程,如果有不会的也可以问我,然后我会加进去的。

2. lambda() 函数

2.1 函数作用

  1. 短小的回调函数。
  2. 需要一个函数,但是又不想费神去命名一个函数的场合下使用。

参考资料

  1. https://www.runoob.com/python/python-func-isinstance.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值