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)
相关推荐
封步宇AIGC17 分钟前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘
封步宇AIGC20 分钟前
量化交易系统开发-实时行情自动化交易-Okex交易数据
人工智能·python·机器学习·数据挖掘
小爬虫程序猿22 分钟前
如何利用Python解析API返回的数据结构?
数据结构·数据库·python
波点兔24 分钟前
【部署glm4】属性找不到、参数错误问题解决(思路:修改模型包版本)
人工智能·python·机器学习·本地部署大模型·chatglm4
一点媛艺3 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风3 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
奋斗的小花生4 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功4 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
闲晨4 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
_.Switch5 小时前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops