python基础

 

Python诞生

Python是著名的”龟叔Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
python-day01-01

Python语法很多来自C,但又受到ABC语言的强烈影响。来自ABC语言的一些规定直到今天还富有争议,比如强制缩进。但这些语法规定让Python容易读。
Guido van Rossum著名的一句话就是Life is short, you need Python,译为:人生苦短,我用Python
python-day01-02
截至到目前2016年4月28日,Python在Tiobe的排名还是很靠前的,而且近几年来说Python上升的趋势已经超过PHP紧随C#。
python-day01-03
查询网站:http://www.tiobe.com/tiobe_index?page=index
总之,Python就是非常好非常好非常好的语言,重要的事情说三遍。

Python实现方式

Python身为一门编程语言,但是他是有多种实现方式的,这里的实现指的是符合Python语言规范的Python解释程序以及标准库等。

  • Python的实现方式主要分为三大类
  1. Cpython
  2. PyPy
  3. Jpython、IronPython等等类似的实现方式
  • CPython

这是Python的官方版本,使用C语言实现,使用最为广泛,新的语言特性一般也最先出现在这里。
CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上。

  • PyPy

Python(RPython Python)的Python实现版本,原理是这样的,PyPy运行在CPython(或者其它实现)之上,用户程序运行在PyPy之上。它的一个目标是成为Python语言自身的试验场,因为可以很容易地修改PyPy解释器的实现(因为它是使用Python写的),PyPy的代码性能是Cpython的五倍以上。

  • 性能对比图

python-day01-09python-day01-09

  • Jython

Jython是个Python的一种实现方式,Jython编译Python代码为Java字节码,然后由JVM(Java虚拟机)执行,这意味着此时Python程序与Java程序没有区别,只是源代码不一样。此外,它能够导入和使用任何Java类像Python模块。

  • IronPython

IronPython是Python的C#实现,并且它将Python代码编译成C#中间代码(与Jython类似),然后运行,它与.NET语言的互操作性也非常好。

安装Python

Windows安装Python2.7.11

  • 下载Python软件

64位下载地址:https://www.python.org/ftp/python/2.7.11/python-2.7.11.amd64.msi
32位下载地址:https://www.python.org/ftp/python/2.7.11/python-2.7.11.msi

  • 安装Python软件

下载下来之后双击安装,安装时一路下一步下一步即可,Windows一贯的作风,默认的安装路径是:C:\Python27

  • 配置环境变量

右键计算机 —> 属性 —> 高级系统设置 —> 高级 —> 环境变量 —> 在第二个内容框中找到变量名为Path的一行,双击 —> Python安装目录追加到变值值中,用;分割
如图:
python-day01-05
如:原来的值``;C:\python27,切记前面有分号

Windows 10安装后默认会把环境变量配置好。

  • cmd测试

win+r调出运行窗口,然后输入cmd
python-day01-06
在cmd窗口中输入python指令
python-day01-07
如果你得到的结果和我一样,那么你就安装好了windows下的python环境

CentOS升级到Python2.7.11

CentOS6.7默认自带Python2.6.6版本,如果你不需要升级到2.7.11请跳过这段,如果需要升级请继续往下看。

  • 下载python2.7.11源码包

下载地址:https://www.python.org/ftp/python/2.7.11/Python-2.7.11.tgz

  • 安装开发工具包
1
[root@mosson~]# yum -y groupinstall "debugging Tools"
  • 编译安装
1
2
3
4
5
[root@mosson ~]# tar xf Python-2.7.11.tgz
[root@mosson ~]# cd Python-2.7.11
[root@mosson Python-2.7.11]# ./configure -prefix=/usr/local/python2.7.11
[root@mosson Python-2.7.11]# make
[root@mosson Python-2.7.11]# make install
  • 更改配置

创建链接来使系统默认python变为python2.7

1
[root@mosson Python-2.7.11]# ln -fs /usr/local/python2.7.11/bin/python2.7 /usr/bin/python

  查看Python版本

1
2
[root@mosson Python-2.7.11]# python -V
Python 2.7.11

修改yum配置(否则yum无法正常运行)

1
2
3
4
[root@mosson Python-2.7.11]# vim /usr/bin/yum
#!/usr/bin/python
#将第一行改为
#!/usr/bin/python2.6

Python简单入门

Hello Word

一般情况下程序猿的第一个小程序都是简单的输出Hello Word!,当然Python也不例外,下面就让我们来用Python输出一句Hello Word!吧!

  • 创建一个以py结尾的文件
1
[root@mosson python_code]# touch hello.py

  其内容为:

1
2
#!/usr/vin/env python
print "Hello World!"
  • 用Python执行
1
2
[root@mosson python_code]# python hello.py
Hello Word!

Python代码执行流程

 释意:当Python执行代码的时候,会先把源码读取到内存当中,然后由Cpython进行编译,编译成字节码,最后由Cpython的虚拟机一行一行的解释其内容,再输出到屏幕上,然后释放内存,退出程序。

pyc文件

执行Python代码时,如果导入了其他的.py文件,那么,执行过程中会自动生成一个与其同名的.pyc文件,该文件就是Python解释器编译之后产生的字节码。

代码经过编译可以产生字节码;字节码通过反编译也可以得到代码

指定Python解释器

在Python文件的开头加入以下代码就制定了解释器。

  • 第一种方式  告诉shell这个脚本用/usr/bin/python执行
1
#!/usr/bin/python
  • 第二种方式  在操作系统环境不同的情况下制定这个脚本用python来解释。
1
#!/usr/bin/env python

执行Python文件

执行python文件有两种方式:

  • 第一种执行方式
1
2
[root@mosson python_code]# python my.py
Life is short, you need Pytho
  • 第二种执行方式
1
2
3
[root@mosson python_code]# chmod +x my.py 
[root@mosson python_code]# ./my.py 
Life is short, you need Pytho

字符编码

ASCII

python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode  缺点:浪费空间如果是字母特殊字符数字的话

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8

一个汉字3个字节 

gbk1个汉字是2个字节

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

报错:ascii码无法表示中文

1
2
3
4
5
6
#!/usr/bin/env python
print("你好,世界")
 
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print("你好,世界")

代码注释:

单行注释:在代码前加上#

多行注释:

1
2
3
"""
注释内容
"""

pyc文件

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

ps:代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

Py转pyc  其实 就是你的程序代码交给虚拟机转换成机器可以识别的二进制的过程。 就是字节码转换

不是编译过程  

为什么生成pyc文件

缓存的问题。 转换字节码的数据写到硬盘上, 下次执行的时候不用翻译了。

python中的变量

变量的命名规则:

      1 变量名只能是 字母、数字或下划线的任意组合

      2 不能以数字开头

      3 不能是python的已用的变量名

      例如:['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量赋值:

1
2
3
4
#!/usr/bin/env python 
# -*- coding: utf-8 -*- 
name1 = "zhangsan"
name2 = "licsi"

1
2
3
4
5
#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
name1 = "wupeiqi"
name2 = name1

模块导入:

模块导入是大大简化你的程序的可读性。

比如 1.py

1
2
3
4
5
#!/usr/bin/env python
#_*_coding:utf-8_*_
 
import 2.py
print("hello")

而2.py

1
2
3
4
#!/usr/bin/env python
#_*_coding:utf-8_*_
 
print("world")

而执行python 1.py结果是

world

hello

大家看到了吧,import xxx.py 就是将这个文件的内容导入进来替换这个import行。

数据类型

按照特征划分

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
数字类型: 
  整形: 
     布尔型:True  False  必须大写第一个字母 
     长整形: 
     标准整形: 
   
  非整型: 
     双精度浮点型 
     复数 
     decimal(不是内建类型) 
   
  序列类型: 
     字符串:引号引起来的 
     元祖:tuple 不可变 
     列表: 
   
  键值: 
     字典: 
   
  集合类型: 
     可变集合 
     不可变集合 

按照可变性划分:

1
2
3
4
5
6
7
8
9
10
可哈希的不可变数据类型: 
    数字类型 
    不可变集合 
    字符串 
    元组 
  
 可变数据类型 
    字典 
    列表 
    可变集合

流程控制和缩进

注释:if语句,当且仅当if后的条件为真时才会执行if条件下的代码块,

 if 多层判断

1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 __author__ = 'Administrator'
 
inp = raw_input(">>>")
if inp == "1":
    print('1')
elif inp == "2":
    print('2')
else:
    print("other")

while 循环

while 条件:

     动作

当条件一旦满足就不会再执行动作

while的退出循环方法1

例子: 打印数字当数字为7 则退出循环

重点:利用了 flag的布尔类型来做赋值控制。

1
2
3
4
5
6
7
8
9
10
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
 __author__ = 'Administrator'start = 1
flag = True
while flag:
    print(start)
    if start == 7:
        flag = False
start+=1
print("end")    

continue  break练习

continue 是跳出本次循环,继续下次循环

break是跳出本层循环

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Administrator'
 
import time
i=0
while i<=10:
    time.sleep(0.1)
    i+=1
    if == 7:
        continue
    print i
print("end")
检测是否是跳出本层循环
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Administrator'
a=0
b=0
while a<10:
    while b<3:
        if b==2:
break
        b+=1
        print b
    a+=1
    print a

作业:

1
2
3
4
5
6
7
8
9
10
11
12
练习题 
1、使用while循环输入 1 2 3 4 5 6     8 9 10
   
2、求1-100的所有数的和 
   
3、输出 1-100 内的所有奇数 
   
4、输出 1-100 内的所有偶数 
   
5、求1-2+3-4+5 ... 99的所有数的和 
   
6、用户登陆(三次机会重试) 

num one

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Administrator'
 
i=0
while i<=10:
    time.sleep(0.1)
    i+=1
    if == 7:
        continue
    print i
print("end")

 num two

1
2
3
4
5
6
7
8
9
10
11
12
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Administrator'
 
#1到100求和
 
j=0
i=1
while i<=100:
     j+=i
     i+=1
print j

  linux命令行求和 

1
2
3
4
5
6
7
awk 'BEGIN{i=1;do{sum+=i;i++}while (i<=100);print sum}'
   
awk 'BEGIN{i=1;while (i<=100){sum+=i;i++};print sum}'
   
awk 'BEGIN{sum=0;for (i=1;i<=100;i++)sum+=i;print sum}'
   
declare sum=0;for in `seq 1 100`;do let sum+=$i;done;echo $sum

num three

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
#—*— coding:utf-8 —*—
#奇数求和
= 0
= 1
while i < 100:
    += 1
    += 2
print (j)

num four

1
2
3
4
5
6
7
8
9
#!/usr/bin/env python
# -*- coding:utf-8 -*-
#偶数求和
= 0
= 0
while i < 100:
    +=i
    += 2
print(j)

num five

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
__author__ = 'Administrator'
  
# 奇数 求和
j=0
i=1
while i<=100:
    j+=i
    i+=2
print j
  
#偶数 求和
k=0
l=0
while l<=100:
     k+=l
     l+=2
print k
 
print(j-k)
 
 

 

出处:http://www.cnblogs.com/mosson/p/5591008.html

posted on 2016-06-20 16:29  墨鱼哥哥  阅读(326)  评论(0编辑  收藏  举报

导航