我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python全栈开发之常用模块

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python全栈开发之常用模块

No.1 sys

sys模块是与Python解释器交互的一个接口

  • sys.argv 命令行参数List,第一个元素是程序本身路径
  • sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)
  • sys.version 获取Python解释程序的版本信息
  • sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
  • sys.platform 返回操作系统平台名称

No.2 os

os模块是与操作系统交互的一个接口

  • os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
  • os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
  • os.curdir 返回当前目录: ('.')
  • os.pardir 获取当前目录的父目录字符串名:('..')
  • os.makedirs('dirname1/dirname2') 可生成多层递归目录
  • os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
  • os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
  • os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
  • os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
  • os.remove() 除一个文件
  • os.rename("oldname","newname") 重命名文件/目录
  • os.stat('path/filename') 获取文件/目录信息
  • os.sep 输出操作系统特定的路径分隔符,win下为"\",Linux下为"/"
  • os.linesep 输出当前平台使用的行终止符,win下为"\t\n",Linux下为"\n"
  • os.pathsep 输出用于分割文件路径的字符串 win下为;,Linux下为:
  • os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
  • os.system("bash command") 运行shell命令,直接显示
  • os.popen("bash command).read() 运行shell命令,获取执行结果
  • os.environ 获取系统环境变量
  • os.path.abspath(path) 返回path规范化的绝对路径 os.path.split(path) 将path分割成目录和文件名二元组返回 os.path.dirname(path) 返回path的目录
  • os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
  • os.path.isabs(path) 如果path是绝对路径,返回True
  • os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
  • os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
  • os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  • os.path.getatime(path) 返回path所指向的文件或者目录的最后访问时间
  • os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间
  • os.path.getsize(path) 返回path的大小

No.3 re

re模块的使用过程

# 导入re模块
import re
# 使用match方法进行匹配操作
result = re.match(正则表达式,要匹配的字符串)
# 如果上一步匹配到数据的话,可以使用group方法来提取数据
result.group()

匹配单个字符

字符 功能
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\d 匹配数字,即0-9
\D 匹配非数字,即不是数字
\s 匹配空白,即 空格,tab键
\S 匹配非空白
\w 匹配单词字符,即a-z、A-Z、0-9、_
\W 匹配非单词字符

匹配多个字符

字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有
{m} 匹配前一个字符出现m次
{m,n} 匹配前一个字符出现从m到n次

匹配开头或结尾

字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾

匹配分组

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
\num 引用分组num匹配到的字符串
(?P<name>) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串

match 仅仅查找第一个位置,如果找不到,返回None

import re
result = re.match("kernel","kernel.cn")
result.group()result = re.match("kernel","kernel.cn")
result.group() # kernel

serach 仅仅返回一个结果

import re
ret = re.search(r"\d+", "阅读次数为 9999")
ret.group() # 9999

findall 返回最多能匹配的个数

import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret) # ['9999', '7890', '12345']

sub 将匹配到的数据进行替换

import re

ret = re.sub(r"\d+", '998', "python = 997")
print(ret) # Python = 998

贪婪和非贪婪

正则表达式模式中使用到通配字,那它在从左到右的顺序求值时,会尽量抓取满足匹配最长字符串,在我们上面的例子里面,+会从字符串的启始处抓取满足模式的最长字符,其中包括我们想得到的第一个整型字段的中的大部分,\d+只需一位字符就可以匹配,而+则匹配了从字符串起始符合规则的所有字符,解决方式就是非贪婪操作符?,这个操作符可以用在*、+、?的后面,要求正则匹配的越少越好

r的作用

Python中字符串前面加上 r 表示原生字符串,与大多数编程语言相同,正则表达式里使用"\"作为转义字符,这就可能造成反斜杠困扰,假如你需要匹配文本中的字符"\",那么使用编程语言表示的正则表达式里将需要4个反斜杠"\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠,Python里的原生字符串很好地解决了这个问题,有了原生字符串,你再也不用担心是不是漏写了反斜杠,写出来的表达式也更直

No.4 time

时间处理模块

time模块的几种转换方式

  • time.time() 时间戳
  • time.strftime("%Y-%m-%d %X") 格式化的时间字符串
  • time.localtime() 本地时区的struct_time
  • time.gmtime() UTC时区的struct_time

时间戳转换为结构化时间

  • now_time = time.time() 时间戳
  • struct_time = time.localtime(now_time) 时间戳转换为结构化时间

结构化时间转化为时间戳

  • struct_time = time.localtime(time.time()) 结构化时间
  • now_time = time.mktime(struct_time) 结构化时间转换为时间戳

结构化时间转化为字符串时间

  • struct_time = time.localtime(time.time()) 结构化时间
  • str_time = time.strftime("%Y-%m-%d",struct_time) 结构化时间转换为字符串时间

字符串时间转化为结构化时间

  • str_time = "2018-04-17" 字符串时间
  • struct_time = time.strptime(str_time,"%Y-%m-%d") 字符串时间转换为结构化时间

No.5 timedate

日期处理模块

  • timedate.date.today() 输出日期
  • timedate.date.fromtimestamp() 接收时间戳,转换成日期
  • timedate.current_time() 输出日期时间毫秒值
  • timedate.current_time.timetuple() 将日期时间毫秒值转换成struct_time
  • timedate.current_time.replace() 替换日期

No.6 json

只能适用于Python的基本数据类型,跨语言

  • json.loads() 接收一个字符串,转换成Python数据类型
  • json.load() 从文化中读取字符串,转换成Python数据类型
  • json.dumps() 接收一个Python数据类型。转换成字符串
  • json.dump() 接收一个Python数据类型,转换成字符串,写入到文件中

No.7 pickle

适用于Python的所有数据类型,但是只针对Python

  • pickle.loads() 接收字节,转换成Python数据类型
  • pickle.load() 从文化中读取字节,转换成Python数据类型
  • pickle.dumps() 接收一个Python数据类型。转换成字节
  • pickle.dump() 接收一个Python数据类型,转换成字节,写入到文件中

No.8 logging

日志处理模块

日志的级别
默认情况下Python的logging模块将日志打印到了标准输出中,且只显示了大于等于WARNING级别的日志,这说明默认的日志级别设置为WARNING(日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG)

日志的配置

logging.basicConfig(level=logging.DEBUG,  
                    format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',  
                    datefmt='%a, %d %b %Y %H:%M:%S',  
                    filename='/tmp/test.log',  
                    filemode='w')  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message')

配置参数

  • logging.basicConfig() 函数中可通过具体参数来更改logging模块默认行为,可用参数有:
  • filename:用指定的文件名创建FiledHandler,这样日志会被存储在指定的文件中。
  • filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
  • format 指定handler使用的日志显示格式。
  • datefmt:指定日期时间格式。
  • level:设置rootlogger(后边会讲解具体概念)的日志级别
  • stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者* 文件(f=open(‘test.log’,’w’)),默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
    format参数中可能用到的格式化串:
  • %(name)s Logger的名字
  • %(levelno)s 数字形式的日志级别
  • %(levelname)s 文本形式的日志级别
  • %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
  • %(filename)s 调用日志输出函数的模块的文件名
  • %(module)s 调用日志输出函数的模块名
  • %(funcName)s 调用日志输出函数的函数名
  • %(lineno)d 调用日志输出函数的语句所在的代码行
  • %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
  • %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
  • %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
  • %(thread)d 程ID。可能没有
  • %(threadName)s 线程名。可能没有
  • %(process)d 进程ID。可能没有
  • %(message)s 用户输出的消息

logger对象配置

logger = logging.getLogger('kernel') # 创建logging对象
logger.setLevel(logging.DEBUG) # 指定全局被处理消息级别(全局处理消息级别要高于或等于局部消息处理级别)

ch = logging.StreamHandler() # 屏幕流
ch.setLevel(logging.DEBUG) # 指定局部被处理消息级别

fh = logging.FileHandler("access.log") # 文件流
fh.setLevel(logging.WARNING) # 指定局部被处理消息级别

formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 创建时间格式

ch.setFormatter(formatter) # 设置屏幕流时间格式
fh.setFormatter(formatter) # 设置文本流时间格式

logger.addHandler(ch) # 将屏幕流对象添加到logger中
logger.addHandler(fh) # 将文本流对象添加到logger中

logger.debug('debug message')
logger.info('info message')
logger.warn('warn message')
logger.error('error message')
logger.critical('critical message')

No.9 hashlib

加密模块

obj = hashlib.md5() # 创建hashlib对象
obj = hashlib.md5(bytes('kernel',encoding='utf-8')) # 创建hashlib对象并加言
obj.update(bytes('hello',encoding='utf-8')) # 加密
ret = obj.hexdigest() # 获取密文

No.10 configparser

操纵配置文件模块

import configparser
cfg = configparser.ConfigParser() # 创建configparser对象
cfg.read('conf',encoding='utf-8') # 读取配置文件

secs = cfg.sections() # 获取所有节点
print(secs)

options = cfg.options(secs[0]) # 获取指定节点的所有key
print(options)

item = cfg.items(secs[0]) # 获取指定节点的键值对组合
print(item)

val = cfg.get(secs[0],options[0]) # 获取指定节点下的指定key的值
print(val)

sec = cfg.remove_section(secs[0]) # 删除指定节点
cfg.write(open('conf','w'))
print(sec)

sec = cfg.has_section('jiedian1') # 检查是否存在该节点
print(sec)
sec = cfg.add_section('jiedian1') # 添加该节点
cfg.write(open('conf','w'))
print(sec)

cfg.set(secs[0],options[0],'111') # 修改指定节点下指定key的值
cfg.write(open('conf','w'))

cfg.remove_option(secs[0],options[0]) # 删除指定节点下指定键值对
cfg.write(open('conf','w'))

No.11 XML

from xml.etree import ElementTree as ET
from xml.dom import minidom

# 修改XML
"""
解析XML的方式有两种
1.解析字符串方式
将字符串解析成XML对象,root代指XML文件的根节点
str_xml = open('xo.xml', 'r').read()
root = ET.XML(str_xml)
2.解析文件方式
获取xml文件的根节点
tree = ET.parse("xo.xml")
root = tree.getroot()
"""

# 遍历XML的所有内容
et = ET.parse('conf.xml')
root = et.getroot() # 获取根节点
print(root)

print(root.tag) # 顶层标签

for child in root: # 遍历XML文档的第二层
    print(' ' + child.tag,child.attrib) # 第二层节点的标签名和标签属性
    for i in child: # 遍历XML文档的第三层
        print('     ' + i.tag,i.attrib) # 第三层节点的标签名和标签属性
        print('         ' + str(i.text)) # 第三层节点的属性

# 遍历XML的指定节点
for node in root.iter('year'): # 遍历XML的所有year节点
    print(node.tag, node.text) # 节点的标签名称和内容

# 节点的标签名称和内容并修改节点内容
for node in root.iter('year'): # 遍历XML的所有year节点
    print(node.tag, node.text) # 节点的标签名称和内容
    new_year = int(node.text) + 1 # 将year节点的内容增加1
    node.text = str(new_year)
    node.set('name', 'kernel') # 设置属性和值
    node.set('age', '18')
    del node.attrib['name'] # 删除属性

# 删除节点
for country in root.findall('country'): # 遍历data下的所有country节点
    rank = int(country.find('rank').text) # 获取每一个country节点下rank节点的内容
    if rank > 50:
        root.remove(country)  # 删除指定country节点

"""
保存XML文件的方式也有两种
1.解析字符串方式
tree = ET.ElementTree(root)
tree.write("newnew.xml", encoding='utf-8')
2.解析文件方式
tree.write("new.xml",encoding='utf-8')
"""

# 创建XML文件
# 方式一
root = ET.Element("famliy")

son1 = ET.Element('son', {'name': '大儿子'}) # 创建大儿子节点
son2 = ET.Element('son', {"name": '二儿子'}) # 创建二儿子节点

grandson1 = ET.Element('grandson', {'name': '大孙子'}) # 在大儿子中创建两个孙子
grandson2 = ET.Element('grandson', {'name': '二孙子'})

son1.append(grandson1) # 将孙子添加到儿子节点中
son1.append(grandson2)

root.append(son1) # 把儿子添加到根节点中
root.append(son1)

tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False)

# 方式二
root = ET.Element("famliy")

son1 = root.makeelement('son', {'name': '大儿子'}) # 创建大儿子节点
son2 = root.makeelement('son', {"name": '二儿子'}) # 创建二儿子节点

grandson1 = root.makeelement('grandson', {'name': '大孙子'}) # 在大儿子中创建两个孙子
grandson2 = root.makeelement('grandson', {'name': '二孙子'})

son1.append(grandson1) # 将孙子添加到儿子节点中
son1.append(grandson2)

root.append(son1) # 把儿子添加到根节点中
root.append(son1)

tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False)

# 方式三
root = ET.Element("famliy")

son1 = root.SubElement('son', {'name': '大儿子'}) # 创建大儿子节点
son2 = root.SubElement('son', {"name": '二儿子'}) # 创建二儿子节点

grandson1 = root.SubElement('grandson', {'name': '大孙子'}) # 在大儿子中创建两个孙子
grandson2 = root.SubElement('grandson', {'name': '二孙子'})

son1.append(grandson1) # 将孙子添加到儿子节点中
son1.append(grandson2)

root.append(son1) # 把儿子添加到根节点中
root.append(son1)

tree = ET.ElementTree(root)
tree.write('oooo.xml',encoding='utf-8', short_empty_elements=False) # short_empty_elements=False 表示控制元素的格式如果值为False,没有内容,它们是作为一个单独闭合的标签,否则它们会以一对的形式发射开始/结束标记

# 方式四 原生保存的XML时默认无缩进,如果想要设置缩进的话,需要修改保存方式
def prettify(elem):
    """将节点转换成字符串,并添加缩进。
    """
    rough_string = ET.tostring(elem, 'utf-8')
    reparsed = minidom.parseString(rough_string)
    return reparsed.toprettyxml(indent="\t")

root = ET.Element("famliy")

son1 = ET.Element('son', {'name': '大儿子'}) # 创建大儿子节点
son2 = ET.Element('son', {"name": '二儿子'}) # 创建二儿子节点

grandson1 = ET.Element('grandson', {'name': '大孙子'}) # 在大儿子中创建两个孙子
grandson2 = ET.Element('grandson', {'name': '二孙子'})

son1.append(grandson1) # 将孙子添加到儿子节点中
son1.append(grandson2)

root.append(son1) # 把儿子添加到根节点中
root.append(son1)

raw_str = prettify(root)

f = open("xxxoo.xml",'w',encoding='utf-8')
f.write(raw_str)
f.close()

No.12 subprocess

执行系统命令模块

call 执行命令,返回状态码

  • ret = subprocess.call(["ls", "-l"], shell=False)
  • ret = subprocess.call("ls -l", shell=True)

check_call 执行命令,如果执行状态码是 0 ,则返回0,否则抛异常

  • subprocess.check_call(["ls", "-l"])
  • subprocess.check_call("exit 1", shell=True)

check_output 执行命令,如果状态码是 0 ,则返回执行结果,否则抛异常

  • subprocess.check_output(["echo", "Hello World!"])
  • subprocess.check_output("exit 1", shell=True)

subprocess.Popen(...) 用于执行复杂的系统命令

  • args:shell命令,可以是字符串或者序列类型(如:list,元组)
  • bufsize:指定缓冲。0 无缓冲,1 行缓冲,其他 缓冲区大小,负值 系统缓冲
  • stdin, stdout, stderr:分别表示程序的标准输入、输出、错误句柄
  • preexec_fn:只在Unix平台下有效,用于指定一个可执行对象(callable object),它将在子进 程运行之前被调用
  • close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
  • close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道。
  • close_sfs:在windows平台下,如果close_fds被设置为True,则新创建的子进程将不会继承父进程的输入、输出、错误管道,所以不能将close_fds设置为True同时重定向子进程的标准输入、输出与错误(stdin, stdout, stderr)。
  • shell:同上
  • cwd:用于设置子进程的当前目录
  • env:用于指定子进程的环境变量。如果env = None,子进程的环境变量将从父进程中继承。
  • universal_newlines:不同系统的换行符不同,True -> 同意使用 \n
  • startupinfo与createionflags只在windows下有效,将被传递给底层的CreateProcess()函数,用于设置子进程的一些属性,如:主窗口的外观,进程的优先级等等
import subprocess
"""
终端输入的命令分为两种:
输入即可得到输出,如:ifconfig
输入进行某环境,依赖再输入,如:python
"""
# 执行普通命令
ret1 = subprocess.Popen(["mkdir","t1"])
ret2 = subprocess.Popen("mkdir t2", shell=True)

# 在指定目录上创建文件夹
obj = subprocess.Popen("mkdir t3", shell=True, cwd='/home/dev',)

# 依赖环境的命令
obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
obj.stdin.write("print(1)\n")
obj.stdin.write("print(2)")

out_error_list = obj.communicate()
print(out_error_list)

obj = subprocess.Popen(["python"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
out_error_list = obj.communicate('print("hello")')
print(out_error_list)

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python全栈开发之常用模块

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python全栈开发之常用模块

No.1 syssys模块是与Python解释器交互的一个接口sys.argv 命令行参数List,第一个元素是程序本身路径sys.exit(n) 退出程序,正常退出时exit(0),错误退出sys.exit(1)sys.version
2023-01-31

Python全栈开发之异常处理

No.1 异常的概念程序在运行过程中,遇到一个错误,会停止程序的运行,并且提示一些错误信息,这就是异常程序停止执行并且提示错误信息这个动作,称为抛出异常No.2 捕获异常简单捕获异常格式捕获异常最简单的语法格式:try: 尝试执行的代
2023-01-31

Python全栈开发之---assert

一、python assert的作用:根据Python 官方文档解释(https://docs.python.org/3/reference/simple_stmts.html#assert), "Assert statements are
2023-01-30

Python全栈开发之Git

No.1 Git特点版本控制:可以解决多人同时开发的代码问题,也可以找回历史代码分布式:Git是一个分布式版本控制系统,同一个Git仓库,可以分布到不同的机器上,首先会有一台计算机充当服务器,这台计算机7*24小时服务,其他计算机都是从这台
2023-01-31

python全栈开发之Python基础(

一、 基础知识python的运行方式有两种:第一种通过交互式的运行方式,通过 "开始"—>"所有程序" —> "python3.x" —>"IDLE" 运行。第二种是我们写好的Python文件双击运行。 Python的帮助系统 hel
2023-01-31

Python全栈开发之---mysql数

1、数据库的安装和连接 1 #数据库安装 2 pip install PyMySQL 3 4 #数据库操作 5 import pymysql 6 7 db = pymysql.connect("数据库ip","用户","密码","数据库
2023-01-30

Python全栈开发之函数

No.1 函数介绍所谓函数,就是把具有独立功能的代码块组织为一个小模块,在需要的时候调用函数的使用有两个步骤:1、定义函数2、调用函数函数的作用,代码重用,提高开发效率No.2 定义和调用定义函数的格式如下:def 函数名(): 函数
2023-01-31

Python全栈开发之并发编程

No.1 线程什么是多任务就是操作系统可以同时运行多个任务,就是可以一边用浏览器上网,同时又可以听歌,还能再撩个×××姐,这就是多任务,操作系统会轮流把系统调度到每个核心上去执行并发和并行并发是指任务数多余cpu核数,通过操作系统的各种任务
2023-01-31

Python全栈开发之Django基础

No.1 MVC&MTVMVCM全拼为Model,主要封装对数据库层的访问,对数据库中的数据进行增、删、改、查操作V全拼为View,用于封装结果,生成页面展示的html内容C全拼为Controller,用于接收请求,处理业务逻辑,与Mode
2023-01-31

python开发常用的python模块及

更详细工具包参见 转载自:www.cnblogs.com/hongten/p/hongten_python_more_modules.htmladodb:我们领导推荐的数据库连接组件 bsddb3:BerkeleyDB的连接组件 Cheet
2023-01-31

Python全栈开发之---装饰器

1、装饰器的形成过程 1 import time 2 3 def func1(): 4 print('in func1') 5 6 def timer(func): 7 def inner(): 8 st
2023-01-30

Python全栈开发之Django进阶

No.1 静态文件处理项目中CSS、JS、图片都属于静态文件,一般会将静态文件存到一个单独目录中,便于管理,在HTML页面调用时,需要指定静态文件的路径,Django提供了一种解析静态文件的机制,文件可以放在项目目录下,也可以放在应用目录下
2023-01-31

Python全栈开发之基础语法

No.1 Python语言介绍详情见百度百科。。。No.2 Python是一门怎么样的语言详情在百度百科。。。No.3 Python能做什么网络应用、桌面应用、系统运维、机器学习、科学计算。。。网络应用 Django/Flask/Torna
2023-01-31

Python全栈开发之文件操作

No.1 文件的概念文件的概念和作用计算机中的文件,就是存储在某种长期储存设备上的一段数据流 计算机中的文件,可以在需要的时候使用文件的存储方式文本文件可以使用文本编辑器查看本质上还是二进制文件二进制文件保留的内容不能直接查看,而是提供给其
2023-01-31

Python全栈开发之网络编程

No.1 TCP/IP早期的计算机网络,都是由厂商规定自己的通信协议,互不兼容,为了把全世界不同类型的计算机连接起来,就必须规定一套全球通用的协议,所以就出现了TCP/IPNo.2 Socket简介要解决怎么标识一个进制,在一台电脑上可以同
2023-01-31

Python全栈开发之面向对象

No.1 概念面向对象的特点?注重对象和指责,不同的对象承担各自的指责更加适合对复杂的需求变化,专门应对复杂项目开发,提供固定的套路面向对象强调的是谁来做,面向过程强调的如何做什么是类类是对一群具有相同特征或者行为的事物统称,是抽象的,不能
2023-01-31

python常用的时间模块之datetime模块

今天小编给大家分享的是python常用的时间模块之datetime模块,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。一、基本类型1、date类datetime.date(2023,5
2023-08-03

Python常用内置模块之xml模块(详解)

xml即可扩展标记语言,它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。从结构上,很像HTML超文本标记语言。但他们被设计的目的是不同的,超文本标记语言被设计用来显示数据,其焦点是数据的外观。它被设计用来传
2022-06-04

【转载】Python常用模块之sys

原文链接sys模块提供了一系列有关Python运行环境的变量和函数。常见用法sys.argv可以用sys.argv获取当前正在执行的命令行参数的参数列表(list)。变量 解释sys.argv[0] 当前程序名sys.argv[1] 第一
2023-01-31

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录