zoukankan      html  css  js  c++  java
  • 【知识碎片】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)
    View Code

     构造函数

    __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>'
    View Code

     

    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 '1'
    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 ")
    f.write("You are right ")
    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
                
            
    View Code
  • 相关阅读:
    【Gitbook】实用配置及插件介绍
    【Git】学习记录
    【Ubuntu】使用记录
    intellij idea
    【应用】信息短时存储
    leetcode pow(x,n)实现
    SSM框架-----------SpringMVC+Spring+Mybatis框架整合详细教程
    《平凡的世界》之我看
    垃圾收集器与内存分配策略(三)
    垃圾收集器与内存分配策略(二)
  • 原文地址:https://www.cnblogs.com/xiaoshi657/p/5459740.html
Copyright © 2011-2022 走看看