Python学习之路 - 基础入门

本系列文章使用的Python版本为3.6.2

使用开发工具为Pycharm2017

一、Python介绍

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。

最新的TIOBE排行榜,Python赶超PHP占据第五, Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

目前Python主要应用领域:

  • 云计算:云计算最火的语言, 典型应用OpenStack
  • WEB开发:众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能:典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维:运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI:PyQT, WxPython,TkInter

Python在一些公司的应用: 

  • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
  • CIA:美国中情局网站就是用Python开发的
  • NASA:美国航天局(NASA)大量使用Python进行数据分析和运算
  • YouTube:世界上最大的视频网站YouTube就是用Python开发的
  • Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
  • Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
  • Facebook:大量的基础库均通过Python实现的
  • Redhat:世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
  • 豆瓣:公司几乎所有的业务均是通过Python开发的
  • 知乎:国内最大的问答社区,通过Python开发(国外Quora)
  • 春雨医生:国内知名的在线医疗网站是用Python开发的
  • 除上面之外,还有搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。

Python 是一门什么样的语言?

编程语言主要从以下几个角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言,每个分类代表什么意思呢,我们一起来看一下。

编译和解释的区别

编译器是把源程序的每一条语句都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,速度很快;

而解释器则是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。

这是因为计算机不能直接认识并执行我们写的语句,它只能认识机器语言(是二进制的形式)。

就好像你想看一本英文书,编译器会将整本书翻译成中文供你观看,这时你看的就会很方便,怎么反复看都没有问题;解释器只会解释你当前想要看的语句,如果你想再次看一遍同样的语句则需要再次找解释器解释一遍,这样就会给你的阅读带来麻烦。

动态语言和静态语言

通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。

(1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

(2)静态类型语言:静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。

强类型定义语言和弱类型定义语言

(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。

(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。

强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。

通过上面这些介绍,我们可以得出,python是一门动态解释性的强类型定义语言。那这些基因使成就了Python的哪些优缺点呢?我们继续往下看。

Python的优点

当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。

Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。

除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。

许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你可以尽情地嘲笑他。

那Python适合开发哪些类型的应用呢?

首选是网络应用,包括网站、后台服务等等;

其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

另外就是把其他语言开发的程序再包装起来,方便使用。

Python的缺点

第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

但是大量的应用程序不需要这么快的运行速度,因为用户根本感觉不出来。例如开发一个下载MP3的网络应用程序,C程序的运行时间需要0.001秒,而Python程序的运行时间需要0.1秒,慢了100倍,但由于网络更慢,需要等待1秒,你想,用户能感觉到1.001秒和1.1秒的区别吗?这就好比F1赛车和普通的出租车在北京三环路上行驶的道理一样,虽然F1赛车理论时速高达400公里,但由于三环路堵车的时速只有20公里,因此,作为乘客,你感觉的时速永远是20公里。

第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

这个缺点仅限于你要编写的软件需要卖给别人挣钱的时候。好消息是目前的互联网时代,靠卖软件授权的商业模式越来越少了,靠网站和移动应用卖服务的模式越来越多了,后一种模式不需要把源码给别人。

再说了,现在如火如荼的开源运动和互联网自由开放的精神是一致的,互联网上有无数非常优秀的像Linux一样的开源代码,我们千万不要高估自己写的代码真的有非常大的“商业价值”。那些大公司的代码不愿意开放的更重要的原因是代码写得太烂了,一旦开源,就没人敢用他们的产品了。

二、安装Python解释器

在Mac上安装Python

如果你正在使用Mac,系统是OS X 10.8~10.10,那么系统自带的Python版本是2.7。要安装最新的Python 3.6,有两个方法:

方法一:从Python官网下载Python 3.6的安装程序(网速慢的同学请移步国内镜像),双击运行并安装;

方法二:如果安装了Homebrew,直接通过命令brew install python3安装即可。

在Linux上安装Python

如果你正在使用Linux,那么基本代表你有着Linux管理经验,Linux上自带Python2,如果想升级到最新版应该难不倒你的。

在Windows上安装Python

首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.6对应的64位安装程序或32位安装程序,然后,运行下载的EXE安装包:

特别要注意勾上Add Python 3.6 to PATH,然后点“Install Now”即可完成安装。

三、输出

输出方式经常使用的有两种,第一种是print()函数,下面我们输出hello world。

1 print("hello world")

输出结果:

第二种输出方式需要引入sys库,然后使用sys.stdout.write()函数输出。

1 import sys
2 sys.stdout.write("afsd")

输出结果:

从输出结果可以看出两种输出方式的差别,print()函数输出结果后会再加一个换行,而sys.stdout.write()则没有换行。

Python和其他常用高级语言不同的地方是Python一条语句结束时不需要加分号,并且在Python中也不会用到大括号,Python的语句就只是用换行符和缩进来表示语句之间的关系。

换行就表示一条语句的结束,缩进表示语句间的包含关系。

四、变量

由于Python是动态类型语言,所以不需要定义变量类型,直接写变量名就可以。

1 name = "my name is Vector"
2 print(name)

输出结果:

在Python3中是可以直接输入中文的,例如print(“姓名”)这样,但是在Python2中需要在文件的顶部加上  -*- coding:utf-8 -*- 这句话,因为Python3的默认字符为Unicode,而Python2的默认字符为ASCII。

在Python中不仅有单行的字符串,还有多行的字符串,多行字符串用 ‘‘‘内容‘‘‘ 标记,如下。

1 msg = ‘‘‘
2 这里是第一行
3 这里是第二行
4 这里是第三行
5 ‘‘‘
6 print(msg)

输出结果:

注释

Python中的单行注释用 # 来注释,如下。

print(‘hello world‘) #这里即将输出hello world

多行注释用三个单引号来标记 ‘‘‘内容‘‘‘,如下。

1 ‘‘‘
2 这里是第一行注释
3 这里是第二行注释
4 这里是第三行注释
5 ‘‘‘

在Python中单引号和双引号没有区别,都不会转义其他字符。

五、输入

用户输入通常我们用input()函数,如下

1 username = input(‘username:‘)
2 password = input(‘password:‘)
3 print(username,password)

我们输入vector和asd123

输出结果:

有了输入后,我们就可以控制格式化输出了。

第一种格式化输出方式

 1 name = input(‘name:‘)
 2 age = input(‘age:‘)
 3
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:‘‘‘ + name + ‘‘‘
 7 age:‘‘‘ + age + ‘‘‘
 8 ------------- Over --------------
 9 ‘‘‘
10 print(info)

这里我们输入vector和18

输出结果:

第二种格式化输出方式

用 %s %d %f 等来控制格式,并在结尾一次传入参数,传参格式为 %(参数1,参数2,...)

%s代表字符串,%d代表正数,%f代表浮点数

 1 name = input(‘name:‘)
 2 age = int(input(‘age:‘))
 3
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:%s
 7 age:%d
 8 ------------- Over --------------
 9 ‘‘‘%(name,age)
10 print(info)

输出结果:

如果想将输出的内容变成红色,则用\033[31;1m%s\033[0m
如果想将输出的内容变成绿色,则用\033[32;1m%s\033[0m

格式:\033[显示方式;前景色;背景色m

说明:
前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色

显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见

例子:
\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->

下面演示一下输出结果带颜色的例子:

 1 name = input(‘name:‘)
 2 age = int(input(‘age:‘))
 3
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:\033[31;1m%s\033[0m  #输出结果为红色
 7 age:\033[32;1m%s\033[0m  #输出结果为绿色
 8 ------------- Over --------------
 9 ‘‘‘%(name,age)
10 print(info)

输出结果:

第三种格式化输出方式

在字符串中插入形参(形参用大括号标记{形参}),最后在结尾给形参赋值。

 1 name = input(‘name:‘)
 2 age = int(input(‘age:‘))
 3
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:{_name}
 7 age:{_age}
 8 ------------- Over --------------
 9 ‘‘‘.format(_name=name,_age=age)
10 print(info)

输出结果:

第四种格式化输出方式

形参用数字表示,在结尾直接按照顺序给形参赋值。

 1 name = input(‘name:‘)
 2 age = int(input(‘age:‘))
 3
 4 info = ‘‘‘
 5 ------------- Info --------------
 6 Name:{0}
 7 age:{1}
 8 ------------- Over --------------
 9 ‘‘‘.format(name,age)
10 print(info)

输出结果:

时间: 2024-10-19 07:12:56

Python学习之路 - 基础入门的相关文章

python学习之路基础篇(第四篇)

一.课程内容回顾 1.python基础 2.基本数据类型  (str|list|dict|tuple) 3.将字符串“老男人”转换成utf-8 s = "老男人" ret = bytes(s,encoding="utf-8") print(ret) ret1 = bytes(s,encoding="gbk") print(ret1) #程序运行结果如下: b'\xe8\x80\x81\xe7\x94\xb7\xe4\xba\xba' b'\xc0

python学习之路基础篇(第七篇)

一.模块 configparser XML shutil zipfile 和 tarfile subprocess 二.面向对象 什么是面向对象 self是什么鬼 构造方法 面向对象的三大特性:封装,继承,多态 已经学习过的python内置类:str  list  tuple dict  set python自定义类 python单继承 python多继承

Python学习之路——基础10篇

在这一篇中我们主要学习python中求字符串的长度的方法--__len__() 无论是二维的还是一维的都是它,及其简便 根据题目学python: 给定由大写,小写字母和空格组成的字符串,返回 最后 一个单词的长度. 如果输入中不存在单词,返回 00. 注意: "单词"是指不包含空格符号的字符串 例如: 对于字符串"hello World"(不带引号), 那么返回的结果是 55: 对于字符串"abc abc "(不带引号),那么返回的结果就是 33

Python学习之路——基础01篇

安装python编译环境  python数字定义是不需要int,double的,但是数据本身还是包含这些类型,这里是我在学习python过程中的一些代码和心得.   python作为一种高级语言,需要安装自己的解释器,解释你所写的代码然后还需要一个编译器(很多).首先下载一个python编译器,安装完成之后再去python官网下载最新的python 3.X然后安装,点自动设置路径,安装好之后,在计算机cmd界面输入python如果出现:即说明已经安装成功.

Python学习之路——基础08篇

在python中申明一个二维数组是可以用for i in range(x)来制定数组大小,这样就可以和c语言中实现定义数组一样了,还有就是,貌似在函数中的数组,如果要修改值的话,是不需要global来修饰的,可能是数组申明是不需要赋初值的原因吧. 根据题目来学习python的应用: 晓萌最近在做一个翻转图片的应用,你可能也知道,图片其实是由一个个的点组成的.于是,晓萌想先做一个可以翻转矩阵的程序,来解决他问题的核心部分. 输入格式 输入第一行包括由空格分开的整数 M,N,T(0 < N,M <

python学习之路基础篇(三)

一.简单回顾上次课程内容 主要内容:str|list|dict 类---对象 具体内容可以参考: http://www.cnblogs.com/wupeiqi/articles/5433925.htmlhttp://www.cnblogs.com/wupeiqi/articles/5444685.html 二.python后续学习方法:首先整理课程讲解内容到博客,然后再写作业 三.本次课程内容 1.数据类型-set 小结: 列表和集合set的区别(小知识点):列表:有序 可重复 可嵌套集合set

Linux学习之路-基础入门【1】---20171106

一.计算机基础知识                                                                                      (希望自己能更加喜欢这个系统的学习)   1.计算机系统 2.存储网络分类 DAS--(DirectAttached Storage)直接连接存储 直接存储,存储设备与主机的紧密相连. NAS--(NetworkAttached Storage)网络连接存储 通过局域网在多个文件服务器之间实现了互联,基于文件

python学习之路基础篇(第五篇)

前四天课程回顾 1.python简介 2.python基本数据类型 类: int:整型 | str:字符串 | list:列表 |tuple:元组 |dict:字典 | set:集合 对象: li = [11,22,33] #列表的一个对象 s = "MoHan" #字符串的一个对象 3.函数式编程 4.装饰器 @装饰器函数名 def func(): pass 其中@装饰器函数名,程序执行到此,会进行如下三步操作: 1.将func当做参数进行传递给装饰器函数并执行 2.将装饰器函数的返

Python学习之路——基础05篇

在python中,也分全局变量和局部变量,但是据我所知,如果在if中定义的变量是属于往下的全局变量,python中也有函数的定义和返回,通常定义一个函数是: def 函数名(参数1,参数2,...): 函数体 return x 当然,不要参数也是可以的,如果不写return则默认返回空,而在函数内是不能修改全局变量的值的,而如果你想要给函数外的全局变量赋值,你则要使用global语句说明这个变量是全局变量.否则就会出错.但是,如果不需要给全局变量重新赋值,则可以不使用global语句,但是,使用