2018年3月6日星期二

Magento技术架构简介

Magento的架构在总体上遵循MVC的模式,传统的MVC工作方式如下:
traditional mvc architecture
为了更好的支持大型电子商务网站的建设,Magento在MVC的各个层面扩展了一些子系统,以使得同一个后台可管理多个多店铺多站点
Magento的视图层拆分为3个部分,模型层拆分为2个部分,在控制层新添加了一个Helper扩展,helpers是模块相关的,如下图:
Magento Architecture
视图层的templates基本上是混有php标签的html文件。这里有一个新的概念即区块(Block),这是什么呢?主要是为了减少主页面控制器的负担以及降低视图中各个区块的耦合度。这很重要,尤其是关系到界面组件化和Ajax区域刷新技术的使用。这样每个区块拥有它们自己的视图、控制器并直接和数据交互,并且区块之间可以嵌套。比如一个网页拥有一个root区块,header区块,导航区块以及内容区块和footer区块。那么主控制器究竟负责什么呢?主控制器实际上主要是用来控制布局(Layout),布局决定了区块(以及其使用的视图模版)之间的关联关系,如位置、嵌套。主控制器以及helpers为全局页面提供服务,而子控制器为各自的区块服务。最后,模型包含Models以及集合(collections)。Models像一个服务层那样工作,提供各种业务计算和数据处理功能;而集合是对数据存取接口的封装
Magento MVC Flow

跨境电商未来的趋势2018 TomGuo|林子超博客

跨境电商未来的趋势,我这边从个人创业者的角度出来来说吧
1 零售,例如最火的Amazon,不再适合轻资产创业,当你单量起来以后,会有很多的库存,备货
将是一个重资产的模式,其实并不止跨境电商,电商实际上已经进入重资产运营那个阶段
以前那种,卖一单,发一单的情况已经不复存在,实际必须要有一定的囤货,才有办法做好

2 批发,现在大家知道批发的网站大概就是阿里巴巴,而且阿里巴巴的效果,越来越差,订单碎片化严重,每年的服务费,阿里P4P,还有剧烈的价格战,已经让太多商家无利可图,个人创业,从这里是好起步,但是靠太大的运气成分,当然,有产品优势的厂家,依旧很滋润,因为做电商,只要流量在,剩下的是转化问题

3 独立站,很多做工厂的,做amazon的,并不知道独立站的威力,实际上,google上购物的人,比任何平台上的人都多了多,因为国外市场的信用体系,靠的是信用卡,而不像国内的信用体系,只有平台类,比如天猫京东,才能客户信任,很多客户是相信独立站的,即使你没有什么品牌,但是你的产品是他们需求的,他们就很可能直接下单给你,你可以选择自发货,这样风险要小很多

4 当然,独立站如果拿来做B2B,我认为是最健康的,首先,B端用户一半有良好的采购计划和理智
当你引入非常多的B端客户群,而且把产品和服务做好了以后,你很可能就会在细分行业里面成为一个小品牌,通过年复一年的积累,积累出一批的用户。而在这之前,你需要掌握的,就是如何做流量,可以用B2C的思维来做B2B,流量思维,转化思维。我认为这个是将来最容易创业成功的方式

信不信,这些,我都尝试过了。
目前我想做的,就是找B端的产品,养一个B端的网站。
接下去每一篇干货,我都要写这句话。

2018年3月4日星期日

【Python】从爬虫开始吧——爬取妹子图整站

首先得解决环境和工具的问题
Python基础教程
Python3基础教程
大家也可以去慕课网看视频学习哦,关于选择Python2还是Python3的问题,上手的话还是直接选择3吧。

关于爬虫

爬虫就是在互联网中执行爬取有用信息的程序,总的工作流程如下:
找到爬虫入口->获取目标链接->下载网页-> 解析网页 -> 获取价值信息 ->存库(文件保存)操作
首先给自己一个伟大的小目标吧!或许明天的UC头条就是,震惊!一16岁编程奇才爬取某社区2亿条用户数据。这里写图片描述

开始吧

我们的目标就从一个图片网站开始吧,坐好啦,老司机要发车了 –> mzitu.com
这里写图片描述
http://www.mzitu.com/all 每日更新页面给了我们一个很好的爬虫入口,良心站长,F12进入浏览器调试模式,更方便开发人员观察
这里写图片描述
这里写图片描述
找到入口和目标链接之后开始下载网页
# -*- coding: UTF-8 -*-
from urllib import request

#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}

#读取一个网页
def getHtml(url):
    req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问
    page = request.urlopen(req)
    html = page.read()
    return html.decode('utf-8')  # python3 python2版本直接返回html

print(getHtml(src))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

urllib.request.urlopen()请求你个网页,是不是so easy,各位看官,你老厉害了。
拿到这个入口网页之后,我们顺着主线走,不要迷路了,那么入口网页里面用有的价值是什么了,当然是妹子,恩我们要奔着套路地址去,这里我们需要用到beautifulsoup4 ,当然高手一般都是使用正则表达式的,可是菜鸟真的合适吗,虽然bs4效率低一点,但是对开发人员友好啊。获取bs4方法,前提是你需要配置好python和pip(pip工具是python自带的)的环境变量,这里不赘述了
pip install beautifulsoup4
好了,继续前行吧。去拿到我们的子目标,首先我们得明确子目标

# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup

#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}

#读取一个网页
def getHtml(url):
    req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问
    page = request.urlopen(req)
    html = page.read()
    return html.decode('utf-8')  # python3 python2版本直接返回html

#从入口爬取所有的目标链接
def getallUrl(html):
    #构造一个bs对象
    soup = BeautifulSoup(html, 'html.parser')
    #使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的get
    all = soup.find('div',class_='all').find_all('a')
    for li in all:
        print(li)

getallUrl(getHtml(src))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
这里写图片描述
行了,我们又有目标了,遍历这些目标,最后在子目标里面寻找最终目标,对最终目标进行存库(文件操作)即可完成我们这次探险了!

最后一段旅程需要各位生手自行探索,老衲先行告退。对了,地图拿走不谢:
# -*- coding: UTF-8 -*-
from urllib import request
from bs4 import BeautifulSoup
import uuid
import time

#目标抓取网页
src = 'http://www.mzitu.com/all'
#浏览器请求头(大部分网站没有这个请求头可能会报错)
mheaders = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/22.0.1207.1 Safari/537.1"}

#读取一个网页
def getHtml(url):
    req = request.Request(url,headers=mheaders) #添加headers避免服务器拒绝非浏览器访问
    page = request.urlopen(req)
    html = page.read()
    return html.decode('utf-8')  # python3 python2版本直接返回html

#从入口爬取所有的目标链接
def getallUrl(html):
    #构造一个bs对象
    soup = BeautifulSoup(html, 'html.parser')
    #使用bs对象寻找class为all的div 然后再寻找这些div里面的a标签,可能我们需要多试几次才能准确的get
    all = soup.find('div',class_='all').find_all('a')
    print(len(all))#无聊打印点什么
    for li in all:
        subSrc = li.attrs['href']
        subHtml = getHtml(subSrc)
        subSoup = BeautifulSoup(subHtml, 'html.parser')
        page = subSoup.find('div', class_='pagenavi').find_all('span')
        #page[-2]是表示数组从右(末端数2个) maxpage拿到套图最后一页
        maxPage = page[-2].get_text()
        i = 1
        while (i <= int(maxPage)):
            time.sleep(0.08) #休息0.08s,防止服务器拒绝频繁请求
            tagetSrc = subSrc + '/' + str(i)
            tagetHtml = getHtml(tagetSrc)
            tagetSoup = BeautifulSoup(tagetHtml, 'html.parser')
            img = tagetSoup.find('div', class_='main-image').find('img')
            print(time.time())#无聊打印点什么
            #uuid()构造一个世界唯一字符串,为了防止文件重名
            name = img.attrs['alt'] + str(uuid.uuid4())
            imgsrc = img.attrs['src']
            print(imgsrc + "-----" + name)#无聊打印点什么
            try:
                #这里的指定存储路径,需要注意的是这里需手动创建文件夹,如需自动想、可以使用os库
                request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置
            except BaseException:
                #捕获异常情况
                print('Error:there is something wrong!')
                # 遇到IOError: [Errno socket error] [Errno 10060]服务器拒绝频繁访问 阻塞1s
                time.sleep(1)
                try:
                    request.urlretrieve(imgsrc, 'D:\\meizi\\' + '%s.jpg' % name)  # 指定目录位置
                except BaseException:
                    print('Error:there is something wrong!over')
            # print(tagetSrc)
            i += 1
        print('end')
#开始
print('begin')
getallUrl(getHtml(src))
#结束
print('over')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
成果

好了,这次旅行到此结束,对于这次初次旅程还满意吗?给各位老厉害的看官留几个宝箱吧:
1.这种方式爬取数据存在什么弊端?该怎么完善?
2.有什么方法提高爬取效率?
3.反面思考我们的web网站怎么防止被机器爬取数据?
4.我们的爬虫(机器)面对验证码,登录等问题怎么处理?

最后

谢谢站长

magento中的启用https

在Magento的后台管理中 General->web->secure , 有安全链接的设置,所谓安全链接,是指启用了https 协议的链接。

百度百科中关于https的介绍( http://baike.baidu.com/view/14121.htm )
HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。 它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

在大型的电子商务网站,如当当,京东,登录页面都是采用了https以保证安全性
https://passport.360buy.com/new/login.aspx?ReturnUrl=http%3A%2F%2Fwww.360buy.com%2F
https://login.dangdang.com/signin.aspx?returnurl=http%3A//www.dangdang.com/

在magento中启用https,首先要在apache中配置好ssl模块,具体请google。

然后在magento后台配置 ssl,一个参考的配置如下:


这样就能再magento中启动https

注意了,如果发现在在https页面中的某些超链接没有采用https,可能是由于 调用 Mage::getUrl('xx/xxx/xxxx')时没添加 _secure 参数,正确的调用方法如下:
Mage::getUrl('xx/xxx/xxxx'  , array( '_secure' => true ))
Mage::getBaseUrl( Mage_Core_Model_Store::URL_TYPE_LINK, true )
如果不添加'_secure' 参数,那么无论在http页面或者https页面,生成的链接都是http 链接。


同理,redirect时也应该添加_secure参数: $this->_redirect('*/*', array('_secure'=>true));

创业型网站初期不能花钱买流量和买用户,靠什么让用户快速增长?

第一课:没有具备核心竞争力的产品,「增长」无从谈起。
你已经听了足够多的「市场 / 产品契合点」这个概念了,虽然大家都在谈,但是本文中所列出的这十家增长最快的初创公司各自有着各自的「增长引擎」。它们的共同点只有一个:这个产品体验在用户那里是必须拥有的,它能带来满足感和忠实度,前期用户形成了牢靠稳固的用户增长基础,不断为一次又一次地扩张提供助力。

还有一个例外,那就是像 LinkedIn 这样的公司,需要自身的用户增长到达一个级别之后才能成为「必须拥有」的产品,Evernote 也是这么做的。它们都是填补了某个长期存在着的市场空白。
Marc Andreessen 曾经说过这样一句话:「创业失败无非是下面的两条原因:在时机不成熟的时候选择增长,又或者是在应该增长的时候表现得太过温和。产品是增长的基石,没有它,增长无从谈起。

第二课: 增长没有休止符
所有这些初创公司都拿出永不懈怠的专注提升自己的用户增长。这不仅仅是面对公众说说好听的,他们是实实在在投入着人力、物力、时间等资源。LinkedIn 在这方面表现得尤为突出。它在追求持续增长上的投入时间已经超过了十年,它在用行动向我们证明:追求用户增长永远没有停下来的那天。

第三课:增长并不是营销,营销也并非增长。
这些公司还有一个共通的特点:它们都不曾进行传统营销。它们从来不是什么「付费搜索」又或者「邮件营销」的行家,当然,其中有一些在后续发展的时候也将其作为补充手段,但是真正持久的用户增长动力并非来自于传统营销模式。
它们在用户增长上面都各自拥有独特的一套方式,有的里面包含了营销的成分,但是更多是依靠产品本身来获取更加强劲的用户增长契机。
就比如 Square 专门设计了白色的卡片阅读器,这样跟黑色的 iPhone 形成鲜明对比,又或者是 Evernote 为了配合在 Appstore 的最新发布,把整个产品重新设计。这些都不是传统营销方式。营销团队在公司里面也无法拥有像这样的影响力。
增长团队是遍布在工程技术、产品、以及营销各个部门中的,他们共同来设计增长战略。而传统营销方式(比如花费大笔钱来购买广告,以 Groupon)是不可能打造稳定增长的用户群的。

第四课: 做其他人都做的事绝对是错误的增长策略!
那些行业里面存在多年的大公司都是在自己垂直产品体系内,又或者根据自己特定的行业来实现增长,但本文中的这些增长快速的初创公司并没有遵循老路,都在独辟蹊径,让用户们意识到曾经的一些想法甚至是行为都是错误的。就比如 Hubspot 推出了网站在线评级的免费工具,一方面扭转了用户过去长期存在的错误认知,一方面在不花费任何营销的前提下给自己带来了实实在在的客户。
yelp 这家饭馆点评网站并没有花钱去购买任何软文,而是全心全意地去经营自己的线上社群。当时同业竞争者还有 Citsearch 以及其他一些大公司,它们采取的做法无一不是花钱买各种软文,在当时 Yelp 的做法看上去似乎蠢透了,但是结果呢?

第五课:不要想着煮干大海
每一家初创公司都是有着自己的细分领域。Wealthfront 的联合创始人 Andy Rachleff 就非常看重这一点,他认为为了实现用户增长,就必须不断地缩窄自己的视野范围,让自己的目光变得像是激光一样精准。笔者所研究的这些增长最快的初创公司无一不是这样的思路。不 Snapthat 瞄准的是高中生和大学生,Square 瞄准的是小公司、Belly 在芝加哥开发的是中小型公司市场,他们都意识到细分用户群体是多么重要的一件事。

第六课:「增长黑客」跟短期策略没有任何关系
「增长黑客」这样的词听上去非常的酷炫,记者们往往会错误地解读它,将其等同于任何大家熟知的营销窍门。但是让我们看一看 AirBnb 以及 Craigslist 吧,它们都寻找到了属于它们自己的「增长」方式,这可不同于 RapGenius 那种笨蛋式的超链接垃圾邮件轰炸,它们各自的方式都独一无二,而且都是经过深思熟虑之后总结出来的系统方法,只有这样才能打造出稳定持久的用户增长。

如果要总结一下的话,那就是 它们在寻找增长引擎的过程中,没有花大笔预算砸向传统营销。.Hubspot 就最先做到这一点,他自己开发了一些免费工具,从而创造出超高的流量,进而转化成为对它们产品的强烈需求。
这样的效果远非传统营销方式可以比拟的。
Uber 和 Belly 双双开发出能够将网络效应本地化的增长策略,从而解决了初创公司刚刚创办时增长发力的窘境。LinkedIn 双位数的病毒式循环增长同样也是「用户增长」的传奇案例。

第七课:打造可以规模化扩张的「产品」,但在前期要用具体的一件件小事撬动其增长。
这是来自于保罗 格莱厄姆的意见。这意味着如果你想要获取客户,必须自己花时间走出房门,去跟每一个真实具体的用户聊一聊,用这种接地气儿的,不起眼的行为,才能撬动产品的规模化增长(当然得建立在产品本身就具备规模化增长的条件)。我们所研究的这些初创公司都是遵循着这样的原则。
Evernote 非常清楚每一次在 AppStore 里的发布都会给公司带来增长契机,于是在平台上不断宣布自己即将推出什么新的功能,以便在真正发布的那一天会被官方推荐到 AppStore 首页,从而带来可观的流量。
而与此同时,公司还在打造可以规模化发展的系统以及流程。就拿 Uber 来说,它在每开发新的一个城市之前都会安排一套策略,在司机端以及乘客端都分别安排了前期团队,在每次开发新的市场之后他们会不断总结,形成一套最有效率的指导手册,使之成为在扩张过程中可以复制的标准流程。。

第八课:有数据分析,进而才有洞见
现在太多人都痴迷于数据分析,有太多的数据面板,有太多无意义的指标,人们总是钻到数字中间,出来的时候却拿出来寥寥无几的结论。而快速增长的初创公司能够从中获得真正具有价值的结论,从而有效地刺激增长。
就比如说 Upworthy,它真正的将数据学应用在了病毒式传播营销上,最著名的案例莫过于它的 25 种标题测试,这足以证明他们利用科学寻找最为行之有效的增长策略时有多么专注用心。我们研究的其他公司也以同样的热情和专注投身于数据分析上,并且挖掘到了增长机会。

第九课:打造多个增长引擎,一起发力推动快速增长。
诸如 GitHub 这样的公司可不仅仅只有一个」增长引擎「,它既是一个社交平台、又是一个以编程为主题的交易市场、更是一个内容发布媒介、当然还能解决工作流上存在的「痛点」。
这方方面面的优秀共同带动了用户增长。
如今 GitHub 已经成为了很多程序员工作流程上不能离开的一个平台。Yelp 也是有着自己的社群,还有更重要的资产:评分系统。LinkedIn,同样的故事。

第十课:世上没有一招能治百病的诀窍
我们所研究的公司所使用的增长策略各不相同,没有一招能治百病。它们也不是一夜之间收获数百万用户以及下载量。就算是在我们眼中最具有 “神奇魔力 “的公司和产品,它们也是遵循着事先精心设计好的一套策略,一步一步来推动用户增长。
如果仅仅拿标题上的话教育别人,也许会换来不屑一顾的表情。但是如果你真的深入到下面一层去探知真相,你就发现几乎所有初创公司的增长策略,其每一个环节步骤都是经过深思熟虑的。
用户增长跟运气没有关系。

第十一课: 增长必定是团队协作带来的结果
这是额外赠送的福利!一家真正优秀的公司,从高层到底下最低级别的员工都会参与到 “用户增长” 的战略执行当中来。“用户增长” 从来就不是某个部门,某个人的事,它应该是公司全体上下所有员工共同发力促成的结果。每一个人由于其岗位的不同,专业背景的不同,都能从某个角度给用户增长带来助力。它有可能是一次执行迅速的外包协议,又或者是对代码库的优化,使之能够让搜索引擎对其更加友好。
在用户增长最快速的科技公司,销售和营销部门绝对不仅仅充当产品 “防火墙” 的作用,而工程部门的人员也绝不会将营销工作视为发送垃圾信息。各个部门之间的深度协作能够带来巨大的增长契机。
本文来源:GrowthHacker 

Magento与大型网站技术架构

之前买了一本书叫《大型网站技术架构 核心原理与案例分析》,只有薄薄的200多页,却非常接地气的阐述了大型网站所面临的各种架构问题和解决方案。与一些大部头的书不同的是,这本书内容非常的全面,涵盖了几乎所有大型网站所需要讲的点,然后给出方向性的解决方案,但不提供解决方案的具体技术实现。因为大型网站的每一个细分环节,都可以写一本厚厚的书来阐述,也就是所谓的大部头,比如一本讲Mysql的书可能就7、8百页。所以这本书非常适合作为一个提纲类的手册,当遇到架构问题时来查询解决的方向,然后如果需要具体技术实现,自然有细分领域的书来帮助你。
回到本文主题,有人会问,Magento做能大型网站吗?其实这是一个伪命题,套用本书作者的原话:大型网站不是设计出来的,而是逐步发展演化出来的。所有的大型网站都是从早期高度耦合的单系统发展过来的,比如新浪微博最早的版本是基于Kohana框架的单系统,逐步演化成现在的服务化架构,如果新浪在一开始就从架构上规划一个大型网站,那他们一定是疯了。Magento是一个单系统,而且是一个程序结构上还不错的系统,很适合作为电商网站起步到中期阶段的使用,如果网站的量级真的发展到大型网站的程度,在这个过程中,整个电商系统慢慢演化,一些原来由Magento承担的业务逐步拆分出去成为了一个个的独立服务(比如订单处理,商品管理,监控,日志分析,数据分析等等),Magento成为了一个复杂架构中的一个零件。甚至到最后完全被新的服务所取代,Magento也可以被认为很好的完成了他所承担的阶段性任务。再次套用作者的原话:在这个漫长的演化成大型网站的过程中,不需要放弃什么,不需要推翻什么,不需要剧烈的革命。
实际操作上,怎么基于Magento把网站从小型走到中型的规模(中型到大型必定已经开始脱离单纯的Magento),是个很好的讨论话题。就如书中所言,互联网技术发展到今天,网站架构演化方案已经非常成熟,所以我接下来想要讨论的是这些成熟的演化方案,如何以Magento为基础去一一实现。其中有一些Magento官方在底层架构设计上已经考虑过并且预备好了方案,有些需要我们这些开发者自己去找解决方案。接下来我会花几个章节来探讨具体的实现细节,内容包括但不仅限于读写分离、缓存、CDN、负载均衡、消息队列、搜索引擎等等。
感谢互联网的发展和歪果仁们的分享精神,大部分资料来源于google、Stack Overflow、Github等等,结合我自己以往的工作经验,做一个归纳和整理,这个系列既是一个分享,也是对自己的一次总结。

PS:上面提到的基于Magento把网站做大,除了架构层面的处理,具体功能的开发一样有需要特别注意的地方。因为php太自由,所以如果在Magento基础上做二次开发不遵循规范的话,网站发展到一定程度,整个系统就会变成一个地雷阵,处处是坑。那面临的就不是拆分成服务化,而是需要推翻重构了。所以除了架构系列的文章,未来我还会写一个系列来阐述在Magento上做二次开发应该遵循的规范,文章系列名暂定为“Magento二次开发推荐编码规范”,敬请期待。

Python基础02 基本数据类型

Python基础02 基本数据类型

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

简单的数据类型以及赋值

变量不需要声明

Python的变量不需要声明,你可以直接输入:
>>>a = 10
那么你的内存里就有了一个变量a, 它的值是10,它的类型是integer (整数)。 在此之前你不需要做什么特别的声明,而数据类型是Python自动决定的。
>>>print(a)
>>>print(type(a))
那么会有如下输出:
10
<class 'int'>

这里,我们学到一个内置函数type(), 用以查询变量的类型。

回收变量名

如果你想让a存储不同的数据,你不需要删除原有变量就可以直接赋值。
>>>a = 1.3
>>>print(a,type(a))
会有如下输出

1.3 <class 'float'>

我们看到print的另一个用法,也就是print后跟多个输出,以逗号分隔。

基本数据类型

a=10         # int 整数
a=1.3        # float 浮点数
a=True       # 真值 (True/False)
a='Hello!'   # 字符串。字符串也可以用双引号。
以上是最常用的数据类型。此外还有分数,字符,复数等其他类型,有兴趣的可以学习一下。

总结

变量不需要声明,不需要删除,可以直接回收适用。
type(): 查询数据类型
整数,浮点数,真值,字符串

Also Read: