函数及函数参数
一般函数及参数定义
1 | # 定义函数,指定参数及其默认值 |
两种类型的可变参数
*
1 | # 用*接收任意数量的非关键字参数(元组(),不是数组[]) |
**
1 | # 用**接收关键字参数(对象) |
- 混合使用
1 | def func3(*a, **b): |
- 打包与拆解
在1,2,3的例子中,*
与 **
起着打包的作用,即:将实参中的多个参数打包到一个变量中去
此外,这两个符号还起到拆解的作用,其用法与打包相反,且仅用于函数传参中
1 | def func4(a=0, b=0, c=0, d=0, e=0): |
总结来说,*
把一个数组、元组拆分成一个又一个的数据,把键值对的值提取出来,传入到函数中;**
只对键值对处理,把键值对提取为 key=value
的形式传入函数中。
模块化处理
书写、导入与使用模块
module1.py
1 | def func(): |
module2.py
1 | def func(): |
main.py
1 | import module1 |
也可以写成这样:
1 | from module1 import func as f1 |
避免模块文件中代码的自动执行
如果 module1.py
中存在可执行代码:
1 | def func(): |
在 main.py
中用 import
导入该模块时,会自动执行模块中除函数定义外的代码
1 | import module1 # 输出:hello |
避免这个问题的解决方法是:
1 | def func(): |
规范化书写格式
1 | def main(): |
pass
是空语句,不做任何事情,一般用作占位语句,为了保证程序结构的完整性在vscode中敲一个pass然后换行,可以往前跳一个缩进,可以用来表示当前代码块执行完毕