python自动华 (一)
Python自动化 【第一篇】:Python简介和入门
Python简介:
一、什么是python
Python是一门动态解释性的强类型定义语言。
pythonde 特点:“优雅”、“明确”、“简单”。
二、Python由来
python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。
三、目前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的优缺点
优点:
1、Python程序看上去总是简单易懂,初学者容易上手;
2、开发效率非常高,Python有非常强大的第三方库,降低开发周期;
3、 高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节;
4、可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上);
5、 可扩展性————你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们;
6、可嵌入性————你可以把Python嵌入你的C/C++程序。
缺点:
1、 速度慢;
2、 代码不能加密;
3、 线程不能利用多CPU。
五、Python解释器
CPython 是使用最广的Python解释器。
IPython 只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
PyPy 它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
Jython 运行在Java平台上的Python解释器。
IronPython 是运行在微软.Net平台上的Python解释器。
推荐使用CPython解释器
六、Python版本
py2与3的详细区别:
1、PRINT IS A FUNCTION
The statement has been replaced with a print() function, with keyword arguments to replace most of the special syntax of the old statement (PEP 3105). Examples:
+ View Code
You can also customize the separator between items, e.g.:
|
1 |
print("There are <", 2**32, "> possibilities!", sep="") |
ALL IS UNICODE NOW,从此不再为讨厌的字符编码而烦恼。
2、某些库名称改了:
|
Old Name |
New Name |
|
_winreg |
winreg |
|
ConfigParser |
configparser |
|
copy_reg |
copyreg |
|
Queue |
queue |
|
SocketServer |
socketserver |
|
markupbase |
_markupbase |
|
repr |
reprlib |
|
test.test_support |
test.support |
Python3是趋势,本博文下所有代码都是用Python3编写。
Python入门:
一、 Python安装
1)Windows
1、下载安装包
https://www.python.org/downloads/
2、安装
默认安装路径:C:\python27
3、配置环境变量
【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
如:原来的值;C:\python27,切记前面有分号
2)Linux、mac 自带Python2.6,可自行更新至3版本。
二、 第一个Python程序
在linux 下创建一个文件叫hello.py,并输入
|
1 |
print("Hello World!") |
然后执行命令:python hello.py ,输出
|
1 2 3 |
localhost:~ jieli$ vim hello.py localhost:~ jieli$ python hello.py Hello World! |
指定解释器
上一步中执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。
如果想要类似于执行shell脚本一样执行python脚本,例: ./hello.py ,那么就需要在 hello.py 文件的头部指定解释器,如下:
|
1 2 3 |
#!/usr/bin/env python print "hello,world" |
如此一来,执行: ./hello.py 即可。
ps:执行前需给予 hello.py 执行权限,chmod 755 hello.py
三、变量\字符编码
1)变量
1、声明变量:
|
1 2 3 |
#_*_coding:utf-8_*_ name = "Poker" |
上述代码声明了一个变量,变量名为: name,变量name的值为:"Poker"。
2、变量定义的规则:
- 变量名只能是 字母、数字或下划线的任意组合;
- 变量名的第一个字符不能是数字;
- 以下关键字不能声明为变量名:
['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']
3、变量的赋值
|
1 2 3 4 5 6 7 8 |
name = "Poker" name2 = name print(name,name2) name = "Jack" print("What is the value of name2 now?") |
2)字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保 存,东亚的字符用3个字节保存.
3)注释
当行注视:# 被注释内容
多行注释:""" 被注释内容 """
四、 用户输入
|
1 2 3 4 5 6 7 |
#!/usr/bin/env python #_*_coding:utf-8_*_ #name = raw_input("What is your name?") #only on python 2.x name = input("What is your name?") print("Hello " + name ) |
输入密码时,如果想要不可见,需要利用getpass 模块中的 getpass方法,即:
|
1 2 3 4 5 6 7 8 9 10 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import getpass # 将用户输入的内容赋值给 name 变量 pwd = getpass.getpass("请输入密码:") # 打印输入的内容 print(pwd) |
五、字符串及格式化输出
万恶的字符串拼接:
python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化输出
|
1 2 3 4 |
name = "poker" print "i am %s " % name #输出: i am poker |
PS: 字符串是 %s;整数 %d;浮点数%f 或者用 format方法
六、流程控制
if。。。else 、 for loop 、 while loop
1)if。。。else
需求一:用户身份认证
|
1
2
3
4
5
6
7
8
9
|
#!/usr/bin/env python#-*- coding:utf-8 -*-import getpassname = raw_input("请输入用户名:")pwd = raw_input("请输入密码:")if name == "tianshuai" and pwd == "123": print "登录成功"else: print "登录失败" |
测试:
|
1
2
3
4
5
6
7
8
9
|
root@tim:/home/tim# python tianshuai.py请输入用户名:tianshuai请输入密码:登录成功root@tim:/home/tim# python tianshuai.py请输入用户名:tianshuai请输入密码:登录失败root@tim:/home/tim# |
2) for loop
需求一:循环十次,但是遇到小于5的循环次数就不走了,直接跳入下一次循环
|
1 2 3 4 |
for i in range(10): if i<5: continue #不往下走了,直接进入下一次loop print("loop:", i ) |
需求二:还是上面的程序,但是遇到大于5的循环次数就不走了,直接退出
|
1 2 3 4 |
for i in range(10): if i>5: break #不往下走了,直接跳出整个loop print("loop:", i ) |
需求三、猜数字游戏 有3次机会,如果3次中没有猜中给予提示,3次都没有猜中,鼓励!
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
#!/usr/bin/env python#-*- coding:utf-8 -*-import random #随机模块rand_num = random.randrange(10) for i in range(3): guess_num = int(raw_input("请猜测数字:")) if guess_num == rand_num: print "太棒了你猜对了" break elif guess_num > rand_num: print "你猜测的有点大了,请尝试小点的数字" else: print "你猜测的有点小了,请尝试大点的数字"else: print "不要灰心,这次只是运气不好,请下次尝试" print "这个真正的数字是:%" % rand_num |
3)while loop
他的原理是:当条件为真的时候运行,当条件为假的时候停止!
无限循环
|
1 2 3 4 5 |
|
没有一个规定次数,不设置条件永远循环下去。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
#!/usr/bin/env python#-*- coding:utf-8 -*-import timecount = 0while True: count +=1 print "loop",count time.sleep(3)#这个循环3秒钟自+1 ,后无线循环只要这个条件为”真“,就无限循环下去那看下下面的例子#!/usr/bin/env python#-*- coding:utf-8 -*- import timecout = 0 while cout < 3: cout +=1 print "shuai",cout time.sleep(3) #这个循环每3秒循环一次,当条件cout < 3的时候为真(自己设置的条件),当cout 不小于3的时候为假(false)停止。 |
python自动华 (一)的更多相关文章
- python自动华 (十八)
Python自动化 [第十八篇]:JavaScript 正则表达式及Django初识 本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../ 用于定 ...
- python自动华 (十七)
Python自动化 [第十七篇]:jQuery介绍 jQuery jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对jav ...
- python自动华 (十二)
Python自动化 [第十二篇]:Python进阶-MySQL和ORM 本节内容 数据库介绍 mysql 数据库安装使用 mysql管理 mysql 数据类型 常用mysql命令 创建数据库 外键 增 ...
- python自动华 (十)
Python自动化 [第十篇]:Python进阶-多进程/协程/事件驱动与Select\Poll\Epoll异步IO 本节内容: 多进程 协程 事件驱动与Select\Poll\Epoll异步IO ...
- python自动华 (八)
Python自动化 [第八篇]:Python基础-Socket编程进阶 本节内容: Socket语法及相关 SocketServer实现多并发 1. Socket语法及相关 sk = socket.s ...
- python自动华 (七)
Python自动化 [第七篇]:Python基础-面向对象高级语法.异常处理.Scoket开发基础 本节内容: 1. 面向对象高级语法部分 1.1 静态方法.类方法.属性方法 1.2 ...
- python自动华 (六)
Python自动化 [第六篇]:Python基础-面向对象 目录: 面向过程VS面向对象 面向对象编程介绍 为什么要用面向对象进行开发 面向对象的特性:封装.继承.多态 面向过程 VS 面向对象 ...
- python自动华 (三)
Python自动化 [第三篇]:Python基础-集合.文件操作.字符编码与转码.函数 1. 集合 1.1 特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一 ...
- python自动华 (二)
Python自动化 [第二篇]:Python基础-列表.元组.字典 本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初 ...
- python自动华 (十六)
Python自动化 [第十六篇]:JavaScript作用域和Dom收尾 本节内容: javascript作用域 DOM收尾 JavaScript作用域 JavaScript的作用域一直以来是前端开发 ...
随机推荐
- jenkinsFile harbor docker优化版
node { //study-center def mvnHome = tool name: 'maven', type: 'maven' REGISTRY = "192.168.22.27 ...
- 十二、使用PWM调整LCD背光亮度
和手机一样,开发板中也带有调整背光亮度的功能. 调整背光亮度依赖于PWM,它通过调节脉冲宽度来控制背光亮度,此方式需要使用PWM驱动.本章将对其进行讲解. 一.用户空间调整背光亮度 一般应用程序可以通 ...
- c++学习(三)------static数据与成员函数
疑惑: static类型成员是类的全局变量,所有类的实例都享有这个变量,或者说这个变量不属于任何一个类的实例. static类型变量可以为private,或public或其他(static数据可以被继 ...
- harbor环境搭建及web使用
概述 Habor是由VMWare公司开源的容器镜像仓库.事实上,Habor是在Docker Registry上进行了相应的企业级扩展,从而获得了更加广泛的应用,这些新的企业级特性包括:管理用户界面,基 ...
- Java内存 模型理解
概述 在正式讲Java内存模型之前,我们先了解一些物理计算机并发问题,然后一点点的引出Java内存模型的由来. 多任务处理在现在计算机操作系统中几乎是一项必备的功能.这不单是因为计算机计算能力强大,更 ...
- POJ1083(Moving Tables)--简单模拟
题目链接:http://poj.org/problem?id=1083 如图所示在一条走廊的两侧各有200个房间,现在给定一些成对的房间相互交换桌子,但是走廊每次只能通过一组搬运, 也就是说如果两个搬 ...
- Image Processing and Analysis_15_Image Registration: A Method for Registration of 3-D shapes——1992
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- 【2017-06-29】在登录页面自动返回上次请求页面、Js获取table中的行数与列数
一.在登录页面自动返回上次请求页面 Request.UrlReferrer比如 if (Request.UrlReferrer != null) { //如果能获取来路地址 Response.Redi ...
- nginx动静分离简单实例实现
什么是动静分离? Nginx 动静分离简单来说就是把动态和静态请求分开,不能理解成只是将动态页面和静态页面物理分离.严格意义上说应该是动态请求和静态请求分开,可以理解成使用 nginx 处理静态页面, ...
- webpack与浏览器缓存
根据之前的配置,假设文件上传至服务器中,没有加hash,如果页面内容有更改,浏览器刷新的时候,请求的还是原先的文件,也就是浏览器的缓存,因为名字没有变.现在我们在上线的webpack配置中加上hash ...