当前位置: 首页 > news >正文

Python(模块)

模块编写完成就可以被其他模块进行调用并使用被调用模块的功能。

import导入方式的语法结构:

import模块名称【as别名】

from……import导入方式的语法结构:

from模块名称,import变量/函数/类/*(*是通配符)

import test2  #自己创建一个test2.py文件就不会报错了,也可以修改名字,只要是。py结尾的就好
print(test2.name) #在test2文件中写入代码:name='xx'
test2.info()
#在test2文件中写入:
# def info():# print(f'hhh_{name}')import test2 as a
print(a.name)
a.info()
#这两种情况的结果完全一样#(2)from..import
from test2 import name #导入的是一个具体的变量名称
print (name)
# info() #NameError: name 'info' is not defined
from test2 import info
info()#通配符
from test2 import *
#以上代码可以导入模块中的所有
print(name)
info()#同时导入多个模块
import math,time,random

新建文件:

 add.py

name='xx'
age=18
def info():print(f'姓名:{name},年龄:{age}')
#通配符
from test2 import *
from add import *
#导入模块中具有同名的变量和函数,后导入的会将之前导入的进行覆盖
print(name)
info()#如果不想覆盖,解决方案,可以使用import
import test2
import add
#使用模块中的函数或变量时,模快名打点调用
test2.info()
add.info()

模块可以避免函数内变量名称相冲突的问题

包可以避免模块名称相冲突的问题

init.py文件内容

print('xxx')
print('yyy')

my_admin.py文件 

def info():print("abc")
name='xx'

add.py

import admin.my_admin as a #包名.模块名
a.info()#结果
# xxx
# yyy
# abcprint('-'*40)
from admin import my_admin as b #from 包名 import 模块 as 别名
b.info()# abcprint('-'*40)
from admin.my_admin import info #from模块名称,import变量/函数/类/*(*是通配符)
info()
# abcfrom admin.my_admin import *
print(name)
# xx

被调用文件的内容

# name='xx'
# print(name)
if __name__=='__main__':#阻止了全局变量的直接调用name='xx'print(name)#在导入其他模块时不希望执行的代码,就放在这里

调用文件的内容:

import test2

random 

import random
random.seed(10)
print(random.random())#0.5714025946899135#[0.0,1.0)
print(random.random())#0.4288890546751146
#按住ctrl点击random()可以查看内置文件random.py,在这里标量的一行,重复以上步骤,可以调出random.pyi
print('-'*40)
random.seed(10)
print(random.randint(1,100)) #[1,100]for i in range(10):#[m,n)步长为k,m-->start-->1,n-->stop-->10,k-->step-->,print(random.randrange(1,10,3))#start,stop,step #12行代码执行了10次print(random.uniform(1,100)) #[a,b]随机小数lst=[i for i in range(1,11)]
print(random.choice(lst)) #lst是列表,称为序列random.shuffle(lst)
print(lst)random.shuffle(lst)
print(lst)

time 

 

import time
now=time.time()
print(now)obj=time.localtime() #它是struct_time对象
print(obj)obj2=time.localtime(60)#60秒
print(obj2)
print(type(obj2))
print('年份:',obj2.tm_year)
print('月',obj2.tm_mon)
print('日',obj2.tm_mday)
print('时',obj.tm_hour)
print('分',obj2.tm_min)
print('秒',obj2.tm_sec)
print('星期',obj2.tm_wday)#[0,6]计算
print('今年的多少天',obj2.tm_yday)
print(time.ctime())#转化为简单容易读的字符串 wed oct 25 12:13:19 2023print(time.strftime('%Y-%m-%d',time.localtime()))#str-->字符串,f-->format
print(time.strftime('%H-%M-%S',time.localtime()))
print('%B月份的名称',time.strftime('%B',time.localtime()))
print('%A星期的名称',time.strftime('%A',time.localtime()))#字符串转成struct_time
print(time.strptime('2008-08-08','%Y-%m-%d'))
# time.struct_time(tm_year=2008, tm_mon=8, tm_mday=8, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=4, tm_yday=221, tm_isdst=-1)time.sleep(20)#休眠,程序20秒后执行
print('hello')

datetime 

 

   

from datetime import datetime
#从模块中导入类
dt=datetime.now()
print('当前的系统时间',dt)#datetime是一个类,手动创建;类的对象
dt2=datetime(2028,8,8,20,8)
print('dt2的数据类型',type(dt2),'dt2所表示的日期时间',dt2)
print('年',dt2.year,'月',dt2.month,'日',dt2.day)
print('时',dt2.hour,'分',dt2.month,'秒',dt2.second)#比较两个datetime类型对象的大小
labor_day=datetime(2028,5,1,0,0,0)
national_day=datetime(2028,10,1,0,0,0)
print('五月一日比十月一日早吗?',labor_day<national_day)#Ture#datetime类型与字符串类型进行转换
nowdt=datetime.now()
nowdt_str=nowdt.strftime('%Y/%m/%d %H:%M:%S')
print('nowdt的数据类型',type(nowdt),'nowdt所表示的数据是什么?',nowdt)
print('nowdt_str:的数据类型',type(nowdt_str),'nowdt_str所表示的数据是什么?',nowdt_str)str_datetime='2028年8月8日 20点8分'#这里要与下面的格式一样
dt3=datetime.strptime(str_datetime,'%Y年%m月%d日 %H点%M分')
print('str_datetime的数据类型',type(str_datetime),'str_datetime所表示的数据',str_datetime)
print('st3的数据类型',type(dt3),'dt3所表示的数据',dt3)

from datetime import datetime
from datetime import timedelta
#创建两个datetime类型的对象
delta1=datetime(2028,10,1)-datetime(2028,5,1)
print('deta1的数量类型',type(delta1),'delta1所表示的数据是',delta1)
print('2028年5月1日之后的153是',datetime(2028,5,1)+delta1)
# deta1的数量类型 <class 'datetime.timedelta'> delta1所表示的数据是 153 days, 0:00:00
# 2028年5月1日之后的153是 2028-10-01 00:00:00
#通过传入参数的方式
dt1=timedelta(10)
print('创建一个10天的timedelta对象',dt1)
dt2=timedelta(10,11)
print('创建一个10天11秒的timedelta对象',dt2)
# 10 days, 0:00:11

下载与爬虫有关的模块的命令:win+r-->cmd-->pip install requests

卸载命令:pip uninstall requests

升级的命令:python -m pip install --upgrade pip

requests库,用于处理HTTP(超文本传输协议)请求的第三方库。

request库中的get()函数可以打开一个网路请求,并获取一个response响应对象,

响应结果中的字符串数据可以通过响应对象的text属性获取,响应结果中的二进制数据可以通过响应对象的content属性获取。

#爬取景区的天气预报
import requests
import re #使用正则表达式的模块
url='要爬取的网址'
resp=requests.get(url)
print(resp.text)
#设置为中文的编码格式
resp.encording='utf-8'
print(resp.text)a=re.findall('以span class=''……字样的格式字符串''格式字符串',resp.text)#将提取到的数据进行打包
lst=[]
for a,b,c,d in zip(a): #a可以是很多歌任意lst.append([a,b,c,d]) #四个变量,一个列表
print(lst)
for item in lst:print(item)

在要爬取的网页里鼠标右键最下面有一个《检查》找到左上角款款带小箭头的,点击,然后选择要爬取的部分,然后在检查的代码中找到span class=''……'',看它的类型。

只要中文的模式字符串用:[\u4e00-\u9fa5]*代替相应的中文

用.*代替任意字符串

import requests
url='图片网址'
resp=requests.get(url)#保存到本地
with open('logo.png','wb') as file:#logo.png-->名字,wb-->写到本地,b-->二进制file.write(resp.content)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微信小程序实现上传照片功能
  • C#加班统计次数
  • CSS:图片间空白间距问题的解决方案
  • java Path对象和URI对象的转换
  • Python的并行任务(进程池、线程池)
  • 关于vs2022项目占用空间太大的问题
  • MongoDB未授权访问漏洞
  • 【selenium】文件上传、下载、读取
  • TF卡(SD NAND)参考设计和使用提示
  • Codeforces Round 963 (Div. 2)
  • 【Git企业级开发实战指南①】Git安装、基本操作!
  • 文件加密软件精品推荐(10款不容错过的文件加密软件)
  • 【Unity】 HTFramework框架(五十四)【进阶篇】Deployment 轻量级资源部署管线
  • VUE框架面试整理-Vuex
  • 将一批 csv 的第一行抄进 Excel
  • 5分钟即可掌握的前端高效利器:JavaScript 策略模式
  • Akka系列(七):Actor持久化之Akka persistence
  • ES6核心特性
  • Java多态
  • JS基础篇--通过JS生成由字母与数字组合的随机字符串
  • Js基础——数据类型之Null和Undefined
  • OSS Web直传 (文件图片)
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 彻底搞懂浏览器Event-loop
  • 记一次用 NodeJs 实现模拟登录的思路
  • 深入 Nginx 之配置篇
  • 我从编程教室毕业
  • 异步
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 如何在招聘中考核.NET架构师
  • ​​​​​​​ubuntu16.04 fastreid训练过程
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • $GOPATH/go.mod exists but should not goland
  • (24)(24.1) FPV和仿真的机载OSD(三)
  • (C语言)共用体union的用法举例
  • (ISPRS,2023)深度语义-视觉对齐用于zero-shot遥感图像场景分类
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (三)终结任务
  • (十三)MipMap
  • (数据大屏)(Hadoop)基于SSM框架的学院校友管理系统的设计与实现+文档
  • (完整代码)R语言中利用SVM-RFE机器学习算法筛选关键因子
  • (原创)可支持最大高度的NestedScrollView
  • .NET 3.0 Framework已经被添加到WindowUpdate
  • .net Application的目录
  • .net core 管理用户机密
  • .NET Framework 4.6.2改进了WPF和安全性
  • .NET Framework、.NET Core 、 .NET 5、.NET 6和.NET 7 和.NET8 简介及区别
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .net获取当前url各种属性(文件名、参数、域名 等)的方法
  • .Net小白的大学四年,内含面经
  • ::什么意思
  • :“Failed to access IIS metabase”解决方法
  • [ C++ ] 类和对象( 下 )