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年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

#break time
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() 替换指定内容

 

posted on 2017-06-26 17:28  AlexGui  阅读(146)  评论(0编辑  收藏  举报

导航