【知识碎片】python 篇
领域:运维 网站 游戏 搜索 嵌入式 C/S软件
Openstack二次开发
绿色版:Portable Python
面向对象、解释型动态语言
env python 切换版也好使,自己寻找系统中python安装路径
#!/usr/bin/env python
print 'Hello world!'
修改为可执行文件
chmod +x test.py # 脚本文件添加可执行权限
#执行
python name.py
chmod 755 name.py
#执行
./name.py
编程风格
1、缩进统一
Python的代码块不使用大括号({})来控制类,函数以及其他逻辑判断。python最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量
运算符 + - * / 平方 2的8次方 2**8
注释
python中单行注释采用 # 开头。
python 中多行注释使用三个单引号(''')或三个双引号(""")。
导入 import
#全部导入 导入OS整个模块
import os
#导入部分 导入sys模块中mokuainame
form sys import mokuainame
#别名
import os as biemingname
注意tab window 和Linux不一致
下一节 流程控制
百度贴吧获取图片爬虫
#!/usr/bin/python
#-*- coding: UTF-8 -*-
import urllib
import re def getHtml(url):
page = urllib.urlopen(url)
html = page.read()
return html def getImg(html):
reg = r'src="(.+?\.jpg)" pic_ext'
imgre = re.compile(reg)
imglist = re.findall(imgre,html)
x = 0
for imgurl in imglist:
urllib.urlretrieve(imgurl,'%s.jpg' % x)
x+=1 html = getHtml("http://tieba.baidu.com/p/2460150866") print getImg(html)
构造函数
__init__ 析构函数: __del__
面向对象
可以多继承
__private_attrs:两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时self.__private_attrs。
CGI
httpd路径 /etc/httpd/conf/httpd.conf 添加CGI脚本格式修改路径都在这里 ps html 头部下面一定要有空格
#!/usr/bin/python
# -*- coding: UTF-8 -*- print "Content-type:text/html"
print # 空行,告诉服务器结束头部
print '<html>'
print '<head>'
print '<meta charset="utf-8">'
print '<title>Hello Word - 我的第一个 CGI 程序!</title>'
print '</head>'
print '<body>'
print '<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>'
print '</body>'
print '</html>'
2、加#-*- coding: UTF-8 -*-还是乱码
#解决加-*- coding: UTF-8 -*-还是乱码
import sys
reload(sys)
sys.setdefaultencoding( "utf-8" )
1、Python 标识符
在python里,标识符有字母、数字、下划线组成。
在python中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
python中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头(_foo)的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用"from xxx import *"而导入;
以双下划线开头的(__foo)代表类的私有成员;以双下划线开头和结尾的(__foo__)代表python里特殊方法专用的标识,如__init__()代表类的构造函数。/2多行语句
Python语句中一般以新行作为为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:
total = item_one + \
item_two + \
item_three
语句中包含[], {} 或 () 括号就不需要使用多行连接符。如下实例:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
if...if else...else...
pass 过去吧 这段代码不执行
if 1=1
print ''
else:
pass #写pass 不执行了
去空格函数raw_input('input:').strip() #去掉前后空格
for 循环 continue break
while...else...
range 函数
python 文件处理
列表
元组
字典
函数
f=file("test.txt","r") #以Read(w(write))的方式打开文件
f.write("Tody is a good day\n")
f.write("You are right\n")
f.close() #保持关闭
字典是无序的
tab键不全 需要自己去网站弄 python本身没有
readlines() xreadlines() 区别
2.3以后不推荐使用xreadlines
http://www.oschina.net/question/252490_132790?sort=time
with open('foo.txt', 'r') as f:
for line in f:
# do_something(line)
with 理解http://blog.csdn.net/suwei19870312/article/details/23258495
更好的处理读取文件的时候报异常
set(a)
把a列表转换成集合并且去重
http://www。pythontab。com/html/2013/pythonjichu_0227/260.html
a.difference(b) 求a里面有 b里面没有的
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/0013868193482529754158abf734c00bba97c87f89a263b000
zip() map()
http://c.biancheng.net/cpp/html/1824.html
yield (返回迭代器) 和return 冲突,函数中只能使用其中一个
map()
a=rangge(100)
b=map(lambda x:x**2,a) #把a集合中的所有元素都求平方然后返回给b集合
lambda: http://www.cnblogs.com/wanpython/archive/2010/11/01/1865919.html
import Scipy #数学运算的包 开放平方什么的
python 内置函数
http://www.cnblogs.com/hongfei/p/3858256.html
Pickle 序列化 python语言之间内存之间,可以实现内存漂移,a机器挂掉了,把a的状态转移到b机器
json 序列化 跨平台 各种传输
Python2.6开始加入了JSON模块,无需另外下载,Python的Json模块序列化与反序列化的过程分别是 encoding(dumps)和 decoding(loads)
包管理工具PIP python 安装easy_install和pip
装饰器:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386819879946007bbf6ad052463ab18034f0254bf355000
python也有垃圾回收机制
__fangfaname(self) 前面两个下划线私有函数 外部不能调用
如果想调用
p=Person("name",39)
p._Person__fangfaname()
把方法内的局部变量变类变量
class Dog: def say(self):
self.leibianliang=fangfaneibianliang #这样另外一个方法就可以调用了
面向对象继承
class SchoolMember:
school_name = 'Oldboy Linux edu.'
def __init__(self, name, gender,nationality='CN'):
self.name = name
self.gender = gender
self.nation = nationality def tell(self):
print 'Hi, my name is %s , I am from %s' %(self.name, self.nation) class Student(SchoolMember): def __init__(self,Name, Gender, Class , Score,Nation='US' ):
SchoolMember.__init__(self,Name, Gender,Nation)
self.Class = Class
self.Score = Score
#self.Name = name def payTuition(self,amount):
if amount < 6499:
print 'Get the fuck off...'
else:
print 'Welcome onboard!'
class Teacher(SchoolMember):
def __init__(self,Name, Gender, Course , Salary,Nation='FR'):
SchoolMember.__init__(self,Name, Gender,Nation)
self.Course = Course
self.Salary = Salary def teaching(self):
print 'I am teaching %s, i am making %s per month !' %(self.Course, self.Salary) S1 = Student('WangFanHao', 'Male', 'Python','C+','JP')
S1.tell()
S1.payTuition(4999) S2 = Student('ShitTshirt', 'Male', 'Linux','B')
S2.tell()
S2.payTuition(6500) T1 = Teacher('Alex','Male', 'C++', 5000)
T1.tell()
T1.teaching() #SchoolMember
【知识碎片】python 篇的更多相关文章
- 《码农周刊》干货精选(Python 篇)
<码农周刊>已经累计发送了 38 期,我们将干货内容进行了精选.此为 Python 篇. <码农周刊>往期回顾:http://weekly.manong.io/issues/ ...
- 读书笔记——《谁说菜鸟不会数据分析—Python篇》
最近刚读完一本新书,关注的公众号作者出的“谁说菜鸟不会数据分析—Python篇”,话说现在很多微信公众号大牛都在出书,这貌似是一个趋势.. 说说这本书吧,我之前看过一些网文,对于数据分析这一块也有过一 ...
- GitHub 上适合新手的开源项目(Python 篇)
作者:HelloGitHub-卤蛋 随着 Python 语言的流行,越来越多的人加入到了 Python 的大家庭中.为什么这么多人学 Python ?我要喊出那句话了:"人生苦短,我用 Py ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- C++混合编程之idlcpp教程Python篇(9)
上一篇在这 C++混合编程之idlcpp教程Python篇(8) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相比,工程PythonTutorial7中除了四个文件PythonTu ...
- C++混合编程之idlcpp教程Python篇(8)
上一篇在这 C++混合编程之idlcpp教程Python篇(7) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial6中,同样加入了四个文件:Pyt ...
- C++混合编程之idlcpp教程Python篇(7)
上一篇在这 C++混合编程之idlcpp教程Python篇(6) 第一篇在这 C++混合编程之idlcpp教程(一) 与PythonTutorial4工程相似,工程PythonTutorial5中,同 ...
- C++混合编程之idlcpp教程Python篇(6)
上一篇在这 C++混合编程之idlcpp教程Python篇(5) 第一篇在这 C++混合编程之idlcpp教程(一) 工程PythonTutorial4中加入了四个文件:PythonTutorial4 ...
- C++混合编程之idlcpp教程Python篇(5)
上一篇在这 C++混合编程之idlcpp教程Python篇(4) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial3中,同样加入了三个文件:Py ...
- jQuery学习笔记 - 基础知识扫盲入门篇
jQuery学习笔记 - 基础知识扫盲入门篇 2013-06-16 18:42 by 全新时代, 11 阅读, 0 评论, 收藏, 编辑 1.为什么要使用jQuery? 提供了强大的功能函数解决浏览器 ...
随机推荐
- 条款20:在传递对象的时候尽量用reference-to-constent来代替,pass-by-value
注意一下,c++的底层编译器而言,引用类型往往都是由指针来实现出来的,所以pass-by-reference实际意义上往往是传递了一个指针,这对于c++的内置类型来说往往传递一个reference更加 ...
- 【MFC】MoveWindow();函数使用详解
摘自:http://blog.csdn.net/yjkwf/article/details/5281207 CWnd::MoveWindow 详解 2010-02-02 16:08 3432人阅读 评 ...
- 解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题
解决 Laravel/Lumen 出现 "Please provide a valid cache path" 问题 解决 Laravel/Lumen 出现 "Pleas ...
- better1【模式】Module模式
var myModule = (function($, _) { var privateVariable = "Hello World" var pulicProperty = & ...
- 【学习】JennyHui学英语 - Bingo口语笔记
学习素材:Bingo说美语 Hold系列 如何吞音 表示“无所谓” Pick系列 英式和美式英语的发音区别 表示“迷茫” Break系列 爆破音发音技巧 表示“不相信” 常见词汇的缩读 表示“身体抱恙 ...
- 51nod 1495 中国好区间
阿尔法在玩一个游戏,阿尔法给出了一个长度为n的序列,他认为,一段好的区间,它的长度是>=k的,且该区间的第k大的那个数,一定大于等于T.那么问题来了,阿尔法想知道有多少好的区间. 由于阿尔法的序 ...
- PING分组网间探测 ICMP协议
1.Ping的基础知识 Ping是潜水艇人员的专用术语,表示回应的声纳脉冲,在网络中Ping 是一个十分好用的TCP/IP工具.它主要的功能是用来检测网络的连通情况和分析网络速度.是ICMP的一个 ...
- WCF日志跟踪SvcTraceViewer.exe
参考: https://msdn.microsoft.com/zh-cn/library/ms732023.aspx https://msdn.microsoft.com/zh-cn/library/ ...
- Instruments检测解决内存泄露以及进行性能测试
1.启动Xcode自带的Instruments.这里有两种方法启动. 方法一: 方法二: 2.选择Leaks选项.(该选项用来进行内存泄漏检测) 说明: Leaks:找到引发内存泄漏的起点. Time ...
- java多线程:线程体往外抛出异常的处理机制实践
1当线程的线程体内部无捕获异常,将异常抛出线程体外,不同情况下,程序处理机制 测试类 package com.ehking.bankchannel.domesticremit.facade.impl; ...