录
Web 开发正在成为 IT 中最受欢迎的领域之一,毫无疑问,JavaScript 和 Python 都是 Web 开发人员中非常流行的编程语言。这两种编程语言都有自己的优点,这使它们成为开发人员的热门选择。
然而,Python 和 JavaScript 的比较一直是开发者社区的热门讨论。它经常会产生这样的问题:python 比 javascript 难吗?python比javascript好吗?python和javascript有什么区别?javascript在Web开发中的用途是什么?等等等等。继续阅读本文,因为本文简要回答了所有这些问题,但在讨论这些编程语言在 Web 开发中的比较之前,了解什么是 Python 和 JavaScript 至关重要。
Python 是当今最好和最强大的编程语言之一。它用途广泛,是大多数科学应用的必备工具。但是,它是一种通用编程语言,支持不同的编程范式。
这种编程广泛用于科学领域,包括数据科学、人工智能、计算机视觉 (CV)、DIP(数字图像处理)、自然语言处理和 Web 开发。Python 的语法非常简单。这就是为什么很多人认为 python 比 javaScript 好得多的原因。
在 web 开发的背景下,有一个流行的问题:python 是用于前端还是后端?答案是python主要用于后端。这是我们可以将其功能和能力与 JavaScript 进行比较的地方。但是,需要注意的是,Python 不仅限于后端开发,还可以在一些附加工具的帮助下用于前端开发。
虽然 Python 是后端开发的绝佳选择,但 JavaScript 是首选,并且通常被称为 Web 应用程序前端开发的编程语言。
在这里了解后端和前端开发之间的区别很重要。Web 应用程序的后端是用户无法访问且用户不直接与其交互的部分。它包含 Web 应用程序的所有业务逻辑和服务器端编程。
另一方面,Web 应用程序的前端是最终用户与之交互的部分。这是用户可以访问的应用程序的一部分。即使您正在与移动应用程序交互,您也很可能正在与 React.js(一个 JavaScript 框架)进行交互,它能够开发能够适应不同平台的应用程序。
现在,由于我们已经清楚地了解了 JavaScript 和 Python,我们可以更深入地挖掘它们的差异化因素。
我们可以根据不同的理由来区分这两种编程语言。python 和 JavaScript 都有各自的优缺点。因此,让我们立即开始吧。
首先,重要的是要注意开发人员社区对这两种编程语言的看法。确定开发人员选择的最佳矩阵是评估这些编程语言的流行程度。
根据Stack Overflow 的 2020 年开发者调查,JavaScript 在最常用的编程语言列表中名列前茅。根据调查的详细信息,几乎 69.7% 的开发社区使用 JavaScript。相比之下,Python 的普及率在 41.7% 的开发者中。
JavaScript 流行的一个原因是它的工作可以广泛使用。此外,它不仅可用于 Web 开发,而且 JavaScript 还可用于移动应用程序开发,这使其成为开发社区中的热门选择。
性能是开发网站时要牢记的最重要因素之一。如果应用程序不够高效,它几乎是无用的。这就是新的编程语言试图灌输尽可能多的效率和优化的原因。
然而,这并不容易,而是一项非常棘手的任务。这也取决于用于开发的编程语言。因为每种编程语言都有自己的内置规则和方法来提高效率。
Web 应用程序的速度取决于 Web 应用程序中代码的执行速度。构建 JavaScript 的目的是在 Web 浏览器上快速运行。这就是 Facebook、Google、Amazon 等应用程序使用 JavaScript 的原因。
如果将 Python Web 应用程序与 Node.js Web 应用程序进行比较,Node.js 肯定会胜过 Python。因为据专家介绍,Python 在单个流中处理请求,但 JavaScript 可以利用其先进的多线程功能一次处理多个请求。
对于一个人来说,Web 应用程序的可扩展性就像氧气一样是生存所必需的。考虑一个应用程序,该应用程序响应速度快、交互性强,并提供非常需要的服务。但是,它无法同时处理大量请求。这将导致网络流量下降,因为如果用户打开一个网站并且它没有按需要响应或经常崩溃,但用户最终也会寻找其他一些快速的替代方案。
因此,应用程序的可扩展性非常重要。因为可伸缩性允许应用程序一次处理大量的流量和请求。为了支持可扩展性,多线程是一个非常可行的解决方案。但是 Python 不支持多线程,因为它适用于单线程系统。相反,它使用全局解释器锁来一次处理多个请求。
相反,Node.js 纯粹是为了支持异步编程而开发的。因此,JavaScript 在 Web 应用程序可扩展性方面表现出色。但是,Python 也可以通过上述方式实现可扩展性。
内存管理是另一个需要考虑的重要方面。如果一种编程语言不能有效地管理内存,将直接影响网站的优化。
在 Python 中,所有变量和数据结构都收集在一个堆中。Python 也有它的内部内存管理器来确保对这个堆的管理。
但是,JavaScript 使用一种称为 GC(垃圾收集器)的自动内存管理工具。但是,GC 的管理工作在一个近似算法上,因为它无法知道某个内存位置是否无用。
编程语言的范围定义了它的多功能性。如果我们谈论 Python 的应用程序或用例,我们就会知道 Python 用于后端的 Web 开发。它在软件开发、计算和脚本系统中也非常有用。它在数据科学和机器学习中非常流行。
相比之下,JavaScript 也支持所有这些类型的软件开发。JavaScript 相对于 python 的最大优势在于,它不仅是一种前端语言,而且在开发应用程序的服务器端逻辑时也能工作得非常好。此外,JavaScrip 还用于开发移动应用程序,目前 Python 不支持。React.js 是流行的移动应用程序开发框架之一。
根据上面进行的讨论,很明显这两种语言都有自己的优缺点。几乎不可能质疑 Python 是否会取代 JavaScript,反之亦然。
对于 JavaScript 和 Python,开发人员的选择将基于所考虑平台的要求。例如,当语言的设计至关重要时,Python 是您的选择。如果需要移动开发和高度响应的网站,那么 JavaScript 是您的选择。
更全面地说,如果所需的应用程序必须具有可扩展性和高效性,那么 JavaScript 是正确的选择。而如果网站后台非常复杂,可读性好,又要求编程简单,可以选择Python。
请耐心慢慢刷新到页面完整显示出来
https://fjxasdf.github.io/daogou/
原文章https://www.toutiao.com/i6711294610594857476/
1.显示商品图片
2.没有显示全部商品,只显示热门商品,避免数据、图片加载太慢
3.样式稍微美化了
4.上传到GitHub,不过GitHub很卡,要刷新等好久才能看到
import xlrd from datetime import date,datetime import json file='精选优质商品清单(内含优惠券).xls' def read_excel(): wb=xlrd.open_workbook(filename=file)#打开文件 # print(wb.sheet_names())#获取所有表格名字 sheet1=wb.sheet_by_index(0)#通过索引获取表格 # sheet2=wb.sheet_by_name('Page1')#通过名字获取表格 # print(sheet1) # print(sheet2) # print(sheet1.name) #表 名 rows=sheet1.nrows #多少行 # print(sheet1.ncols) #多少列 # rows=sheet1.row_values(1)#获取行内容 category0=sheet1.col_values(4)#获取列内容(类目) del category0[0] category=sorted(set(category0),key=category0.index) #类目列表->去重 data=[] data_hot=[] # print(rows) # print(cols) for i,v in enumerate(category): category[i]=v.replace("/", "、")#吧"/"替换"、" data.append([category[i],[]]) jsonData=json.dumps(category, ensure_ascii=False) with open('./daogou/category.json', 'w',encoding="utf-8") as f: f.write(jsonData)#保存分类json for i,v in enumerate(data): for x in range(rows): if v[0]==(sheet1.cell(x,4).value.replace("/", "、")): xo=sheet1.row_values(x) y=[xo[1],xo[2],xo[4],xo[6],xo[21]] #选择保存商品名称、图片、链接等 data[i][1].append(y) if x>0 and float(sheet1.row_values(x)[9]) >=1: #选择佣金多的作为热门 xo=sheet1.row_values(x) y=[xo[1],xo[2],xo[4],xo[6],xo[21]] data_hot.append(y) data_hot=data_hot[:24] jsonData_hot=json.dumps(data_hot, ensure_ascii=False) with open('./daogou/results_hot.json', 'w',encoding="utf-8") as f: f.write(jsonData_hot)#保存热门商品json for i,v in enumerate(data): jsonData=json.dumps(v[1], ensure_ascii=False) with open('./daogou/'+v[0]+'.json', 'w',encoding="utf-8") as f: f.write(jsonData)#保存每个分类商品json # jsonData1=json.dumps(data, ensure_ascii=False) # with open('results.json', 'w',encoding="utf-8") as f: # f.write(jsonData1) # print(sheet1.cell(0,0).value)#获取表格里的内容,第一行第一个格内容 # print(sheet1.cell_value(0,0))#获取表格里的内容,第一行第一个格内容 #print(sheet1.row(0)[0].value)#获取表格里的内容,第一行第一个格内容 if __name__=='__main__': read_excel()
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="../js/jquery.min.js"></script> <link rel="stylesheet" href="../font/Alibaba-PuHuiTi-Regular.css"> <script> var navo=''; var info=''; var data_total;//总数据 function color16(){//十六进制颜色随机 var r=Math.floor(Math.random()*256); var g=Math.floor(Math.random()*256); var b=Math.floor(Math.random()*256); var color='#'+r.toString(16)+g.toString(16)+b.toString(16); return color; } function nav_href(title,id){//锚跳转 if ($('#'+title).length>0) { location.href="#"+title; }else{ var div_title="<div id='"+title+"' style='float:left;'>"; var div_content="<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>"+title+"</b><\/div>"; $('#load').show(); $.get('./'+title+'.json', function(data) { $.each(data, function(index, val) { div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>"; if ((index+1)==data.length) { var div_footer="</div><br>"; infoo=div_title+div_content+div_footer; $('#content').append(infoo); location.href="#"+title; $('#load').hide(); } }); },'json'); } } function get_data(){ $.get('./category.json', function(data) {//导航 $.each(data, function(index, val) { // console.log(val[0]); navo+="<a class='nav' href=javascript:;nav_href(\'"+val+"\',"+index+")>"+val+"</a> "; }); $('#nav').html(navo); $.get('./results_hot.json', function(data) {//热门商品 var div_title="<div id='热门商品' style='float:left;'>"; var div_content="<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>热门商品</b></span><\/div>"; $.each(data, function(index, val) { // console.log(val); div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>" // if (index==3) {return false} }); var div_footer="</div><br>"; info+=div_title+div_content+div_footer; $('#content').html(info); $('#load').hide(0); }); },'json'); } </script> <style> #body{ /*border: 1px solid #eee;*/ width: 1110px; margin:0 auto; } a.nav{ text-decoration: none; margin-right: 10px; padding: 0 5px; /*padding-bottom: 10px;*/ display: inline-block; color: #000; font-weight: 700; } #nav{ display: inline-block; } *,html,body{ font-family:"Alibaba-PuHuiTi-Regular"; } #content{ margin-top: 10px; display: inline-block; } .money{ width: 100%; /* padding: 0px 10px; */ background: #ffffffcc; position: absolute; left: 0; bottom: 50px; height: 30px; line-height: 30px; color: #F40; font-weight: 700; /* border-radius: 0 8px 0 0; */ text-align: left; font-size: 18px; } .title{ width: 100%; font-weight: 700; /* padding: 0px 10px; */ background: #ffffffcc; position: absolute; left: 0; bottom: 0; height: 50px; line-height: normal; color: #000; /* border-radius: 0 8px 0 0; */ text-align: left; font-size: 15px; } .pro_img{ position: relative; float: left; width: 220px; height: 220px; line-height: 220px; text-align: center; border: 1px solid #eee; cursor: pointer; font-size: 30px; /*white-space:normal; */ overflow:hidden; /*超过部分不显示*/ text-overflow:ellipsis; /*超过部分用点点表示*/ /* white-space:nowrap;/*不换行*/ } .input1{ width: 300px; height: 30px; border: 1px solid #888; border-radius: 10px 0 0 10px; outline-style: none ; } .button1{ margin-left: -7px; width: 50px; height: 34px; border-radius:0 10px 10px 0 ; outline-style: none ; } #search1{ /*width: 350px;*/ /*margin:0 auto;*/ } #load{ position: fixed; width: 100%; height: 100%; top: 0; left: 0; background: #000000ad; z-index: 999; text-align: center; vertical-align: middle; } #load>span{ display: inline-block; vertical-align: middle; height: 100%; } .load{ display: inline-block; vertical-align: middle; font-size: 50px; color: #FFF; } </style> </head> <body onload="get_data()"> <!-- loading --> <div id="load"> <span ></span> <div class="load">加载中...</div> </div> <div id="body"> <h1>网站仅学习交流!!网站中的商品信息均来自于互联网。</h1> <!-- <div id="search1"> <input type="text" class="input1"> <button class="button1">搜索</button><b> 网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!</b> </div> --> <div id="nav"></div> <div id="content"></div> </div> </body> </html>
文共6260字,预计学习时长13分钟
不了解任何网页框架?没关系,本文将教你如何轻松搞定从数据科学项目到超棒程序的无缝转换。
图片来源:Cody Black Unsplash
稍作休息,开始编码。
机器学习项目只有充分展示给公众时才称得上是完整的项目。
过去在介绍数据科学项目时,选择合适的可视化操作或简单的PPT就足够了,但现在随着像RShiny和Dash这类仪表盘化工具的出现,一名合格的数据科学家也需要掌握一定的Web框架的知识。
可Web框架也不是块好啃的骨头。笔者在尝试一些看似简单的操作时,仍会被HTML、CSS和Javascript等搞得晕头转向,于数次实践中尝遍失败的滋味。
对数据科学同胞们来说,Web开发只是次要技能,所以更别提尝试多种途径做这一件事了,会让这些人不知所措的。
那我们就注定避免不了Web框架的学习之路吗?还是说大半夜的给开发人员打电话问一些很蠢的问题?
于是StreamLit带着自身的使命出现了,它仅借助Python就能够创建Web应用程序。
Python的宗旨:简单胜于复杂,而Streamlit创建应用程序则完美地诠释了其易操作性。
这篇文将为大家讲解何使用Streamlit来创建支持数据科学项目的应用程序。
安装
安装步骤跟运行指令一样简单:
pip install streamlit
查看是否安装成功时只需运行:
streamlit hello
屏幕上应该显示的是:
可以在浏览器中访问本地URL:localhost:8501,来查看执行中的Streamlit应用程序。开发人员那里也有许多很棒的样本可供尝试。
Streamlit“你好,世界”
Streamlit旨在通过简单的Python代码实现简单的程序开发。
那就设计一款简单的应用程序,看看它是否真的像它说的那样。
从Streamlit的名为“hello,world”的程序入手,这个程序并不复杂。只需要复制粘贴下面这个代码到“helloworld.py”的文件夹中即可。
import streamlit as st
x=st.slider('x')
st.write(x, 'squared is', x * x)
然后到最后运行阶段时:
streamlit run helloworld.py
看吧,浏览器连接到localhost:8501,就可以看到执行中的程序,滑动鼠标就可以得到结果。
简单的滑块插件应用程序
操作非常简单。在构建上图应用程序时,用到了Streamlit的两个特性:
? st.slider插件——滑动改变Web应用程序的输出内容。
? 以及通用的st.write 指令。笔者对于它能从图标、数据框和简单的文本中编写任何东西感到惊讶。后面会有详细介绍。
敲黑板:大家要记住每次改变插件值时,整个应用程序都会由上至下运行。
Streamlit插件
插件提供了控制应用程序的方法,阅读了解插件的最佳选择就是API参考文档,不过笔者这里也会讲解一些插件,它们都是用户在操作后期会用的最主要的插件。
1. 滑块
streamlit.slider(label, min_value=None, max_value=None, value=None, step=None, format=None)
在上文已经目睹了st.slider的执行过程,它可以结合min_value、max_value使用,用于进一步得到一定范围内的输入内容。
2. 文本输入
获取用户输入最简单的方式是输入URL或一些用于分析情绪的文本内容,需要的只是一个用来命名文本框的标签。
import streamlit as st
url=st.text_input('Enter URL')
st.write('The Entered URL is', url)
看到的程序将是这样:
简单的text_input widget程序
贴士:可以只改变helloworld.py文件然后刷新页面。笔者的做法是打开该文件然后在文本编辑器中改动,再一点一点查看变动的地方。
3. 复选框
复选框的一个功能就是隐藏或显示/隐藏程序中的特定区域,另一个用途是设置函数的布尔参数值。st.checkbox() 需要一个参数,即插件标签。在该应用程序中,复选框会用来切换条件语句。
import streamlit as st
import pandas as pd
import numpy as np
df=pd.read_csv("football_data.csv")
if st.checkbox('Show dataframe'):
st.write(df)
简单的复选框插件应用程序
4. 下拉框插件
通过st.selectbox可以在一系列选项或列表中进行选择。常见的用法是将其作为下拉项然后从名单中挑选值。
import streamlit as st
import pandas as pd
import numpy as np
df=pd.read_csv("football_data.csv")option=st.selectbox(
'Which Club do you like best?',
df['Club'].unique())
'You selected: ', option
简单的下拉框/复选框插件程序
5. 多选插件
也可以用下拉框内的多个值。这里讲的是使用 st.multiselect在变量选选中获取多个值作为列表。
import streamlit as st
import pandas as pd
import numpy as np
df=pd.read_csv("football_data.csv")
options=st.multiselect(
'What are your favorite clubs?', df['Club'].unique())
st.write('You selected:', options)
简单的下拉框插件应用程序
一步步创建应用程序
重要插件了解的也差不多了,现在马上要用多个插件创建应用程序。
从简单的步骤入门,尝试使用Streamlit对足球数据进行可视化。有了上面那些插件,这个步骤执行起来会容易很多。
import streamlit as st
import pandas as pd
import numpy as np
df=pd.read_csv("football_data.csv")
clubs=st.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities=st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
# Filter dataframe
new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
# write dataframe to screen
st.write(new_df)
简单的应用程序会是这样的:
同时使用多个插件
这一点也不难,但目前看起来似乎太基础了。是否可以考虑加入一些图表呢?
Streamlit当前支持许多用于绘图的库,其中就有Plotly, Bokeh, Matplotlib, Altair和Vega图表。Plotly Express也可以,只不过没有详细说明。也存在一些内嵌式图表,相当于Streamlit“自带”的,比如st.line_chart 和st.area_chart.
此时会用到plotly_express,下面是设计程序会用到的代码。该过程只会调用Streamlit四次。剩下的都是一些简单的Python代码操作。
import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
df=pd.read_csv("football_data.csv")
clubs=st.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities=st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# create figure using plotly express
fig=px.scatter(new_df, x='Overall',y='Age',color='Name')
# Plot!
st.plotly_chart(fig)
添加图表
改进
在本文一开始有提到插件每次发生变动时,整个应用程序就会由上至下地运行。其实并不可行,因为创建的应用程序会保留下深度学习模型或复杂的机器学习模型。接下来在讲Streamlit的缓存时会向读者阐释这一点。
1. 缓存
在这个简单的程序里,但凡值有所变动时,数据科学家们就会反复浏览数据框。它比较适用于用户手中的小规模数据,至于大规模或需要进行很多步处理的数据,它是不予理睬的。接下来在Streamlit中通过st.cache装饰器函数体验缓存的功能吧。
import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
df=st.cache(pd.read_csv)("football_data.csv")
或者是复杂一些、时间耗费久一些的函数,只需要运行一次,此时可以用:
@st.cache
def complex_func(a,b):
DO SOMETHING COMPLEX
# Won't run again and again.
complex_func(a,b)
用Streamlit的缓存装饰器标记函数时,无论这个函数是否执行,都会检查输入的参数值(由该函数处理的)。
如果Streamlit之前没有处理过这些数据,它会调用函数并将运算结果存到本地缓存中。
下次再调用函数时,倘若还是这些参数,Streamlit就会完全跳过这一块的函数执行,直接用缓存器里的结果数据。
2. 侧边栏
为了根据个人的倾向需求使界面更加简洁,用户可能会想着把插件移动到侧边栏内,比如像Rshiny仪表盘。这非常简单,只需在插件代码中添加 st.sidebar即可。
import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px
df=st.cache(pd.read_csv)("football_data.csv")
clubs=st.sidebar.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities=st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())
new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# Create distplot with custom bin_size
fig=px.scatter(new_df, x='Overall',y='Age',color='Name')
# Plot!
st.plotly_chart(fig)
将插件移动到侧边栏内
3. Markdown标记语言可以吗?
笔者特别喜欢在Markdown里编辑文字,因为发现相比HTML,它少了那些繁琐的操作,而且更能胜任数据科学的任务。所以读者也能在Streamlit程序中应用Markdown吗?
答案是可以。而且是有迹可循的。在笔者看来,最合适的就是调用Magic指令。通过该指令,用户做标记语言就会像写评论一样简单。用户也可以使用指令st.markdown。
import streamlit as st
import pandas as pd
import numpy as np
import plotly_express as px'''
# Club and Nationality App
This very simple webapp allows you to select and visualize players from certain clubs and certain nationalities.
'''
df=st.cache(pd.read_csv)("football_data.csv")
clubs=st.sidebar.multiselect('Show Player for clubs?', df['Club'].unique())
nationalities=st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]
st.write(new_df)
# Create distplot with custom bin_size
fig=px.scatter(new_df, x='Overall',y='Age',color='Name')
'''
### Here is a simple chart between player age and overall
'''
st.plotly_chart(fig)
最终的样品
总结
Streamlit已经介绍了整个创建应用程序的步骤,笔者真没什么可补充的了。
这篇文章中讲述了一个简单网页程序的创建,但有太多未知数了。举个例子,在Streamlit网站碰到GAN时,只会选择插件和缓存的指导思想。
笔者对程序的默认颜色和风格很喜爱,而且发现这用起来比Dash还顺手,笔者创建新程序之前一直用的是Dash。读者们也可以在自己的Streamlit程序中加上音频和视频项。
最重要的是,Streamlit是一款免费的开源软件,而不是开箱即用的私人网络应用。
以前笔者遇到任何变动或问题,都需要请教身边的程序猿朋友;而现在,完全不会这么麻烦了。
笔者的目标是从现在开始,在工作流中多用这个程序。即便是不难的任务,也会考虑用它,笔者觉得你也可以。
虽然笔者还未曾想过在生产环境下它执行的好坏,但对于概念项目和演示的小型验证来说,它算得上是福音了。笔者的目标是从现在开始,在工作流中多用这个程序。即便是不难的任务,也会考虑用它,笔者觉得你也可以。
完整代码:https://github.com/MLWhiz/streamlit_football_demo
留言 点赞 关注
我们一起分享AI学习与发展的干货
如需转载,请后台留言,遵守转载规范
*请认真填写需求信息,我们会在24小时内与您取得联系。