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###
-
<code>import time; time.sleep('1')</code> 程序暂停1秒。
-
<code>os.system("cls");</code> 终端清屏
-
发送邮件:源地址 用于学习应该没关系吧,下面是code
-
<pre><code>
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的相互调用####
-
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
-
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"
-
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
- 以一个下划线开头的是protect
- 以两个下划线开头的是provite
- 变量钱没有的是public变量 ####end
2015年11月8日
python的迭代
Python到底哪些对象可以进行迭代操作呢(for each in object:):一个对象有__iter__()方法就可以被迭代