Python-01
python是解释型脚本语言
python的特性总结:缩进,动态,字节码
而c语言是编译型语言,要先编译gcc hello.c –o hello
./hello
解释型和编译型,两者各有利弊。
编译型程序执行快,同等条件下对系统的要求比较低,因此开发系统,大型应用程序和数据库系统都会用到;
解释型平台兼容性好,网页脚本,服务器脚本和辅助开发接口。
动态类型和静态类型语言
动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在动态编程中不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。
静态类型语言在变量声明的时候就要指定数据类型,在编译期间检查。
强类型和弱类型定义语言
强类型是一旦被定义为某个数据类型,则永远是这个数据类型。类型安全的语言。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。
另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言); JAVA是静态语言,是强类型定义语言(类型安全的语言)。
而对于python python hello.py
在运行脚本之前,得到结果之后
1.python先将脚本编译成字节码(pyc,pyo)
2.python虚拟机解释并运行字节码文件
对于编译型语言的内部机制
1.先将源代码编译成机器码(机器能读懂的代码),生成可执行文件
2.运行可执行文件
python比c运算速度慢
python在赋值时确认数据类型
有的编辑器tab键缩进方式是四个空格
import this
python是一门动态解释性的强类型定义语言
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
import time import webbrowser total_breaks=3 break_count=0 while(break_count<total_breaks): time.sleep(10) webbrowser.open("http://www.youtube.com/watch?v=dqhfefyh) break_count=break_count+1
import os def rename_files() #(1) get all the name file_list=os.listdir(r"C:\OOP\prank") print(file_list) saved_path=os.getcwd() print("Current working directory is "+ saved_path) os.chdir(r"C:\OOP\prank") #(2) for each file, rename the file for file_name in file_list: os.rename(file_name, file_name.translate(None,"0123456789")) os.chdir(saved_path) rename_files()
shell
shell +sublime
PyChm
IDLE
机器语言:机器可以读的0,1
汇编语言:可读性比机器语言增加的
高级语言:类似于自然语言
控制器,处理器,存储器,输入输出设备
用Python可以做什么?
预测未来最好的办法就是创造它
Python擅长的领域
Web开发 Django\pyramid\Tornado\Bottle\Flask\WebPy
网络编程 Twisted\Requests\Scrapy\Paramiko
科学运算 SciPy\Pandas\Ipython
GUI图形开发 wxPython\PyQT\Kivy
运维自动化 OpenStack\SaltStack\Ansible\腾讯蓝鲸
可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。
首选是网络应用,包括网站、后台服务等等;其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;另外就是把其他语言开发的程序再包装起来,方便使用。
Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。
Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。
Python优点是简单;开发效率高,有大量的模块库不用反复造轮子;高级语言,不需要考虑诸如内存管理的底层细节。
Python的第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。但由于网络延迟更慢,加上网络的等待的时间,差距也可以忽略。
第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
第三个缺点是线程不能利用多CPU问题。
一 语言基础(5-6)
数据类型
流程控制
常用模块
函数,迭代器,装饰器
递归,迭代,反射
面向对象编程(购物车程序,ATM信用卡开发,计算器程序开发,模拟人生游戏开发)
二 网络编程(4-5)
Socket c/s编程, Twisted异步网络框架,网络爬虫开发
多线程,多进程,协程gevent,select\poll\epoll
生产者消费者模型
审计堡垒机系统开发
FTP服务器开发
批量命令,文件分布工具
RabbitMQ消息队列,SqlAlchemy ORM
类SaltStack配置管理工具开发
Redis\MemCache\MongoDBhuan缓存数据库
三 web开发基础(3-4)
HTML/CSS基础
Dom编程
原生JS学习
Jquery/EasyUi/AngulaJS
Ajax异步加载
Highchart画图
Bootstrap
四 算法与设计模式 (1)
冒泡,二叉树,哈希,折半等常见算法学习
工厂模式,单例模式,享元模式,代理模式等常用设计模式学习
五 PY WEB框架(5)
MVC架构讲解
自行开发一个WEB框架
Django\Tornado\Flask\Bottle\WebPy框架学习
Session\中间件\ORM\Cookie\CSRF\FORM...
Restful API框架
权限管理后台开发
开发BBS论坛
开发WEB聊天室
六 项目实战篇(8)
购物商场开发
主机管理+任务编排+运维审计堡垒机开发
分布式类Nagios/Zabbix监控产品开发
CMDB资产管理开发
基于用户视角的网站访问质量监测分析平台开发
Docker自动化管理平台开发
OpenStack二次开发
python的语法是很精简的
一定要注意的是,缩进的格式要求非常严格。
BIF=Build in functions 内置函数:为了程序员快速编写程序 print input等,python有很多内置函数
在使用变量之前,需要对其先赋值
变量名可以包括字母,数字,下划线,但变量不能以数字开头,字母的大小写是不同的
字符串 ”8“+”5“ 与8+5不同
python的输入输出
输出print
输出raw_input()
python的数据类型
为了避免语言歧义,类型是编程语言对数据的一种划分
数字类型
0x 16进制
0b 2进制
0o 8进制
整数
浮点数
复数类型
int(),float(),complex()
type(4.5)
字符串
元组类型
列表类型
文件类型
字典类型
如果字符串内部既包含'
又包含"
怎么办?可以用转义字符\
来标识,比如:
'I\'m \"OK\"!'
转义字符\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
如果字符串里面有很多字符都需要转义,就需要加很多\
,为了简化,Python还允许用r''
表示''
内部的字符串默认不转义
>>> print '\\\t\\'
\ \
>>> print r'\\\t\\'
\\\t\\
布尔值
and, or,not
空值
None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
列表
字典
import引入外部库(turtle,math,random)
def用于定义函数
字符串
遍历字符串中的每个字符
for <var> in <string>
<string>.upper() 字符串字母大写
<string>.lower() 字符串中字母小写
<string>.capitalize() 首字母大写
<string>.strip() 去两边空格及去指定字符
<string>.split() 按指定的字符分割字符串为数组
<string>.isdigit() 判断是否是数字类型
<string>.find() 搜索指定字符串
<string>.replace() 替换指定内容