码迷,mamicode.com
首页 > 编程语言 > 详细

1DAY 初识Python

时间:2017-06-07 15:39:25      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:结构   虚拟机   scripts   自动生成   图形   执行流程   最新   dex   字节   

技术分享

编译型vs解释型

编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。

解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。

缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。

注解:java代码号称一次编译到处运行,因为java代理需要先编译成字节码(一种中间格式的代码),然后拿着字节码到处运行,每次运行都需要交给jvm去编译成机器指令后才能执行,因而java是混合型

而有的人会有疑问,python代码也是先编译成字节码然后交给python解释器去执行的啊,难道python不是混合型吗?当然不是

1. 首先需要知道,只有在import导入py文件时,才会产生pyc字节码文件,该字节码文件是可以代替源文件而直接执行的

2. 但每次执行py文件,产生的字节码并不会保留下来,也就是说,每次执行py文件,都是要重新经历一遍:py文件->字节码-->python解释器-->机器码,每次都是一个重新解释执行的过程。

3.4 为何选择Python

这他妈的还用问,你都TMD看了这么多,还TMD问这种问题?

C 和 Python、Java、C#等

    C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

CPython解释器是由C语言开发的

  对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
  对于速度:Python的运行速度相较与C,绝逼是慢了

Python 和 Java、C#等

  对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
  对于速度:Python在速度上可能稍显逊色

1.速度永远不是关键

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

2.加密也不是关键

对于编译型语言如C语言来说,可以将编译后的代码发给用户,用户反解几乎是不可能的,相当于自带加密功能了。而解释型语言如python只能发布源码给用户,但其实这没什么问题,现在主流的思想是软件开源,千万别意淫你的软件有多么大的商业价值。

3.5 Python解释器的种类

python是一门语言,用这门语言写出的代码,需要由python的解释器去解释执行,解释器有如下分类:

以上除PyPy之外,其他的Python的对应关系和执行流程如下:

技术分享

 PyPy,在Python的基础上对Python的字节码进一步处理,从而提升执行速度!

 技术分享

3.6 python解释器的发展史

四 python环境

注意:环境变量的设置

windows:

1
2
3
4
5
6
7
1、下载安装包
    https://www.python.org/downloads/
2、安装
    默认安装路径:C:\python27
3、配置环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录以及安装目录下的Scripts目录追加到变值值中,用 ; 分割】
    如:原来的值;C:\python27,切记前面有分号

linux:

1
2
3
无需安装,原装Python环境
  
ps:如果自带2.6,请更新至2.7

更新Python

windows:

1
卸载重装即可

linux:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
查看默认Python版本
python -V
  
1、安装gcc,用于编译Python源码
    yum install gcc
2、下载源码包,https://www.python.org/ftp/python/
3、解压并进入源码文件
4、编译安装
    ./configure
    make all
    make install
5、查看版本
    /usr/local/bin/python2.7 -V
6、修改默认Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -/usr/local/bin/python2.7 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本
    vi /usr/bin/yum
    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

五 python入门

5.1 第一句python代码

1. 解释器:即时调试代码,代码无法永久保存

2. 文件:永久保存代码


在D:\python_test\目录下新建文件hello.py,编写代码如下

print(‘hello world‘)

执行hello.py,即python D:\python_test\hello.py

python内部执行过程如下:

技术分享

 

上一步中执行python D:\python_test\hello.py时,明确的指出 hello.py 脚本由 python 解释器来执行。

在linux平台中如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:

#!/usr/bin/env python #该行只对linux有效

print(‘hello world‘)

 

ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py

5.2 文件头

#!/usr/bin/env python
# -*- coding: utf-8 -*-

5.3 注释

当行注视:# 被注释内容

多行注释:""" 被注释内容 """

5.4 执行脚本传入参数

Python有大量的模块,从而使得开发Python程序非常简洁。类库有包括三中:

Python内部提供一个 sys 的模块,其中的 sys.argv 用来捕获执行执行python脚本时传入的参数

1
2
3
4
5
6
#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
import sys
  
print sys.argv

执行

C:\Users\Administrator>python D:\python_test\hello.py arg1 arg2 arg3
[‘D:\\python_test\\hello.py‘, ‘arg1‘, ‘arg2‘, ‘arg3‘]

 

5.5 了解pyc文件

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

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

六 变量

6.1 为何要有变量

程序执行的本质就是一系列状态的变化,变量二字的核心一个是变,一个是量,‘变‘正好对应程序的变化,‘量‘即计量,反映的是某种状态,

比如一款游戏中的人物初始等级:level=1,过了一段时间后升级了:level=10

6.2 变量的声明与引用

#!/usr/bin/env python

name=‘egon‘ #变量的声明
name #通过变量名,引用变量的值
print(name) #引用并且打印变量名name对应的值,即‘egon‘

6.3 标识符命令规范:

6.4 变量的赋值

#!/usr/bin/env python

name1=‘lhf‘
name2=‘egon‘

技术分享

#!/usr/bin/env python

name1=‘lhf‘
name2=name1

 

技术分享

 

 

技术分享
#!/usr/bin/env python

#一个游戏人物的等级由1级升到2级
level=1
level=2

#一个游戏帐号的密码由‘123‘改成‘456‘
passwd=‘123‘
passwd=‘456‘

#一个人的名字有‘lhf‘改成‘egon‘
name=‘lhf‘
name=‘egon‘
技术分享

七 输入输出

python3中统一都是input,python2中有raw_input等同于python3的input,另外python2中也有input

1.res=input("python3: ")

2.res=raw_input("python2: ")

3.res=raw_input("python2: ")

1,2无论接收何种输入,都被存为字符串赋值给res,而3的意思是,用户输入何种类型,就以何种类型赋值给res

#!/usr/bin/env python

name=input(‘请输入用户名:‘)
print(name)

执行

C:\Users\Administrator>python D:\python_test\hello.py
请输入用户名:egon
egon

===============================================================================

输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:

#!/usr/bin/env python

import getpass
password=getpass.getpass(‘请输入密码:‘)
print(password)

执行(在pycharm中无法执行,需要到终端中执行)

C:\Users\Administrator>python D:\python_test\hello.py
请输入密码:
123456

八 简单的运算符

1、算数运算:

 技术分享

2、比较运算:

 技术分享

3、赋值运算:

技术分享 

4、位运算:

技术分享

注: ~  举例: ~5 = -6  解释: 将二进制数+1之后乘以-1,即~x = -(x+1),-(101 + 1) = -110

按位反转仅能用在数字前面。所以写成 3+~5 可以得到结果-3,写成3~5就出错了

5、逻辑运算:

 技术分享

and注解:

  1. 在Python 中,and 和 or 执行布尔逻辑演算,如你所期待的一样,但是它们并不返回布尔值;而是,返回它们实际进行比较的值之一。
  2. 在布尔上下文中从左到右演算表达式的值,如果布尔上下文中的所有值都为真,那么 and 返回最后一个值。
  3. 如果布尔上下文中的某个值为假,则 and 返回第一个假值

or注解:

  1. 使用 or 时,在布尔上下文中从左到右演算值,就像 and 一样。如果有一个值为真,or 立刻返回该值
  2. 如果所有的值都为假,or 返回最后一个假值
  3. 注意 or 在布尔上下文中会一直进行表达式演算直到找到第一个真值,然后就会忽略剩余的比较值

and-or结合使用:

  1. 结合了前面的两种语法,推理即可。
  2. 为加强程序可读性,最好与括号连用,例如:
    (1 and ‘x‘) or ‘y‘

6、成员运算:

技术分享 

 

7.身份运算

 

 技术分享

 

8.运算符优先级:自上而下,优先级从高到低

 

技术分享

 

九 流程控制

9.1 条件语句

1 单分支

2 多分支

需求一、用户登陆验证

技术分享
#!/usr/bin/env python

name=input(‘请输入用户名字:‘)
password=input(‘请输入密码:‘)

if name == ‘egon‘ and password == ‘123‘:
    print(‘egon login success‘)
else:
    print(‘用户名或密码错误‘)
技术分享

 

需求二、根据用户输入内容输出其权限

技术分享
#!/usr/bin/env python
#根据用户输入内容打印其权限

‘‘‘
egon --> 超级管理员
tom  --> 普通管理员
jack,rain --> 业务主管
其他 --> 普通用户
‘‘‘
name=input(‘请输入用户名字:‘)

if name == ‘egon‘:
    print(‘超级管理员‘)
elif name == ‘tom‘:
    print(‘普通管理员‘)
elif name == ‘jack‘ or name == ‘rain‘:
    print(‘业务主管‘)
else:
    print(‘普通用户‘)
技术分享

9.2 循环语句

while 循环

1、基本循环

while 条件:
     
    # 循环体
 
    # 如果条件为真,那么循环体则执行
    # 如果条件为假,那么循环体不执行

 

2、break

break用于退出本层循环

while True:
    print "123"
    break
    print "456"

 

3、continue

continue用于退出本次循环,继续下一次循环

while True:
    print "123"
    continue
    print "456"

 

 

 

1DAY 初识Python

标签:结构   虚拟机   scripts   自动生成   图形   执行流程   最新   dex   字节   

原文地址:http://www.cnblogs.com/sjxsq/p/6956966.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
分享档案
周排行
mamicode.com排行更多图片
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!