做網(wǎng)站架構(gòu)圖互聯(lián)網(wǎng)推廣渠道有哪些
模塊編寫完成就可以被其他模塊進(jìn)行調(diào)用并使用被調(diào)用模塊的功能。
import導(dǎo)入方式的語法結(jié)構(gòu):
import模塊名稱【as別名】
from……import導(dǎo)入方式的語法結(jié)構(gòu):
from模塊名稱,import變量/函數(shù)/類/*(*是通配符)
import test2 #自己創(chuàng)建一個(gè)test2.py文件就不會報(bào)錯(cuò)了,也可以修改名字,只要是。py結(jié)尾的就好
print(test2.name) #在test2文件中寫入代碼:name='xx'
test2.info()
#在test2文件中寫入:
# def info():# print(f'hhh_{name}')import test2 as a
print(a.name)
a.info()
#這兩種情況的結(jié)果完全一樣#(2)from..import
from test2 import name #導(dǎo)入的是一個(gè)具體的變量名稱
print (name)
# info() #NameError: name 'info' is not defined
from test2 import info
info()#通配符
from test2 import *
#以上代碼可以導(dǎo)入模塊中的所有
print(name)
info()#同時(shí)導(dǎo)入多個(gè)模塊
import math,time,random
新建文件:
?add.py
name='xx'
age=18
def info():print(f'姓名:{name},年齡:{age}')
#通配符
from test2 import *
from add import *
#導(dǎo)入模塊中具有同名的變量和函數(shù),后導(dǎo)入的會將之前導(dǎo)入的進(jìn)行覆蓋
print(name)
info()#如果不想覆蓋,解決方案,可以使用import
import test2
import add
#使用模塊中的函數(shù)或變量時(shí),??烀螯c(diǎn)調(diào)用
test2.info()
add.info()
模塊可以避免函數(shù)內(nèi)變量名稱相沖突的問題
包可以避免模塊名稱相沖突的問題
init.py文件內(nèi)容
print('xxx')
print('yyy')
my_admin.py文件?
def info():print("abc")
name='xx'
add.py
import admin.my_admin as a #包名.模塊名
a.info()#結(jié)果
# 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變量/函數(shù)/類/*(*是通配符)
info()
# abcfrom admin.my_admin import *
print(name)
# xx
被調(diào)用文件的內(nèi)容
# name='xx'
# print(name)
if __name__=='__main__':#阻止了全局變量的直接調(diào)用name='xx'print(name)#在導(dǎo)入其他模塊時(shí)不希望執(zhí)行的代碼,就放在這里
調(diào)用文件的內(nèi)容:
import test2
random?
import random
random.seed(10)
print(random.random())#0.5714025946899135#[0.0,1.0)
print(random.random())#0.4288890546751146
#按住ctrl點(diǎn)擊random()可以查看內(nèi)置文件random.py,在這里標(biāo)量的一行,重復(fù)以上步驟,可以調(diào)出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行代碼執(zhí)行了10次print(random.uniform(1,100)) #[a,b]隨機(jī)小數(shù)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('時(shí)',obj.tm_hour)
print('分',obj2.tm_min)
print('秒',obj2.tm_sec)
print('星期',obj2.tm_wday)#[0,6]計(jì)算
print('今年的多少天',obj2.tm_yday)
print(time.ctime())#轉(zhuǎn)化為簡單容易讀的字符串 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()))#字符串轉(zhuǎn)成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秒后執(zhí)行
print('hello')
datetime?
?
? ?
from datetime import datetime
#從模塊中導(dǎo)入類
dt=datetime.now()
print('當(dāng)前的系統(tǒng)時(shí)間',dt)#datetime是一個(gè)類,手動(dòng)創(chuàng)建;類的對象
dt2=datetime(2028,8,8,20,8)
print('dt2的數(shù)據(jù)類型',type(dt2),'dt2所表示的日期時(shí)間',dt2)
print('年',dt2.year,'月',dt2.month,'日',dt2.day)
print('時(shí)',dt2.hour,'分',dt2.month,'秒',dt2.second)#比較兩個(gè)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類型與字符串類型進(jìn)行轉(zhuǎn)換
nowdt=datetime.now()
nowdt_str=nowdt.strftime('%Y/%m/%d %H:%M:%S')
print('nowdt的數(shù)據(jù)類型',type(nowdt),'nowdt所表示的數(shù)據(jù)是什么?',nowdt)
print('nowdt_str:的數(shù)據(jù)類型',type(nowdt_str),'nowdt_str所表示的數(shù)據(jù)是什么?',nowdt_str)str_datetime='2028年8月8日 20點(diǎn)8分'#這里要與下面的格式一樣
dt3=datetime.strptime(str_datetime,'%Y年%m月%d日 %H點(diǎn)%M分')
print('str_datetime的數(shù)據(jù)類型',type(str_datetime),'str_datetime所表示的數(shù)據(jù)',str_datetime)
print('st3的數(shù)據(jù)類型',type(dt3),'dt3所表示的數(shù)據(jù)',dt3)
from datetime import datetime
from datetime import timedelta
#創(chuàng)建兩個(gè)datetime類型的對象
delta1=datetime(2028,10,1)-datetime(2028,5,1)
print('deta1的數(shù)量類型',type(delta1),'delta1所表示的數(shù)據(jù)是',delta1)
print('2028年5月1日之后的153是',datetime(2028,5,1)+delta1)
# deta1的數(shù)量類型 <class 'datetime.timedelta'> delta1所表示的數(shù)據(jù)是 153 days, 0:00:00
# 2028年5月1日之后的153是 2028-10-01 00:00:00
#通過傳入?yún)?shù)的方式
dt1=timedelta(10)
print('創(chuàng)建一個(gè)10天的timedelta對象',dt1)
dt2=timedelta(10,11)
print('創(chuàng)建一個(gè)10天11秒的timedelta對象',dt2)
# 10 days, 0:00:11
下載與爬蟲有關(guān)的模塊的命令:win+r-->cmd-->pip install requests
卸載命令:pip uninstall requests
升級的命令:python -m pip install --upgrade pip
requests庫,用于處理HTTP(超文本傳輸協(xié)議)請求的第三方庫。
request庫中的get()函數(shù)可以打開一個(gè)網(wǎng)路請求,并獲取一個(gè)response響應(yīng)對象,
響應(yīng)結(jié)果中的字符串?dāng)?shù)據(jù)可以通過響應(yīng)對象的text屬性獲取,響應(yīng)結(jié)果中的二進(jìn)制數(shù)據(jù)可以通過響應(yīng)對象的content屬性獲取。
#爬取景區(qū)的天氣預(yù)報(bào)
import requests
import re #使用正則表達(dá)式的模塊
url='要爬取的網(wǎng)址'
resp=requests.get(url)
print(resp.text)
#設(shè)置為中文的編碼格式
resp.encording='utf-8'
print(resp.text)a=re.findall('以span class=''……字樣的格式字符串''格式字符串',resp.text)#將提取到的數(shù)據(jù)進(jìn)行打包
lst=[]
for a,b,c,d in zip(a): #a可以是很多歌任意lst.append([a,b,c,d]) #四個(gè)變量,一個(gè)列表
print(lst)
for item in lst:print(item)
在要爬取的網(wǎng)頁里鼠標(biāo)右鍵最下面有一個(gè)《檢查》找到左上角款款帶小箭頭的,點(diǎn)擊,然后選擇要爬取的部分,然后在檢查的代碼中找到span class=''……'',看它的類型。
只要中文的模式字符串用:[\u4e00-\u9fa5]*代替相應(yīng)的中文
用.*代替任意字符串
import requests
url='圖片網(wǎng)址'
resp=requests.get(url)#保存到本地
with open('logo.png','wb') as file:#logo.png-->名字,wb-->寫到本地,b-->二進(jìn)制file.write(resp.content)