一、python介绍以及发展史
1.1 python的介绍:
简单点来说吧,python这玩意儿是一个叫做Guido van Rossum的程序猿在1989年的圣诞打发时间而决心去开发的一个脚本编程语言。它之前的名字是以abc语言的一种继承。之所以叫做python,那是因为这个伟大的程序员Guido van Rossum是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python‘s Flying Circus)的爱好者。
1.2 为毛要学习python:
学习python首先要去了解python是个什么类型的语言,得要从编程语言的分类中去了解一下
编程语言主要从以下几个角度进行分类:
- 编译型和解释型:
- 编译型语言
咱也不用去过多过专业的去说这个概念,简而言之编译型语言就是一次把所有的代码转换成机器语言,然后写成可执行文件。典型代表是像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可视为编译语言。
- 解释型语言
然而相对于解释型语言在程序运行的前一刻,还只有源程序而没有可执行程序;而程序每执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码以供执行,总言之,就是不断地解释、执行、解释、执行……所以,解释型程序是离不开解释程序的。像是Java、JavaScript、VBScript、Perl、Python这些开发语言就是解释型语言。
- 总结一下:
对于编译型语言和解释型语言的简单理解就像是一场翻译一样,编译型语言可以理解成翻译过程中一口气说完了然后再翻译一样;对于解释型语言就像是逐句翻译一样啦。
- 动态语言和静态语言
- 动态语言:
动态类型语言是指在程序运行期间才去做数据类型检查的语言,简而言之就是在动态类型的语言编程时,永远不用给任何变量指定数据类型,该语言会在你第一次赋值给变量的时候,在其内部将数据类型记录下来。对于python和ruby就是其中的代表了。
- 静态语言:
静态语言就是在程序运行之前(也就是在编译的时候)就要检查数据类型的语言。说白了也就是第一次在给变量赋值时要提前声明变量类型。静态类型语言与动态类型语言刚好相反。C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
- 强定义类型和弱定义类型语言
- 强定义类型语言
强制数据类型定义的语言,也就是说一个数据类型定义之后要是不经过转换就还是之前的数据类型。像是咱么学习的python就是其中的代表。
- 弱定义类型语言
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。
- 综上所述:python是一门动态解释性的强类型定义语言
python的优缺点:
- 优点:通俗易懂简洁明了;是一种开发效率比较高的高级编程语言; 还具有较高的可移植性、可拓展性和可嵌入性。
- 缺点:运行的速度当然比不过C语言;代码不能加密;线程不能利用多CPU的问题。
- 总之:每一种开发语言自然有其特点,对于我们学习这一门编程语言,对此我能说表达只能是,不要跟SB理论,SB会把你拉到跟他一样的高度,然后用充分的经验把你打倒。
python的解释器:
什么叫解释器呢,简单点的理解就是将python语言转换成计算机能够识别或者读懂的字节码的一个玩意儿。
- 像是基于C语言的Python解释器就叫做Cpython,也是使用比较广的一种python解释器了
- IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE
PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度;绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和Cpython的不同特点了
- 对于Jpython是运行在Java平台上的Python解释器;IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器;对于我们的学习然而并没什么卵用
二、python的发展史及其安装
2.1 python的发展史
- 对于现在的学习,我们需要了解的python的发展,需要了解即可:
- 1999年提出了第一个web框架-ZOPE
- 2000年发布了python2.0版本,加入了内存回收机制,构成了现在Python语言框架的基础
- 2004年python2.4版本诞生,同时也诞生了Django这一web框架
- 2008年诞生了python3.0版本,在2.x版本上实现了一次大的跳跃
- 2010年诞生的python2.7也是承接2.x和3.x的一个过渡版本。因为在官方文档中2.x系列将在2020年结束支持,所以python3.x是必然的趋势。
2.2 python的安装
For windows
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
- FOr linux 参考http://www.jb51.net/article/57926.htm
三、python入门
3.1 hello world程序
第一个程序“hello world!”
#!/usr/bin/env python #声明python的环境变量,此处加env和不加env的区别就是:加env的会根据系统配置的环境变量去用默认的python环境去解释程序,没加env则代表直接通过/usr/bin/python去执行
# -*- coding:utf-8 -*- #声明字符编码 print("hello world") #在屏幕上打印“hello world1”
3.2 python中文编码
在学习python中文编码之前,我们需要了解一下什么是编码:
- 编码是用预先规定的方法将文字、数字或其他对象编成数码,或将信息转换成规定的电脉冲信号。编码是信息从一种形式或格式转换为另一种形式的过程。
- 然而我们需要了解的字符编码如下:
- ASCII码:美国标准信息交换码;主要用来显示英文和欧洲语言;其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
- Unicode码:也叫做万国码,目的是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。
- Utf-8:是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,中文字符用3个字节保存。
在python2.x和3.x之间的中文编码之间有一个区别是:在python2.x系列环境下需要声明或者指定字符编码;然而python3.x不需要声明字符编码。
- 关于中文编码如下:
- GB2312:国标码,诞生于1980年,一共收录了7000多个汉语字符
- GBK:1995年,一共收录了20000多个汉语字符
- GB18030:是2000年为了取代GBK1.0而诞生的正式国家标准,同时还收录了少数民族语言文字
3.3python基础语法
3.3.1 基本语法注意事项
- 注释
#!/usr/bin/env python
# -*- coding: UTF-8 -*- # 第一个注释 #号代表单行注释 '''注释内容
吧啦吧啦 '''之间插入要注释的内容(或者也可以使用"""之间插入注释内容)
'''
注意事项:多行注释的内容可以按照相应的格式作为变量传入参数使用
- 变量
什么是变量呢?照字面的意思来说就是可变化的量!尼玛!!太牵强了,简单点来说就是:用来指定不同的数据类型,这些变量可以存储整数,小数或字符;然后再程序中被调用的一片内存空间。
注意事项:
- 变量的命名可以使用字符数字和下划线的组合
- 变量名的首字母可以是字母或者下划线,对于特殊字符或者数字还是呵呵吧
- 变量的赋值用=连接
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
name=wanghui
name2=name
name=liming
print("MY name is",name,name2 "is my friend!!")
对于这个程序,比较好的解释就如图所示了:
- 输入
类似于shell脚本中的read,通过input()来获取对引得(注意在使用getpass模块时要用ide打开)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import getpass #导入密文模块(密文显示密码用)
username = input("name:") #用户名输入提示
passwd = getpass.getpass("password:") #密码提示输入(密文显示)
print(username,passwd) #打印username和passoword的赋值
- 流程控制
if condition: 所谓的单分支语句
if condition:
else:
if condition:
print("heheheh") ##单分支判断,condition是判断条件,如果满足条件就执行print if condition:
print("balabala")
else:
print("heheh") ##双分支判断,condition是条件,else是不满足condition的条件 if condition1:
print("hehehe")
elif condition2:
print("jijij")
elif ....:
operation
else:
print("end") ##多分支判断
下面是一个猜数字判断游戏:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
num=20
guess=int(input("please input a number:"))
if guess == num:
print("it's ok!!")
elif guess > num:
print("guess smaller please!!")
else:
print("guess bigger please!!")