强制关键字参数 你希望函数的某些参数强制使用关键字参数传递 将强制关键字参数放到某个参数或者单个后面就能达到这种效果。
def recv(maxsize, *, block): 'Receives a message' pass #在*后面放置参数block,这个参数就为关键字参数 #这时只能输入block=True才行 recv(1024, True) # TypeError recv(1024, block=True) # Ok给函数参数注解
def add(x:int, y:int) -> int: return x + ypython解释器不会对这些注解添加任何的语义。
默认值参数 首先,默认参数的值仅仅在函数定义的时候赋值一次。
>>> x = 42 >>> def spam(a, b=x): ... print(a, b) ... >>> spam(1) 1 42 >>> x = 23 # Has no effect >>> spam(1) 1 42 #并没有改变 >>>其次,默认参数的值应该是不可变的对象,比如None、True、False、数字或字符串。 特别的,千万不要像下面这样写代码:
def spam(a, b=[]): # NO! ...匿名函数|lambda
>>> add = lambda x, y: x + y #【add=】储存返回值,单独使用时也相当与函数名 #【lambda x, y:】代表有哪些参数 #【x + y】内部的运算公式 >>> add(2,3) 5 >>> add('hello', 'world') 'helloworld' >>>