1 模块基础

Python 模块(Module),是一个 Python 文件,以.py 结尾,包含了 Python 对象定义和Python语句。Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。


1.1 模块的标准文件模板

  1. # !/usr/bin/env python # 可以使本模块直接在Unix/Linux/Mac上运行
  2. # -*-coding:utf-8 -*- # 表示.py文件本身使用标准UTF-8编码
  3. """
  4. # File : 20220502_test.py
  5. # Time :2022/5/2 21:36
  6. # Author :Enilpicsid
  7. # email : 1154046957@qq.com
  8. # Description:
  9. """ # 4-10行 为设置的头文件
  10. ' a test module ' # 任何模块代码的第一个字符串都被视为模块的文档注释
  11. __author__ = 'Michael Liao'
  12. import sys # 导入模块
  13. def test():
  14. args = sys.argv
  15. if len(args)==1:
  16. print('Hello, world!')
  17. elif len(args)==2:
  18. print('Hello, %s!' % args[1])
  19. else:
  20. print('Too many arguments!')
  21. if __name__=='__main__':
  22. test()

1.2 模块的引用

语句 说明
import module_name1, module_name2 引用模块
from [folder_name.]module_name import function_name1, function_name2 从指定模块引用指定函数
from module_name import * 从指定模块引用所有函数
module_name.function_name() 调用所引用模块中的函数
  • 通过 Ctrl+鼠标左键 可查看代码源;
  • 一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
  1. if __name__=='__main__':
  2. pass
  3. # 多个模块有同名的函数,会同时执行,此时使用 1 行代码,可抵消这部分影响;

name的用法WangGangdan的博客-CSDN博客__name


1.3 变量的作用域

代码 类型 作用域 英文
lnamel 公共变量 所有模块 public
_lnamel__lnamel 局部变量 本模块 private
__lnamel__ 特殊变量
  • Python 中的局部变量也其他模块中使用,但是不应该。就像是不违法违规一样,是一种书写习惯。
  1. def _private_1(name):
  2. return 'Hello, %s' % name
  3. def _private_2(name):
  4. return 'Hi, %s' % name
  5. def greeting(name):
  6. if len(name) > 3:
  7. return _private_1(name)
  8. else:
  9. return _private_2(name)
  10. # _private_1(name)和_private_2(name)只需在greeting(name)中被调用,写成_name_就很具有观赏性
  11. # 取自:https://www.liaoxuefeng.com/wiki/1016959663602400/1017455068170048
系统变量 说明
__name__ 指向当前模块名字
__main__ 指向主模块的名字
__file__ 指向该模块的导入文件名
  1. aa = 1000
  2. def bb():
  3. global aa # 函数内更改全局变量唯一途径
  4. aa += 1
  5. print(aa)
  6. print(aa)
  7. bb()
  8. print(aa)
  • 如果 globle语句前就使用了该变量,则报错:SyntaxError: name 'aa' is used prior to global declaration

1.4 模块的函数

函数 说明 注释
dir() 返回一个列表,包含模块中所有定义过的变量名
globals() 如果在函数内部调用,返回的是所有在该函数里能访问的全局名字。
locals() 如果在函数内部调用,返回的是所有能在该函数里访问的命名。
reload() 重新导入之前导入过的模块 + ()内参数类型为模块,不是字符串

2 框架


2.1 文件夹结构

画板