python零碎笔记(持续扩充)

原创
2014/02/04 02:22
阅读数 506

python学习零碎笔记

注:此笔记是从各种书本各种地方学习总结得来

###2014/2/4###

  • 输出8进制和16进制:%o,%x
  • <code>len();</code>比较强大,可以查看列表、字典、元祖和字符串等的“长度”
  • 集合删除重复元素;<code>a = ['1','2','2','3','4']; a=set(a);</code>集合没有索引等一些操作,区别于列表元祖
  • <code>dir();</code>查看一个变量或函数或对象...的所有属性
  • 利用 -i 在Python中运行程序
  • 定义函数或者类的时候为它添加描述。docstring 可以通过<code> __doc__ </code>来查看

###2014/2/5###

  • <code>try···except···</code> 不是catch
  • 文件夹及其文件操作实例:递归目录列表。感觉python的文件相关操作很强简洁

<pre><code> def print_tree(path): for name in os.listdir(path): fullpath = os.path.join(path, name) print path if os.path.isdir(path): print_tree(fullpath) </pre></code>

  • 通配:<code>glob.glob("C:\P*")</code> 匹配名称以P开头的文件或者文件夹。字母加一个*号匹配以P字母开头的文件或.... glob模块提供glob函数可以进行匹配
  • lambda匿名函数。

<pre><code> list = [1,2,3,4,5,6,7,8,9,10] print ([x for x in list if x%2 == 0]) 输出结果:[2,4,6,8,10] </pre></code>

###2014/2/7###

import smtplib from email.mime.text import MIMEText _user = "@qq.com" _pwd = "***" _to = "@qq.com" 使用MIMEText构造符合smtp协议的header及body msg = MIMEText("乔装打扮,不择手段") msg["Subject"] = "don't panic" msg["From"] = _user msg["To"] = _to s = smtplib.SMTP("smtp.qq.com", timeout=30) 连接smtp邮件服务器,端口默认是25 s.login(_user, _pwd) 登陆服务器 s.sendmail(_user, _to, msg.as_string()) 发送邮件 s.close() </pre></code>

###2014/2/8### ####正则表达式####

  • . 任意单一字符
  • \d 任意一位数字
  • [A-Z] A到Z中任意一个字符(大写,小写类比)
  • [A-Za-z] a到z中任意一个(不区分大小写)
  • + 匹配一个或更多(\d+ 匹配一个或多个数字)

###2014/2/16### ####C和python的相互调用####

  1. python调用C(一个例子(简单情况))从这里学习(源地址) http://www.oschina.net/question/234345_48628; http://blog.chinaunix.net/uid-22920230-id-3418169.html。

     <!-- lang: cpp -->
     #include <stdio.h>
     extern "C" {
         int cal(int n){
             return cal(n-1)*n;
     }
     g++ test.cpp -fPIC -shared -o libtest.so
     import ctypes
     so = ctypes.CDLL("libtest.so")
     a = so.cal(5)
     print a
    
  2. C调用python

     <!-- lang: cpp -->
      #include <python.h>
     int main(){
         Py_Initiallize();
         PyRun_SimpleString("import sys");
         Pyrun_SimpleString("sys.path.append('./')");
         PyObject * pModule = NULL;
         PyObject * pFunc = NULL;
         pModule = PyImport_ImportModule("test");
         pFunc = PyOnbject_GetAttrString(pModule, "hello");
         PyEval_CallObject(pFunc, NULL);
         PyFinalize();
         return 0;
     }
    一种方法:gcc -I/usr/include/python2.7/ -L/usr/lib/ -lpython2.7 -0 main main.c
     二种方法:g++ main.cpp -I/usr/local/include/python2.7 -ldl -lutil -lpthread -lpython2.7
     def hello():
         print "hello world"
    
  3. python 运行代参数的函数

     <!-- lang: python -->
     import sys
     print "*******The Result*******"
     print sys.argv[0]
     pirnt sys.argv[1] #脚本后面第一个参数
    
     python test.py argv1
     *******The Result*******
     test.py
     argv1
    

###2014年5月12 ####virtualenvwrapper使用

  • 安装: pip install virtualenvwrapper
  • mkvirtualenv [env1] 创新的虚拟环境
  • lssitepackages 显示该环境中所安装的包
  • workon [env]
  • deactivate 在某个环境中使用,切换到系统的python环境
  • showvirtualenv [env] 显示指定环境的详情。
  • rmvirtualenv [env] 移除指定的虚拟环境

###2014年5月25日 ####py2exe打包示例

<!-- lang: python -->
from distutils.core import setup
import py2exe
import sys

#this allow to run it with a simple double click.
sys.argv.append('py2exe')  #允许程序可以双击运行

py2exe_options = {
		"includes": ["sip"],  #PyQt打包时候需要的文件
		"dll_excludes": ["MSVCP90.dll",],  
		"compressed": 1,  #为1,则为压缩文件
		"optimize": 2,  #为优化级别,默认为0
		#"ascii": 0,  #知不自动包含encoding和codecs
		"bundle_files": 1,  #bundle-diles是指将程序打包成单文件(此时还会有一个zip文件。
		}
script = [{
	"script": "guess-input.pyw",
	#'icon_resources': [(0, 'main.ico'),]
	}]

setup(
		name = 'PyQt Demo',
		version = '1.0',
		windows = ['guess-input.pyw'],  #表示没有命令行窗口出现
		zipfile = None,  #没有zip文件生成,也就是,没有library
		options = {'py2exe':py2exe_options},
		)

###2014年7月12日 ####查看python库的路径

<!-- lang: python -->
import sys
print sys.path

###2015年10月5日

python类的public,private,protect

  1. 以一个下划线开头的是protect
  2. 以两个下划线开头的是provite
  3. 变量钱没有的是public变量 ####end

2015年11月8日

python的迭代

Python到底哪些对象可以进行迭代操作呢(for each in object:):一个对象有__iter__()方法就可以被迭代

展开阅读全文
打赏
0
22 收藏
分享
加载中
Cosven博主

引用来自“junshi”的评论

我也是刚刚学到的。

哦 加油 13
2014/02/04 10:27
回复
举报
我也是刚刚学到的。
2014/02/04 08:46
回复
举报
Cosven博主

引用来自“junshi”的评论

内置函数

32 没懂。49 (学了没多久)
2014/02/04 08:40
回复
举报
内置函数
2014/02/04 08:33
回复
举报
更多评论
打赏
4 评论
22 收藏
0
分享
返回顶部
顶部