Python(模块)

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

import导入方式的语法结构:

import模块名称【as别名】

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

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

python 复制代码
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

python 复制代码
name='xx'
age=18
def info():
    print(f'姓名:{name},年龄:{age}')
python 复制代码
#通配符
from test2 import *
from add import *
#导入模块中具有同名的变量和函数,后导入的会将之前导入的进行覆盖
print(name)
info()

#如果不想覆盖,解决方案,可以使用import
import test2
import add
#使用模块中的函数或变量时,模快名打点调用
test2.info()
add.info()

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

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

init.py文件内容

python 复制代码
print('xxx')
print('yyy')

my_admin.py文件

python 复制代码
def info():
    print("abc")
name='xx'

add.py

python 复制代码
import admin.my_admin as a #包名.模块名
a.info()

#结果
# xxx
# yyy
# abc

print('-'*40)
from admin import my_admin as b #from 包名 import 模块 as 别名
b.info()

# abc

print('-'*40)
from admin.my_admin import info #from模块名称,import变量/函数/类/*(*是通配符)
info()
# abc

from admin.my_admin import *
print(name)
# xx

被调用文件的内容

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

调用文件的内容:

python 复制代码
import test2

random

python 复制代码
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

python 复制代码
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 2023

print(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

python 复制代码
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)
python 复制代码
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属性获取。

python 复制代码
#爬取景区的天气预报
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]*代替相应的中文

用.*代替任意字符串

python 复制代码
import requests
url='图片网址'
resp=requests.get(url)

#保存到本地
with open('logo.png','wb') as file:#logo.png-->名字,wb-->写到本地,b-->二进制
    file.write(resp.content)
相关推荐
databook11 小时前
Manim实现闪光轨迹特效
后端·python·动效
Juchecar12 小时前
解惑:NumPy 中 ndarray.ndim 到底是什么?
python
用户83562907805112 小时前
Python 删除 Excel 工作表中的空白行列
后端·python
Json_12 小时前
使用python-fastApi框架开发一个学校宿舍管理系统-前后端分离项目
后端·python·fastapi
数据智能老司机19 小时前
精通 Python 设计模式——分布式系统模式
python·设计模式·架构
数据智能老司机20 小时前
精通 Python 设计模式——并发与异步模式
python·设计模式·编程语言
数据智能老司机20 小时前
精通 Python 设计模式——测试模式
python·设计模式·架构
数据智能老司机20 小时前
精通 Python 设计模式——性能模式
python·设计模式·架构
c8i20 小时前
drf初步梳理
python·django
每日AI新事件20 小时前
python的异步函数
python