博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python学习之路1 - 基础入门
阅读量:5152 次
发布时间:2019-06-13

本文共 8845 字,大约阅读时间需要 29 分钟。

本文内容

  1. Python介绍
  2. 安装Python解释器
  3. 输出
  4. 变量
  5. 输入
  6. 条件判断语句
  7. 循环语句
  8. 模块讲解
  9. 三元运算
  10. 字符串和二进制的相互转化

 本系列文章使用的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。

print("hello world")

输出结果:

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

import syssys.stdout.write("afsd")

输出结果:

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

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

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

四、变量

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

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

输出结果:

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

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

msg = '''这里是第一行这里是第二行这里是第三行'''print(msg)

输出结果:

 

注释

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

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

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

'''这里是第一行注释这里是第二行注释这里是第三行注释'''

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

 

五、输入

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

username = input('username:')password = input('password:')print(username,password)

我们输入vector和asd123

输出结果:

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

第一种格式化输出方式

name = input('name:')age = input('age:')info = '''------------- Info --------------Name:''' + name + '''age:''' + age + '''------------- Over --------------'''print(info)

这里我们输入vector和18

输出结果:

第二种格式化输出方式

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

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

name = input('name:')age = int(input('age:'))info = '''------------- Info --------------Name:%sage:%d------------- Over --------------'''%(name,age)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    
\033[0m

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

name = input('name:')age = int(input('age:'))info = '''------------- Info --------------Name:\033[31;1m%s\033[0m  #输出结果为红色age:\033[32;1m%s\033[0m  #输出结果为绿色------------- Over --------------'''%(name,age)print(info)

输出结果:

第三种格式化输出方式

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

name = input('name:')age = int(input('age:'))info = '''------------- Info --------------Name:{_name}age:{_age}------------- Over --------------'''.format(_name=name,_age=age)print(info)

输出结果:

第四种格式化输出方式

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

name = input('name:')age = int(input('age:'))info = '''------------- Info --------------Name:{0}age:{1}------------- Over --------------'''.format(name,age)print(info)

输出结果:

 

输入变成密文

需要引入getpass模块。

import getpasspassword = getpass.getpass("password:")
print(password)
但是这个getpass()这个函数在pycharm中不好使,在其他工具中好使。

六、条件判断语句

格式:

if 条件1 and 条件2 or 条件3:    pass # 注意这里一定要有缩进elif 条件4 and 条件5:    passelse:    pass

例子:

_username = 'rev'_password = 'rev123'username = input('username:')password = input('password:')if _username == username and _password == password:    print('Welcome user {name} login...'.format(name = username))# 注意这里一定要有缩进elif _username == username and _password != password:    print('password error!')else:    print('login fail..')# 注意这里一定要有缩进

七、循环语句

循环语句之while

Python中的while还有else处理。

例子:

while True:    print('this is loop...')    breakelse:    print('如果while循环条件不符合了,则执行这里的代码')

循环语句之for

格式1:

for i in range(10):    print('loop ',i)

这里的range代表循环次数,i 从0来是循环

输出结果:

格式2:

for i in range(0,10,2):    print('loop ',i)

range中的第一个参数代表从几开始,第二个参数代表到几结束(不包括10),第三个参数2代表隔一个执行一次

格式3:

for i in "fasdfasd":    print('loop ',i)

Python中的for循环还可以循环字符串、列表、元组等。

 输出结果:

八、模块讲解

模块之sys

print(sys.path) # 打印环境变量print(sys.argv) # 打印当前脚本的路径,在pycharm中打印绝对路径,在命令行中打印相对路径(本来打印的就是相对路径)one = sys.argv[1] #用来在外部调用的时候传参, 1代表传入的第一个参数,two = sys.argv[2] #2代表传入的第二个参数, 这样外部调用的时候就可以传多个参数了

模块之os

print(os.system('dir')) # system函数就是命令行cmd = os.system('dir')print(cmd) # 这里输出的是 0 因为,system是直接把输出到屏幕上,并不是返回,如果输出成功则返回0cmd = os.popen('dir').read() #popen()方法返回的是该对象的地址,read()方法是将地址中的内容读出来print(cmd)# 创建目录函数os.mkdir('new_dir')

九、三元运算

//result = 值1 if 条件 else 值2a,b,c = 1,3,5d = a if a>b else cprint(d) # d = c = 5# 如果条件为真:result = 值1# 如果条件为假:result = 值2

十、字符串和二进制的相互转化

msg = '我爱大延边日不落帝国'print(msg) # 字符串输出print(msg.encode(encoding='utf-8')) # 将字符串转换成二进制print(msg.encode(encoding='utf-8').decode(encoding='utf-8')) # 将二进制转换成字符串# 如果encode和decode不写参数,默认就是utf-8

 

转载于:https://www.cnblogs.com/vector121/p/7453942.html

你可能感兴趣的文章
在linux上搭建SVN服务器并自动更新至WEB目录
查看>>
has the wrong structure
查看>>
3.27上午 网课+真题
查看>>
虚方法、重写方法以及抽象类的知识小结
查看>>
【场景】消息队列使用场景
查看>>
Web代理工具NProxy
查看>>
OpenCV——字符提取并保存
查看>>
fzu 2253 salty fish
查看>>
ListView返回顶部
查看>>
python 线程
查看>>
好的web前端是如何拿到30万年薪的?
查看>>
think读取器修改器
查看>>
关于settimeout 和for循环
查看>>
MQTT和ActiveMQ
查看>>
Flink articles
查看>>
SSL SSH
查看>>
HADOOP security
查看>>
剑指Offer-对称的二叉树
查看>>
20145317《信息安全系统设计基础》实验四 外设驱动程序设计
查看>>
会导致页面重复请求的情况
查看>>