参数类型与默认值对函数而言, 其参数能够拥有不一样的类型, 而且能够去设置默认值。知晓参数类型以及默认值的运用, 能够使你编写出更为灵活且安全的函数。参数类型这属于一种动态类型语言, 这表明你并不需要去显式地对变量的类型予以声明。函数的参数同样能够是任何一种类型, 比如包含基本数据类型、会有容器类型、存在函数、还有类等等。类型注解3 引入了一种功能, 这种功能为类型注解Type, 它允许你针对函数参数指定类型, 同时还允许你针对函数返回值指定类型, 而这会对提高代码的可读性产生帮助, 另外也会对提高代码的可维护性产生帮助。def add(a: int, b: int) - int: return a b在代码之中, 里边儿的 a 以及 b 被注释成为 int 类型, 而 - int 意味着这个函数的返回值类, 型乃是 int。类型检查与静态分析类型注解自身不会去强制实施类型检查, 它依旧属于动态语言。要是你打算开展类型检查, 能够运用像mypy这般的工具来实施静态类型分析。bash$ pip install mypy $ mypy your_script.py默认参数值于函数定义之际, 可为参数设定默认值, 若于调用函数之时, 未给出该参数之值, 那么便采用默认值,默认值的参数务必置于不具默认值的参数之后。def greet(name: str Guest): print(fHello, {name}!) greet() # Hello, Guest! greet(Alice) # Hello, Alice!使用默认参数的注意事项当你针对参数去设置默认值之际, 务必要小心翼翼, 尤其是这些默认值归属常量或者可变对象像列表或者字典之时, 毕竟于函数调用的时候, 其相关修改极有可能对后续的调用造成影响。def add_item(item, list_items[]): list_items.append(item) return list_items print(add_item(1)) # [1] print(add_item(2)) # [1, 2]上述当中有着一个可变类型的默认值, 每次在调用的时候, 要是没有将的给传入进去, 那么它会去使用这同一个列表对象, 进而致使后续的调用会去共享这同一个列表, 为了能够避免出现这个问题, 应当要使用None作为默认值, 并且在函数的体内去初始化一个全新的列表。def add_item(item, list_itemsNone): if list_items is None: list_items [] list_items.append(item) return list_items可变参数与默认值能够变化的参数 *args 以及 ** , 同样是能够跟默认值一块去运用的, 进而对函数的灵活程度予以更进一步的强化。def greet(messageHello, *names): for name in names: print(f{message}, {name}!) greet(Hi, Alice, Bob) # Hi, Alice! Hi, Bob! greet(Welcome, Tom) # Welcome, Tom!在上述所举的例子里头, 存在着默认值“Hello”, 并且, *names乃是一个可变类型的参数, 其作用在于去接纳数量不确定的名字。总结懂得掌握参数类型, 明白默认值的运用, 能够对你编写代码有所帮助, 让代码更具可读性, 有着可维护性, 且显得健壮性。