定义:模块是一组Python代码的集合,可以使用其他模块,也可以被其他模块使用。
创建自己的模块时,要注意:
1.模块名要遵循Python变量命名规范,不要使用中文、特殊字符。
2.模块名不要和系统模块名冲突,最好先查看系统是否已存在该模块,检查方法是 3.在Python交互环境执行import abc,若成功则说明系统存在此模块。
#!/usr/bin/env python3 # -*- coding: utf-8 -*- ' 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行是标准注释,第1行注释可以让这个hello.py文件直接在Unix/Linux/Mac上运行,第2行注释表示.py文件本身使用标准UTF-8编码; 第4行是一个字符串,表示模块的文档注释,任何模块代码的第一个字符串都被视为模块的文档注释; 第6行使用__author__变量把作者写进去,这样当你公开源代码后别人就可以瞻仰你的大名; 以上就是Python模块的标准文件模板,当然也可以全部删掉不写,但是,按标准办事肯定没错。 后面开始就是真正的代码部分。 你可能注意到了,使用sys模块的第一步,就是导入该模块: import sys 导入sys模块后,我们就有了变量sys指向该模块,利用sys这个变量,就可以访问sys模块的所有功能。sys模块有一个argv变量,用list存储了命令行的所有参数。argv至少有一个元素,因为第一个参数永远是该.py文件的名称,例如: 运行python3 hello.py获得的sys.argv就是['hello.py']; 运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael']。 最后,注意到这两行代码: if __name__=='__main__': test() 当我们在命令行运行hello模块文件时,Python解释器把一个特殊变量__name__置为__main__,而如果在其他地方导入该hello模块时,if判断将失败,因此,这种if测试可以让一个模块通过命令行运行时执行一些额外的代码,最常见的就是运行测试。模块的导入
import module_name: 注意首先你的被导入模块和你需要导入的模块必须位于同一个级别(可可以理解为同一目录) # 这种形式:导入这个module_name的全部内容 from module_name import 局部内容(变量, 函数, 类) # 这种形式:导入的是Module_name的局部内容,并且当导入多个局部内容使用逗号分隔。 例: from test_module import data, data2 from module_name import 局部内容 as newname # 重命名: as from test_module import data as haha # 将此模块名字改为 haha 例子:首先创建一个模块 创建模块: import test_module data = 1 data2 = 2 print(data) print(data2) 被导入模块: 输入: import test_module #全局导入 from test_module import data, data2 #局部导入 from test_module import data as d, data2 as d2 导入并改变变量名称 print(d) print(d2) 结果 1 2 1 2 1 2常见的模块 sys模块-和 python解释器有关
import sys # 带v的意思: variable: 变量 print(sys.platform) #系统所在的平台是win32 print(sys.version) # python解释器的版本 print(sys.modules) # 当前有哪些模块 print(sys.path) # python模块的搜索路径: 先后顺序的 print(sys.api_version) #1013 print(sys.argv) #代表使用pythonProject4 main.py传入的参数 是一个列表 结果 win32 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] {'sys':os模块-系统模块, 'builtins': , '_frozen_importlib': , '_imp': , '_thread': , '_warnings': , '_weakref': , '_frozen_importlib_external': , 'nt': , '_io': , 'marshal': , 'winreg': , 'time': , 'zipimport': , '_codecs': , 'codecs': , 'encodings.aliases': , 'encodings': , 'encodings.utf_8': , '_signal': , 'encodings.latin_1': , '_abc': , 'abc': , 'io': , '__main__': , '_stat': , 'stat': , '_collections_abc': , 'genericpath': , 'ntpath': , 'os.path': , 'os': , '_sitebuiltins': , '_heapq': , 'heapq': , 'itertools': , 'keyword': , '_operator': , 'operator': , 'reprlib': , '_collections': , 'collections': , 'types': , '_functools': , 'functools': , 'enum': , '_sre': , 'sre_constants': , 'sre_parse': , 'sre_compile': , '_locale': , 'copyreg': , 're': , 'token': , 'tokenize': , 'linecache': , 'traceback': , 'sitecustomize': , 'site': , 'test_module': } ['D:\pythonProject4', 'D:\pythonProject4', 'D:\pythonProject3', 'D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_display', 'D:\python\PYTHON\python39.zip', 'D:\python\PYTHON\DLLs', 'D:\python\PYTHON\lib', 'D:\python\PYTHON', 'D:\python\PYTHON\lib\site-packages', 'D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_matplotlib_backend'] 1013 ['D:/pythonProject4/main.py']
print(os.name) #Windows NT(New Technology)是微软发布的桌面端 *** 作系统,于1993年7月27日发布,该 *** 作系统适用于一部分Windows电脑。 print(os.curdir) # 列出所有的文件和目录, 默认是输出当前工作路径下的所有文件 print(os.listdir()) #列出当前文件所在目录所有内容 print(os.environ) #列出当前系统所有目录 print(os.getcwd()) #列出当前文件所在的目录名称 print(os.system("dir")) # 查看某个目录 #print(os.mkdir()) #创建目录 #print(os.rmdir()) #删除目录 print(os.cpu_count()) #当前系统处理器数 #print(os.path.split("D:\test\test2")) split: 分割: 分割前边的路径和最后一个文件或目录合并两个路径 d: test => d:test #print(os.path.join("D:\test", "sys_test.py")) 合并两个路径 d: test => d:test判断你给的这个路径是否是一个目录 #print(os.path.isdir("D:\testsys_test.py")) 判断你给的这个路径是否是一个目录你给定的路径是否是一个文件 #print(os.path.isfile("D:\testsys_test.py")) 判断你给定的路径是否是一个文件 #print(os.path.abspath(".")) absolute path: 绝对路径 #print(os.path.exists("D:\20211010")) #给定的路径是否存在 #print(os.path.dirname("D:\testsys_test.py")) 获取目录名 #print(os.path.getsize("D:setup_dataCentOS-7-x86_64-DVD-1810.iso")) 获取文件大小 73B 单位一定是字节 结果: win32 3.9.0 (tags/v3.9.0:9cf6752, Oct 5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)] {'sys':random模块-随机数, 'builtins': , '_frozen_importlib': , '_imp': , '_thread': , '_warnings': , '_weakref': , '_frozen_importlib_external': , 'nt': , '_io': , 'marshal': , 'winreg': , 'time': , 'zipimport': , '_codecs': , 'codecs': , 'encodings.aliases': , 'encodings': , 'encodings.utf_8': , '_signal': , 'encodings.latin_1': , '_abc': , 'abc': , 'io': , '__main__': , '_stat': , 'stat': , '_collections_abc': , 'genericpath': , 'ntpath': , 'os.path': , 'os': , '_sitebuiltins': , '_heapq': , 'heapq': , 'itertools': , 'keyword': , '_operator': , 'operator': , 'reprlib': , '_collections': , 'collections': , 'types': , '_functools': , 'functools': , 'enum': , '_sre': , 'sre_constants': , 'sre_parse': , 'sre_compile': , '_locale': , 'copyreg': , 're': , 'token': , 'tokenize': , 'linecache': , 'traceback': , 'sitecustomize': , 'site': , 'test_module': } ['D:\pythonProject4', 'D:\pythonProject4', 'D:\pythonProject3', 'D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_display', 'D:\python\PYTHON\python39.zip', 'D:\python\PYTHON\DLLs', 'D:\python\PYTHON\lib', 'D:\python\PYTHON', 'D:\python\PYTHON\lib\site-packages', 'D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_matplotlib_backend'] 1013 ['D:/pythonProject4/main.py'] nt . ['.idea', '1', '1.jpg', '2.jpg', 'file.txt', 'file1.txt', 'main.py', 'test_module.py', '__pycache__'] environ({'ALLUSERSPROFILE': 'C:\ProgramData', 'APPDATA': 'C:\Users\Administrator\AppData\Roaming', 'COMMONPROGRAMFILES': 'C:\Program Files\Common Files', 'COMMonPROGRAMFILES(X86)': 'C:\Program Files (x86)\Common Files', 'COMMONPROGRAMW6432': 'C:\Program Files\Common Files', 'COMPUTERNAME': 'DESKTOP-KKQJA1H', 'COMSPEC': 'C:\WINDOWS\system32\cmd.exe', 'DRIVERDATA': 'C:\Windows\System32\Drivers\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\Users\Administrator', 'IDEA_INITIAL_DIRECTORY': 'C:\Users\Administrator\Desktop', 'LOCALAPPDATA': 'C:\Users\Administrator\AppData\Local', 'LOGONSERVER': '\\DESKTOP-KKQJA1H', 'NUMBER_OF_PROCESSORS': '8', 'ONEDRIVE': 'C:\Users\Administrator\OneDrive', 'ONEDRIVECONSUMER': 'C:\Users\Administrator\OneDrive', 'OS': 'Windows_NT', 'PATH': 'D:\csa安装包\;D:\python\scripts\;D:\python\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;D:\;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Roaming\npm', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 12, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e0c', 'PROGRAMDATA': 'C:\ProgramData', 'PROGRAMFILES': 'C:\Program Files', 'PROGRAMFILES(X86)': 'C:\Program Files (x86)', 'PROGRAMW6432': 'C:\Program Files', 'PSMODULEPATH': 'C:\Program Files\WindowsPowerShell\Modules;C:\WINDOWS\system32\WindowsPowerShell\v1.0\Modules', 'PT5HOME': 'C:\Cisco Packet Tracer 6.1iv', 'PT6HOME': 'C:\Cisco Packet Tracer 6.1iv', 'PUBLIC': 'C:\Users\Public', 'PYCHARM_DISPLAY_PORT': '63342', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'D:\pythonProject4;D:\pythonProject3;D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_matplotlib_backend;D:\python\PYCHARM\PyCharm 2020.2.3\plugins\python\helpers\pycharm_display', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\WINDOWS', 'TEMP': 'C:\Users\ADMINI~1\AppData\Local\Temp', 'TMP': 'C:\Users\ADMINI~1\AppData\Local\Temp', 'USERDOMAIN': 'DESKTOP-KKQJA1H', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-KKQJA1H', 'USERNAME': 'Administrator', 'USERPROFILE': 'C:\Users\Administrator', 'VBOX_MSI_INSTALL_PATH': 'D:\virtualbox\', 'WINDIR': 'C:\WINDOWS', 'ZES_ENABLE_SYSMAN': '1'}) D:pythonProject4 ������ D �еľ��� Data ������к��� E270-CB99 D:pythonProject4 ��Ŀ¼ 2021/11/01 20:19 . 2021/11/01 20:19 .. 2021/11/01 20:12 .idea 2021/11/01 19:43 1 2021/10/27 16:43 36,937 1.jpg 2021/10/27 17:58 36,937 2.jpg 2021/11/01 20:19 13 file.txt 2021/10/27 16:29 30 file1.txt 2021/11/01 20:19 15,059 main.py 2021/11/01 19:45 66 test_module.py 2021/11/01 19:45 __pycache__ 6 ���ļ� 89,042 �ֽ� 5 ��Ŀ¼ 356,275,507,200 �����ֽ� 0 8 Process finished with exit code 0
import random print(random.random()) #任意的返回一个小数 print(random.randint(0, 100)) #任意返回一个(0,100)中的整数 print(random.choice([4, 5, 6])) #从给列表中选择一个 print(random.choices([4, 5, 6, 7, 8], cum_weights=[1, 2, 3, 4, 5], k=2)) #choices(self, population, weights=None, *, cum_weights=None, k=1) # 返回一个k大小的列表 # weights: 权重, 权重大的选中的几率高一些 # cum_weights: 累加权重 print(random.sample([4, 5, 6, 7, 8], k=2)) #def sample(self, population, k, *, counts=None: 选择k个唯一的随机元素从取样的序列或者集合中 print(random.randrange(1, 10)) #给定范围内随机一个整数 结果: 0.4779377870840117 28 4 [7, 7] [4, 5] 6time模块
import time print(time.localtime()) #将一个时间戳转换为当前时区的struct_time。 print(time.gmtime()) #是将一个时间戳转换为UTC时区(0时区)的struct_time。 data = time.time() #返回当前时间的时间戳。 print(data) time.sleep(2) #线程推迟指定的时间运行。单位为秒。 print(time.time() - data) print(time.timezone) #-28800 => 28800是一个秒数 =》 小时是8 print(time.strftime("%Y-%m-%d, %H:%M:%S, %j, %W, %w, %Z, %z", time.localtime())) '''把一个代表时间的元组或者struct_time转化为格式化的时间字符串。 t默认为当前时间。 %a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间表示 %d 一个月中的第几天(01 - 31) %H 一天中的第几个小时(24小时制,00 - 23) %I 第几个小时(12小时制,01 - 12) %j 一年中的第几天(001 - 366) %m 月份(01 - 12) %M 分钟数(00 - 59) %p 本地am或者pm的相应符 %S 秒(01 - 61) %U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。 %w 一个星期中的第几天(0 - 6,0是星期天) %W 和%U基本相同,不同的是%W以星期一为一个星期的开始。 %x 本地相应日期 %X 本地相应时间 %y 去掉世纪的年份(00 - 99) %Y 完整的年份 %Z 时区的名字(如果不存在为空字符) %% ‘%’字符''' print(time.ctime()) #把一个时间戳转化为time.asctime()的形式。默认值为当前时间。 结果: time.struct_time(tm_year=2021, tm_mon=11, tm_mday=1, tm_hour=20, tm_min=43, tm_sec=17, tm_wday=0, tm_yday=305, tm_isdst=0) time.struct_time(tm_year=2021, tm_mon=11, tm_mday=1, tm_hour=12, tm_min=43, tm_sec=17, tm_wday=0, tm_yday=305, tm_isdst=0) 1635770597.4517884 2.0136446952819824 -28800 2021-11-01, 20:43:19, 305, 44, 1, 中国标准时间, +0800 Mon Nov 1 20:43:19 2021json 和json数据相关模块
""" json: 现在在web中比较流行一种传输数据的方式 在编程中,别人给你提供了一个接口: get_students_by_classno(classno): 根据班级编号来获取学生信息 数据格式: 就可以是我们json格式 和我们字典比较像 第一种:将python对象,转换成json格式的数据 第二种:将json格式的数据,转换成python对象 """ 输入: import json dict_data = {1: 2, 2: 3} data = json.dumps(dict_data) #把一个字典转换成一个json格式的字符串 print(data, type(data)) dict_data2 = json.loads(data) #把一个json格式的字符串转换成一个python中的字典对象 print(dict_data, type(dict_data)) 输出: {"1": 2, "2": 3}{1: 2, 2: 3}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)