X Tutup
单引号,双引号,三引号 无论单引号,双引号还是三引号,所括住的内容都是字符串。 单引号,双引号和三引号,可以相互包含,而不会使解释器混乱。三引号可以跨行,( python会自动加上\n)其他的两个不可以。用print输出时,按照字符串的内容输出。 python中数的表示 最新的python中,数分为: 整数(可以无限大), 浮点型数,虚数(eg.12j/J).可以用type()函数来查看一个数字的类型 >>> type(1) >>> type(1.0) >>> type(1j) python中无论什么类型的两个实数相除(/),都会返回浮点型值。取余(%),返回的是余数.print格式分隔符(format specifier): %f #浮点型输出,可以指定精度。eg. %.02f, %10.02f %E(e) #科学计数法输出 %X(x) #十六进制输出 %o #八进制输出 python变量名只是内存中一块数据的别名。 python中有些名字是保留的。如下: and, as ,assert,break, class ,continue,def, elif, else, except, del, exec, False, finally, for, from, global, if, import, in, is ,lambda, not, None, or, pass, print, raise, return, try,True, while, with, yield python的复杂数据类型 tuple(元组):不可改变的一组数据,可以容纳任何类型的数据 表示方法:() 方法: a = ("a","b","c") 索引(index): a[2] 长度: len(a) list(列表):可改变的一组数据,可以容纳任何类型的数据 表示方法:[] 方法: a = [ "apple","orange", "egg"] 索引(index): a[2] 长度:len(a) append(): a.append("jack") #增加一个item extend():y a.extend(["tom","US"]) #把一个列表的元素加入已有列表 pop() : a.pop(index) #删除index位置的元素,如果index为空,则为最后一个 dictionary(字典):一组序列值。key必须是不可变的,比如string,number,tuple, key value可以是任意类型。 表示方法:{} 方法: a = { 1:"wolf", 2:"python",3 :"london"} 索引(index): 按值索引, a[1] keys(): a.keys() #返回所有的key values(): a.values #返回所有的key values set (集合):一组不可重复的数据,类似于dict,但是又没有key values。 特殊类型: None,nothing ,一般的函数返回的都是None 布尔类型(True, False): 贯穿于string, list ,tuple中的切片slice a[2:3] 函数: 函数的一个属性docstring, myfunction.__doc__ dir显示了一个对象的所有属性。 函数变量的作用域 设置缺省的变量值 python允许在函数里定义函数 python中的模块 当import一个模块后,这个模块内的所有对象都被放在这个模块的作用域内。(重新 构建一个作用域).from ...import 把对象放在当前的作用域. package(包),是文件的集合,但是必须有__init__.py文件,它告诉python,这个目录 不是一个普通的目录,是一个包。因为包不像module,导入一个包,首先要处理的就是 __init__.py文件,在这个文件中可以指定那些module可以使用,怎么使用( 默认情况下) __name__是模块的都有的一个属性,它指的是模块的名字, __main__就是模块的名字,无论他是什么,这个通常用来测试用。 文件: open()创建一个文件对象,write,写入文件. readline(),返回文件的一行. read()返回整个文件作为一个string。 readlines()返回整个文件作为一个列表,列表里是以行为单位为一字符串.无须完全加载到内存中. python在操作文件的过程中,遇到错误,就会raise个IOError的异常。 os模块: os模块包含另外一个模块,os.path, os.path.join: >>> os.path.join("/home/wolf", "programming") '/home/wolf/programming' os.path.split(): >>> os.path.split("/home/wolf/programming") ('/home/wolf', 'programming') os.path.splitext(): >>> os.path.splitext("icon.py") ('icon', '.py') os.path.abspath(): >>> os.path.abspath("icon.py") '/home/wolf/programming/python/icon.py' os.path.isfile(),os.path.isdir(): >>> os.path.isfile("icon.py") True >>> os.path.isdir("/home/wolf") os.path.getsize(): >>> os.path.getsize("/home/wolf/programming/python/icon.py") 397 目录: os.listdir():>>> os.listdir("/") ['mnt', 'proc', 'lost+found', 'tmp', 'bin', 'sys', 'vmlinuz.old', 'initrd.img', 'selinux', 'home', '.ure', 'root', 'media', 'sbin', 'boot', 'vmlinuz', 'var', 'opt', 'srv', 'usr', 'etc', 'lib', 'cdrom', 'initrd.img.old', 'dev'] >>> sorted(os.listdir("/")) ['.ure', 'bin', 'boot', 'cdrom', 'dev', 'etc', 'home', 'initrd.img', 'initrd.img.old', 'lib', 'lost+found', 'media', 'mnt', 'opt', 'proc', 'root', 'sbin', 'selinux', 'srv', 'sys', 'tmp', 'usr', 'var', 'vmlinuz', 'vmlinuz.old'] time模块 time.ctime: >>> buildTime = os.path.getmtime("/home/wolf") >>> print(time.ctime(buildTime)) Tue Aug 31 17:04:20 2010 重命名,移动,复制,删除文件 shutil模块提供了这些功能 shutil.move :移动文件 >>> import shutil >>> shutil.move("file", "/tmp/file") shutil.copy(): >>> shutil.copy("file","/home/wolf") os.remove(): >>> os.remove("/home/wolf/file.txt") 创建,删除目录: os.mkdir(),os.rmdir(): os.rmdir()只能删除空文件 >>> os.mkdir("/home/wolf/python") >>> os.rmdir("/home/wolf/python") 如果要删除一个没有,shutil.rmtree() >>> shutil.rmtree("/tmp/test") python 中的通配符 * #匹配任何字符(串) ? #匹配一个字符 [] #匹配括号中的选项 [!] #匹配非括号中的选项 [1-9],[a-z],匹配1-9,a-z中的任意字符(数字) 模块glob glob.glob返回符合条件的路径名 >>> import glob >>> glob.glob("/tmp/[so]*") ['/tmp/scim-helper-manager-socket-wolf', '/tmp/ssh-VWuCMO2736', '/tmp/orbit-wolf', '/tmp/scim-panel-socket:0-wolf', '/tmp/scim-socket-frontend-wolf', '/tmp/svi4c.tmp', '/tmp/seahorse-WYEPIf'] lambda 函数:lambda函数又叫无名函数. >>>lambda x: x*x filter(): 过滤函数,依据一定的函数,返回符合条件的元素 map(): 把相应的元素映射为一定的值 在python3.1中,map 返回迭代器,在以前的版本中返回一个列表 list comprehension 也有同样的功能,比如: >>> a = map(lambda x : x*x , [1,2,3]) >>> print(*a) 1 4 9 >>> [x*x for x in [1,2,3]] [1, 4, 9] 迭代器: python 提供了很多中方法创建迭代器。 其中之一就是range()函数 >>> foo = range(2,9,2) >>> foo range(2, 9, 2) >>> print(*foo) 2 4 6 8 range()产生一个迭代器,但是也有线性数据结构的性质 >>> foo[1] 4 >>> foo[3] 8 好处就是占用的内存比较小,无论生成的数据是多少. 字符串格式化之字典 >>>person = {"name": "jack", "age": 20, "status":"student"} >>> print("%(name)s" % person) jack python库小瞥 getopt: getopt.getopt 和getopt.gnu_getopt 多进程: os.fork() os.execl() 多线程: threading.Thread 再谈模块: dir() 函数查找module信息 >>> import sys >>> dir(sys) ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__package__', '__stderr__', '__stdin__', '__stdout__', '_clear_type_cache', '_current_frames', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'dont_write_bytecode', 'exc_info', 'excepthook', 'exec_prefix', 'executable', 'exit', 'flags', 'float_info', 'float_repr_style', 'getcheckinterval', 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getprofile', 'getrecursionlimit', 'getrefcount', 'getsizeof', 'gettrace', 'hexversion', 'int_info', 'intern', 'maxsize', 'maxunicode', 'meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'pydebug', 'setcheckinterval', 'setdlopenflags', 'setfilesystemencoding', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', 'warnoptions'] 在导入(import)模块的时候,python依据sys.path路径来搜索模块 >>> import foo Traceback (most recent call last): File "", line 1, in ImportError: No module named foo >>> import sys >>> print(sys.path) ['', '/usr/lib/python3.1', '/usr/lib/python3.1/plat-linux2', '/usr/lib/python3.1/lib-dynload', '/usr/lib/python3.1/dist-packages', '/usr/local/lib/python3.1/dist-packages'] 构建自己的模块和包 面向对象的思想: *封装(encapsulation) *继承(inheritance) *多态(polymorphism) 构建自己的模块,至少要完成如下: *定义自己的错误和异常 自定义的异常是Exception的子类 *定义api _(一个下划线)开头的变量(函数),默认是不被导入的,如果需要导入,自己定义__all__函数,例如: __all__ = ["wolf", "wolfName", "wolfAge"] *文档 *测试自己的模块 安装模块 使用python的distutils包, 首先创建衣蛾setup脚本,setup.py from distutils.core import setup setup(name = "nameOfModule", version="2.0", py_modules=["nameoOfModule"],) 后执行 python setup.py install text processing os模块处理文件系统 os.getcwd() os.listdir() os.stat(path) os.path.split(path) os.path.join() os.path.normcase(path) os.walk(top, topdown=True, onerror=None, followlinks = False) 正则表达式: re python高级应用 1.testing : PyUnit 2.GUI 3.database DBM: 以dict存储在硬盘上,有很多中实现,字典的Key 和value都必须是string 除非需要dbm的特别功能,用dbm模块.python会自动选择最好的dbm实现. 就像打开一个普通的文件一样,open()函数,close()函数,增加元素的方法就是 用字典实现。比如: import dbm db = dbm.open("websites", "c") db["www.python.org"] = "python home page" print(db["www.python.org"]) db.close() relational DB: 关系型数据库。数据库-->表-->记录(行). primary key :在列中是唯一的, foreign key: 是另外的表的一个列 sqlite3模块 首先建立连接: conn = sqlite3.connect("db") 创建cursor对象: c = conn.cursor() 调用cursor对象: cursor.execute() 可以执行的操作: 新建,插入,查询,更新,相应的sql语句. Django:
X Tutup