1 模块基础
Python 模块(Module),是一个 Python 文件,以.py
结尾,包含了 Python 对象定义和Python语句。Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。
1.1 模块的标准文件模板
# !/usr/bin/env python # 可以使本模块直接在Unix/Linux/Mac上运行
# -*-coding:utf-8 -*- # 表示.py文件本身使用标准UTF-8编码
"""
# File : 20220502_test.py
# Time :2022/5/2 21:36
# Author :Enilpicsid
# email : 1154046957@qq.com
# Description:
""" # 4-10行 为设置的头文件
' a test module ' # 任何模块代码的第一个字符串都被视为模块的文档注释
__author__ = 'Michael Liao'
import sys # 导入模块
def test():
args = sys.argv
if len(args)==1:
print('Hello, world!')
elif len(args)==2:
print('Hello, %s!' % args[1])
else:
print('Too many arguments!')
if __name__=='__main__':
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。这样可以防止导入模块被一遍又一遍地执行。
if __name__=='__main__':
pass
# 多个模块有同名的函数,会同时执行,此时使用 1 行代码,可抵消这部分影响;
name的用法WangGangdan的博客-CSDN博客__name
1.3 变量的作用域
代码 |
类型 |
作用域 |
英文 |
lnamel |
公共变量 |
所有模块 |
public |
_lnamel 、__lnamel |
局部变量 |
本模块 |
private |
__lnamel__ |
特殊变量 |
|
- Python 中的局部变量也其他模块中使用,但是不应该。就像是不违法违规一样,是一种书写习惯。
def _private_1(name):
return 'Hello, %s' % name
def _private_2(name):
return 'Hi, %s' % name
def greeting(name):
if len(name) > 3:
return _private_1(name)
else:
return _private_2(name)
# _private_1(name)和_private_2(name)只需在greeting(name)中被调用,写成_name_就很具有观赏性
# 取自:https://www.liaoxuefeng.com/wiki/1016959663602400/1017455068170048
系统变量 |
说明 |
__name__ |
指向当前模块名字 |
__main__ |
指向主模块的名字 |
__file__ |
指向该模块的导入文件名 |
aa = 1000
def bb():
global aa # 函数内更改全局变量唯一途径
aa += 1
print(aa)
print(aa)
bb()
print(aa)
- 如果
globle
语句前就使用了该变量,则报错:SyntaxError: name 'aa' is used prior to global declaration
1.4 模块的函数
函数 |
说明 |
注释 |
dir() |
返回一个列表,包含模块中所有定义过的变量名 |
|
globals() |
如果在函数内部调用,返回的是所有在该函数里能访问的全局名字。 |
|
locals() |
如果在函数内部调用,返回的是所有能在该函数里访问的命名。 |
|
reload() |
重新导入之前导入过的模块 |
+ () 内参数类型为模块,不是字符串 |
2 框架
2.1 文件夹结构
