python自动化之路-day1
Python简介
Python的创始人为吉多·范罗苏姆(Guido van Rossum)简称龟叔;
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
Python的应用
python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,
如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
目前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)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
通过上面这些介绍,我们可以得出,**python是一门动态解释性的强类型定义语言**
Python的优缺点
先看优点Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。高级语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节可移植性————由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工 作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行可扩展性————如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。可嵌入性————你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
再看缺点:速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运一个程序花了0.1s,用Python是0.01s,这样C语言直接比Python快了10s,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。
Python的安装
Windows1、下载安装包https://www.python.org/downloads/2、安装默认安装路径:C:\python353、配置环境变量【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】如:原来的值;C:\python35,切记前面有分号
Linux和Mac无需安装,原装Python环境ps:如果自带2.6,请更新至3.5,或者两个版本共存
第一个Python程序
在家目录创建个helloworld.py程序,内容为:#!/usr/bin/env python3 #指定运行的程序的路径
print("hello,world")
PS:第一行是指定这个脚本是由python解释器来执行,第二行是在屏幕上打印"hello,world"
一、第一句Python代码
在 /home/dev/ 目录下创建 hello.py 文件,内容如下:
1 |
print "hello,world" |
执行 hello.py 文件,即: python /home/dev/hello.py
python内部执行过程如下:
Python变量
#!/usr/bin/envpython
# -*- coding:utf-8 -*-
name1 = "wupeiqi"
name2 = "alex"
字符编码
python解释器在加载.py文案中的代码时,会对内容进行编码(默认ascll)
(AmericanStandard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:
注释
单行注释:# 被注释内容
用户输入
name = input("name:") age = input("age:") job = input("job:") hobby = input("hobby:") hobby_two = "meinv"
需要注意的是python2和python3的用户交互的区别。
字符串格式化
print函数的使用 Name = raw_input("Name:")Age= raw_input("Age:") Job = raw_input("Job:")print("Information of[]:" + Name + "\n Name:[]" + Name + "\n Age:[]" + Age + "\n Name:[]" + Job)msg = ''' Information of %s Name{}:%s Age{}:%s Job{}:%s ''' %(Name,Name,Age,Job)print(msg)print(type(Name)) print(type(Age)) print(type(Job)) print("Information of%s;\nName;%s\nAge;%s\nJob;%s" %(Name, Name, Age,Job))%s:字符串string %d整数int %f浮点数float
流程控制if
luckynum = 19inputnum = -1for i in range(3): inputnum = int(raw_input("please inputnum int:"))if inputnum > luckynum:print("the real number is smaller.") elif inputnum < luckynum: print("the real number is bigger.") else: print("bingo") break else: print("too many retrys!")
模块初始
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串str2转换成gb2312编码。
由于Python的字符串类型是str
,在内存中以Unicode表示,一个字符对应若干个字节。如果要在网络上传输,或者保存到磁盘上,就需要把str
变为以字节为单位的bytes
。
Day1: 作业
作业二:编写登陆接口
- 输入用户名密码
- 认证成功后显示欢迎信息
- 输错三次后锁定
本人作业code:(欢迎交流)
import os,sys,shutil file1 = open("test.txt","r") #打开文件 line = file1.read() line = line.split() #格式化字符串 file1.close() user_name = input("Username:") if user_name in line:p = line.index(user_name)+ 2 #p 密码物理位置 n = line.index(user_name)+ 1 #n 用户的锁定状态 if "inactive" == line[p]: #检索文件,如果用户状态为锁定,则退出 print("You have be locked! Please contact adminstrator!")sys.exit(0)else:for i in range(3): #循环三次,如果密码正确,登录成功 passwd = input("Passwd:")if line[n] == passwd:print("Welcome %s login our system"%user_name)break else: #循环三次后,如果密码不正确,则修改用户状态,锁定用户 print("You have retried 3 times,to avoid attack,I will block your account")file2 = open("test_update.txt","w")file1 = open("test.txt","r")for m in file1:if user_name in m:m = m.replace("active","inactive")file2.write(m)os.rename("test_update.txt","test.txt")file1.close()file2.close()sys.exit(0) else: #用户不在文件中,则直接退出 print("Invalid name! Bye!Bye!")
python自动化之路-day1相关推荐
- python 自动化之路-day01
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- python自动化之路-day2
本节内容: for循环 while循环 数据类型(字符串.数字.列表.字典.元组) for循环 1.介绍 python中循环大多数都是用for来完成,for循环是一种迭代循环机制不同于 while循 ...
- python学习之路day1
学习总结: 变量,字符的由来,python2和python3的区别,控制语句:if,for,while,break,continue用法 学习示例: if用法1:判断年龄 1 # -*- coding ...
- python 自动化之路 day 08_2 网络编程
本节内容 Socket介绍 Socket参数介绍 基本Socket实例 Socket实现多连接处理 通过Socket实现简单SSH 通过Socket实现文件传送 作业:开发一个支持多用户在线的FTP程 ...
- python自动化运维之路~DAY1
python自动化运维之路~DAY1 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件大小单位单位换算 我们一起看一下下面的图: 没错,都是数字,而且这些数字都是二进制的数字 ...
- 开启Python自动化运维之路
关于Python的入门,推荐Dive into Python及廖雪峰的Python教程. 第一个程序 学一门语言,按惯例都要先来一个Hello World! 代码高亮效果 代码如下: print(&q ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可以进 ...
- python自动化运维之路~DAY6
python自动化运维之路~DAY6 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果你想开发一款游戏,会存在角色的混搭的情况,这个时候"面向对象过程"就出 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
最新文章
- React Native常用组件之ListView
- 获取表中的某个字段名
- ai边缘平滑_AI基础教程113:“效果”菜单之“画笔描边”(一)喷溅效果
- php 自制建议神马收录查询工具
- 大页内存的使用:HugePages(大内存页)的原理与使用
- 阿里粗排技术体系与最新进展
- hdu 1027 输出第m个全排列(next_permutation)
- LocalDate获取时间戳
- 地震后的重建!——AD灾难恢复!
- 面向对象基础9(继承与继承语法)
- 【Python】小甲鱼Python学习总结——代码版
- 1分钟查找是退回件的快递单号
- explain 介绍
- 分子动力学模拟之SETTLE约束算法
- 聊天机器人简介与体验网址
- el-upload上传失败提示框重新上传直接弹出选择文件
- hdu4082 Hou Yi's secret(相似三角形)
- ticwatch能支持鸿蒙吗,我的廉价表盒 篇二:过气的智能手表?出门问问Ticwatch2 一年半断断续续的使用体验...
- onecloud的一次刷机自我小总结
- Java反弹球两球相撞_java实现小球碰撞反弹