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

第一篇:初识Python

时间:2017-06-19 17:07:15      阅读:350      评论:0      收藏:0      [点我收藏+]

标签:模块   ini   中国人   自动生成   方法   tac   ble   循环语句   otl   

技术分享

编译型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
回到顶部

八 简单的运算符

算数运算;逻辑运算;比较运算;关系运算;

回到顶部

九 流程控制

回到顶部

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"

 

4 tag

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

# while True:
# username=input(‘username: ‘)
# password=input(‘password: ‘)
# if username == ‘egon‘ and password == ‘123‘:
# while True:
# cmd=input(‘>>: ‘)
# if cmd == ‘q‘:
# break
# print(‘------>%s‘ %cmd)
# break
tag=True
while tag:
username=input(‘username: ‘)
password=input(‘password: ‘)
if username == ‘egon‘ and password == ‘123‘:
while tag:
cmd=input(‘>>: ‘)
if cmd == ‘q‘:
tag=False
continue
print(‘------>%s‘ %cmd)

for循环

for i in range(1,10):
    for j in range(1,i+1):
        print(‘%s*%s=%s‘ %(i,j,i*j),end=‘ ‘)
    print()

十 本节练习

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、用户登陆(三次机会重试)

#题一
count=1
while count <= 10:
if count == 7:
count+=1
continue
print(count)
count+=1

count=1
while count <= 10:
if count != 7:
print(count)
count+=1

#题目二
res=0
count=1
while count <= 100:
res+=count
count+=1
print(res)

#题目三
count=1
while count <= 100:
if count%2 != 0:
print(count)
count+=1

#题目四
count=1
while count <= 100:
if count%2 == 0:
print(count)
count+=1



#题目五
res=0
count=1
while count <= 5:
if count%2 == 0:
res-=count
else:
res+=count
count+=1
print(res)

#题目六
count=0
while count < 3:
name=input(‘请输入用户名:‘)
password=input(‘请输入密码:‘)
if name == ‘egon‘ and password == ‘123‘:
print(‘login success‘)
break
else:
print(‘用户名或者密码错误‘)
count+=1

 

第一篇:初识Python

标签:模块   ini   中国人   自动生成   方法   tac   ble   循环语句   otl   

原文地址:http://www.cnblogs.com/zatzsr98/p/7049375.html

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