python基础之模块

python基础之模块,第1张

python基础之模块 模块

定义:模块是一组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': , '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']
os模块-系统模块
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': , '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
random模块-随机数
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]
6
time模块
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 2021
json 和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} 

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5490909.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-12
下一篇 2022-12-12

发表评论

登录后才能评论

评论列表(0条)

保存