当前位置: 首页 > news >正文

合肥企业网站制作公司百度一下下载

合肥企业网站制作公司,百度一下下载,专业网站建设微信网站定制,旅游网站的网页设计素材变量赋值 赋值运算符 是主要的赋值运算符#xff0c;其他的是增量赋值运算符。 aint 12 astring python afloat 3.14 alist [1,3,4]赋值并不是将一个值赋给一个变量。python中对象是通过引用传递的#xff0c;是将对象的应用传递给变量。 x1 是主要的赋值运算符其他的是增量赋值运算符。 aint 12 astring python afloat 3.14 alist [1,3,4]赋值并不是将一个值赋给一个变量。python中对象是通过引用传递的是将对象的应用传递给变量。 x1id(x) 31162760Lyxid(y) 31162760LC语言中赋值当成一个表达式可以返回值。python中不是这样不会返回值。以下非法 a(b1)File stdin, line 1a(b1)^ SyntaxError: invalid syntax多重赋值 可以多重赋值如下 对象的同一个引用被赋值给a、b ab2a 2b 2id(a) #查看对象引用地址 31162736Lid(b) 31162736L增量赋值 - * / % ** ^ 增量赋值相对普通赋值不仅是写法上的改变有意义的是第一个对象仅被处理一次。可变对象就地修改无修拷贝引用不可变对象则和AAB结果一样分配一个新对象 python不支持x或x这样的自运算。 m 12m %7m 5m **2m 25alist [123, xyz]alist [456]alist [123, xyz, 456]多元赋值 多个变量同时赋值成为多元赋值。等号两边的对象都是元组 x,y,z 1,2,3x 1y 2z 3通常用括号括起来 (x,y,z) (1,2,3)C语言中交换变量需要临时变量。python的多元赋值可以无需中间变量交换变量值。 C语言 tmp x x y y tmppython多元赋值 x,y y,x标识符 合法标识符 第一个字符为字母或下划线其余字符可以是字母、下划线或数字大小写敏感 关键字 关键字列表和iskeyword()函数在keyword模块。 import keywordkeyword.kwlist [and, as, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is,lambda, not, or, pass, print, raise, return, try, while, with, yield]keyword.iskeyword(or) True‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’ 内建 python除了关键字还有可以在任何一级代码使用的内建的名字集合。这些名字可以由解释器设置或使用。虽然build-in不是关键字但应该把它当做系统保留字不做他用。 专用下划线标识符 _xxx 不用’from module import *导入__xxx__ 系统定义名字__xxx 类中的私有变量名 变量名_xxx被看作是私有的在模块或类外不可以使用 内存管理 变量无须事先申明变量无须指定类型程序员不用关心内存管理变量名会被回收del语句能够直接释放资源 变量定义 python中无须显示申明变量变量在第一次赋值时自动申明。变量只有在被创建和赋值后才能被使用 动态类型 python中不仅变量无须事先申明而且也无须类型申明。对象的类型和内存占用都是运行时确定的。在赋值时创建变量解释器根据语法和右侧的操作数类决定新对象的类型。对象创建后一个该对象的应用被赋值给左侧的变量。 内存分配 python解释器承担了内存管理的任务不需要关心底层的事情 引用计数 要保持跟踪内存中的对象python使用了引用计数技术。python记录所有使用中的对象各有多少引用。一个内部跟踪变量称为一个引用计数器。对象创建时就创建一个引用计数当这个对象不需要时即当对象的引用计数为0它被垃圾回收。 增加引用计数 赋值给多个变量 x3.14 yx对象作为参数被函数调用 i 1def fun(i):print id(i)print id(i) fun(i)30964552 30964552成为容器对象的一个元素 i 1 alist [1,i,3]print(id(i)) print(id(alist[1]))31554376 31554376减少引用计数 一个本地引用离开了作用范围如foo()函数结束对象的别名被显示的销毁 del y对象的一个别名被赋值给其他的对象 x123对象呗从一个窗口对象中移除 mylist.remove(x)窗口对象本身被销毁 del mylist del语句 del语句会删除对象的一个引用 垃圾收集 解释器跟踪对象的引用计数垃圾收集器负责释放内存。垃圾收集器寻找引用计数为0的对象也负责检查哪些虽然引用计数大于0但也应该被销毁的对象。特定情形会导致循环利用。 一个循环利用发生在当有至少两个对象相互引用时也就是说所有的引用都消失时这些引用仍然存在。 垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。当一个对象的引用计数变为0解释器会暂停释放掉这个对象和仅有这个对象可访问的其他对象。作为引用计数的补充垃圾收集器也会留心被分配的总量很大的对象。 python对象 所有python对象都有三个特性身份、类型和值 身份 每一个对象都有一个唯一的身份标识自己任何对象的身份都可以使用内建函数id()得到。 类型 对象的类型决定了该对象可以保存什么类型的值可以进行什么样的操作。可以用type()查看对象类型。python中类型也是对象type返回的是对象而不是简单的字符串。 值 对象表示的数据项。对象的值是否可以可以更改被称为对象的可改变性。 对象属性 常用的属性是函数和方法不过有些python类型也有数据属性。含有数据属性的对象包括但不限于类、类实例、模块、复数和文件。 标准类型 数字分为几个子类型其中有三个是整型整型布尔型长整型浮点型复数型字符串列表元组字典 其他内建类型 类型Null对象None文件集合/固定集合函数/方法模块类 类型对象和Type类型对象 通过type()函数可以得到特定对象的类型信息。 整数对象的类型是一个类型对象。 type(4) type int所有类型对象的类型是type type(type(4)) type typetype是所有python类型的根和所有python标准类的默认元类。 NonePython的Null对象 python有一个特殊的类型成为Null对象或者NoneType它只是一个值那就是None。它不支持任何运算没有任何内建方法。 标准对象的布尔值 下列对象的布尔值是False。 NoneFalse布尔类型所有的值为零的数0整型0.0浮点型0L长整型0.00.0j复数“”空字符串[]空列表()空元组{}空字典 用户创建的实例如果定义了nonzero__nonzero__()或length__len__()且值为0那么他们的布尔值就是False 内部类型 代码对象帧对象跟踪记录对象切片对象省略对象Xrange对象 代码对象 代码对象是编译过的python源代码片段他是可执行对象。通过调用内建函数compile()可以得到代码对象。 代码对象可以被exec命令或eval()内建函数来执行。 代码对象是函数的一个属性一个函数除了有代码队形属性以外还有一些函数必须的其他属性包括函数名文档字符串默认参数以及全局命名空间。 帧对象 帧对象是python的执行栈帧。帧对象包含python解释器在运行时所需要知道的所有信息。 他的属性包括指向上一帧的链接正在被执行的代码对象本地及全局名字空间字典以及当前指令等。 每次函数调用产生一个新的帧每一个帧对象都会相应创建一个C栈帧。用到帧对象的一个点是跟踪记录对象。 跟踪记录对象 当代码出错时python引发一个异常如果异常未被捕获和处理解释器就会退出脚本处理显示类似下面信息 Traceback (most recent call last):File stdin, line 1, in module ZeroDivisionError: integer division or modulo by zero异常发生时一个包含针对异常的栈跟踪信息的跟踪记录对象被创建。如果一个异常有自己的处理程序处理程序就可以访问这个跟踪记录对象 切片对象 使用切片语法时创建切片对象。 str pythonstr[::-1] nohtyp省略对象 省略对象用于扩展切片语法中起记号作用。 这个对象在切片语法中表示省略号。类似Null对象None省略对象有一个唯一的名字Ellipsis他的布尔值始终为True。 Xrange对象 调用内建函数xrange()会生成一个Xrange对象。 标准类型比较 对象值的比较 数字类型根据数值的大小和符号比较字符串按照字符序列值进行比较 bbc ab True3 3 True23j 23j True[3, abc] [3,abc] True多个比较操作可以在同一行进行顺序为从左到右 3 4 7 # 等于 (34) and (47) True4 3 3 # 等于(43) and (33) True4 3 5 ! 2 7 # 等于 (43) and (35) and (5!2) and (27) False比较操是针对对象的值进行的比较的是对象的数值而不是对象本身。 比较符号 ! 对象身份比较 is和is not运算符测试两个变量是否指向同一个对象。 a is b 等同于 id(a) id(b)a [1,2,3]baid(a) 40383880Lid(b) 40383880La is b True a[1,2,3]b[1,2,3]id(a) 40392200Lid(b) 40383880La is b False注意可变对象与不可变对象的区别 整数对象和字符串对象是不可变对象python创建时如果值相同只创建一个对象其他的只增加引用。 a 1b 1id(a) 31162760Lid(b) 31162760L当对象值改变时会重新创建新对象。 a 1id(a) 31162760La a1id(a) 31162736L当整数值过大时也会创建新对象而不是增加引用。 a 10000b 10000a is b False可变对象没创建就会生生成一个新对象。 a 2.0b 2.0id(a) 31224000Lid(b) 31224024L标准类型内建函数 python提供一些内建函数用于这些基本对象类型。 type() type()接受一个对象作为参数并返回它的类型返回值是一个类型对象。 type(3) type inttype(a) type strtype(type(3)) type typecmp() 比较两个对象obj1和obj2如果obj1小于obj2返回一个负整数如果obj1大于obj2返回一个正整数如果相等返回0。 比较是在两个对象间进行的不管是标准类型还是自定义对象。如果是自定义对象cmp()会调用该类的特殊方法__cmp__()。 a,b 1,2cmp(a,b) -1a,b abc,bcdcmp(a,b) -1b abccmp(a,b) 0str()、repr()及运算符 str()、repr()及运算符可以方便的以字符串的方式获取对象的内容、类型、数值属性等信息。 str()得到的字符串可读性好repr()函数得到的字符串通常可以用来重新获得该对象通常ojb eval(repr(obj))等式成立。 str([1,2,3]) [1, 2, 3]repr([1,2,3]) [1, 2, 3][1,2,3] [1, 2, 3]repr()和是一样的返回一个对象的官方字符串表示也就是说大多数情况下可以通过求值运算eval()重新得到该对象。 str()不同str()用于生成一个对象的可读性好的字符串表示返回结果通常无法用于eval()求值但适合于print输出。 并不是所有repr()返回的字符串都能用eval()得到原来的对象。 eval(type(type)) Traceback (most recent call last):File stdin, line 1, in moduleFile string, line 1type type^type()和isinstance()判断类型 def dispType(num):if isinstance(num, (int, long, float, complex)):print a number of type:, type(num).__name__修改为使用简单的方法 def dispType(num):print num,isif type(num) type(0):print an integerif type(num) type(0L):print a long减少type()调用次数 import types if type(num) types.IntType:print int运行时只有一个类型对象表示整数类型type(0),type(10),type(-100)都是同一个对象type ‘int’。types.IntType也是这个对象。可以修改成对象身份比较。 if type(num) is types.IntType:print int标准类型的分类 存储模型 一个能保存单个字面对象的类型称为原子或标量存储。可容纳多个对象的类型称之为容器存储。 标量/原子类型数值字符串容器类型列表、元组、字典 更新模型 可变对象允许值更新不可变对象值不能更改。 可变类型列表字典不可变类型数字、字符串、元组 访问模型 根据访问存储的数据的方式对数据类型分类共有三种访问方式直接存储、顺序、和映射。 非容器类型可以直接访问。所有的数值类型都归到这一类。 序列类型指容器按从0开始的索引顺序访问。 映射类型类似序列的索引属性不过索引并不适用顺序的数字他的元素无序存放。通过key访问。 直接访问数字顺序访问字符串、列表、元组映射访问字典 数据类型存储模型更新模型访问模型数字原子不可变直接访问字符串原子不可变顺序访问列表容器可变顺序访问元组容器不可变顺序访问字典容器可变映射访问 数字 python数字类型有整型、长整型、布尔型、双精度浮点型、十进制浮点型和复数。 删除数字 无法删除数字还是不在引用。 del anInt。引用被删除对象的引用引发NameError对象。 整型 python内置内属性 __dict__ : 类的属性包含一个字典由类的数据属性组成__doc__ : 类的文档字符串__name__ : 类名__module__ : 类定义所在的模块类的全名是’__main__.classname’如果类位于一个导入模块mymod中那么classname.__module__等于mymod__bases__ : 类的所有父类构成元素包含了一个由所有父类组成的元组 基础方法重载 方法描述__init__(self [,args])构造函数实例化时调用 obj classname(args)__del__(self)析构方法删除一个对象调用方法del obj__repr__(self)转换为公解释器读取的字符串调用repr(obj)__str__(self)将值转换成字符串调用str(obj)__cmp__(self, x)对象比较调用cmp(obj, x) 单下划线、双下划綫、头尾双下划线 __foo__ : 定义特殊方法一般是系统定义名字类似__init__()之类的_foo :单下划线开头的表示类似protected变量只能允许其本身与子类进行访问不能用于from module import *__foo : 双下划綫开头的表示私有类型变量智能允许这个类本身进行访问 正则表达式 re.match函数 语法 re.match(pattern, string, flags0 匹配成功返回一个匹配的对象 参数描述pattern匹配的正则表达式string要操作的字符串flags标志位用于控制正则表达式的匹配方式如是否区分大小写多行匹配。 group()和groups() re.search() 扫描整个字符串返回第一个成功的匹配。 语法 re.search(pattern, string, flags0) 参数 参数描述patternstringflags re.match()与re.search()区别 re.match只匹配字符串的开始如果字符串开始不符合正则表达式则匹配失败函数返回Nonere.search匹配整个字符串知道找到一个匹配。 re.sub 用正则表达式查找字符串并进行替换。 语法 re.sub(pattern, replacestr, string, count0, flags0) 参数 参数描述patternreplacestr用来替换的字符串也可是函数string用户查找并进行替换的原始字符串count模式匹配后替换的最大次数默认0表示替换所有的匹配 re.compile() 用于编译正则表达式生成一个正则表达式对象供match()和search()函数使用。 语法 re.compile(pattern[, flags]) 参数 参数描述pattern正则表达式字符串flags可选表示匹配模式比如忽略大小写多行模式. flags参数值 re.I忽略大小写re.L表示特殊字符集\w,\W,\b,\B,\s,\S依赖于当前环境re.M 多行模式re.S即为.并且包括换行符在内的任意字符.不包括换行符re.U表示特殊字符集\w,\W,\b,\B,\s,\S依赖于Unicode字符属性数据库re.X为了增加可读性忽略空格和#后面的注释 匹配对象的操作 对于返回的匹配对象可以有如下操作 group([num1, …]) 用于获得一个或多个分组匹配的字符串如果要获得所有匹配的子串时可直接用group()或group(0)start([num]) 用于获取分组匹配的子串在整个字符串中的起始位置子串第一个字符的索引参数默认为0end([num]) 用户获取分组匹配的子串在整个字符串中的结束位置子串最后一个字符的索引1参数默认为0span([num]) 方法返回(start(num), end(num)) 测试 import repattern re.compile(r([a-z]) ([a-z]), re.I) # re.I 表示忽略大小写m pattern.match(Hello World Wide Web)print m # 匹配成功返回一个 Match 对象 _sre.SRE_Match object at 0x10bea83e8m.group(0) # 返回匹配成功的整个子串 Hello Worldm.span(0) # 返回匹配成功的整个子串的索引 (0, 11)m.group(1) # 返回第一个分组匹配成功的子串 Hellom.span(1) # 返回第一个分组匹配成功的子串的索引 (0, 5)m.group(2) # 返回第二个分组匹配成功的子串 Worldm.span(2) # 返回第二个分组匹配成功的子串 (6, 11)m.groups() # 等价于 (m.group(1), m.group(2), ...) (Hello, World)m.group(3) # 不存在第三个分组 Traceback (most recent call last):File stdin, line 1, in module IndexError: no such groupfindall() 从字符串中查找正则表达式匹配的所有子串并返回一个列表如果没有匹配则返回空列表。 match和search是匹配一次fandall是匹配所有。 语法 findall(string[, pos[, endpos]]) re.finditer() 和findall类似在字符串中找到正则表达式所匹配的所有子串并把他们作为一个迭代器返回。 re.finditer(pattern, string, flags0) # -*- coding: UTF-8 -*-import reit re.finditer(r\d,12a32bc43jf3) for match in it: print (match.group() )结果 12 32 43 3 正则表达式模式 模式描述^匹配字符串的开头$匹配字符串的末尾.匹配任意字符除了换行符当re.DOTALL标记被指定时则可以匹配包括换行符的任意字符[…]用来表示匹配一组字符中的任意一个如[abc]匹配’a’,‘b’或’c’[^…]不再[]中的字符。[^abc]表示匹配a,b,c之外的字符re*匹配0个或多个re表达式re匹配1个或多个re表达式re?匹配0个或1个re表达式re{n}精确匹配n个re表达式。如o{2}不能匹配bob中的o能匹配food中的ore{n,}匹配至少n个re表达式re{n,m}匹配n到m个re表达式a|b匹配a或者b(re)对正则表达式分组并记住匹配的文本(?imx)正则表达式包含三种可选标志i,m,x。只影响括号中的区域(?-imx)正则表达式关闭i,m,x可选标志只影响括号中的区域(?: re)类似(…)但是不表示一个组(?imx: re)在括号找那个使用i,m,x标志(?-imx: re)在括号中不适用i,m,x标志(?#…)注释(? re)前向肯定界定符。如果所含正则表达式以…表示在当前位置成功匹配时成功否则失败。但一旦所含表达式已经尝试匹配引擎根本没有提高模式的剩余部分还要尝试界定符的右边(?! re)前向否定界定符与肯定界定符相反当所含表达式不能在字符串当前位置匹配时成功(? re匹配的独立模式省去回溯\w匹配字母数字及下划线\W匹配非字母数字及下划线\s匹配任意空白字符等价于[ \t\n\r\f]\S匹配任意非空字符\d匹配任意数字等价于[0-9]\D匹配任意非数字\A匹配字符串开始\Z匹配字符串结束如果存在换行只匹配到换行前的结束字符串\z匹配字符串结束\G匹配最后匹配完成的位置\b匹配一个单词便捷也就是指单词和空格间的位置。如‘er\b’可以匹配’nerver’中的‘er’但不能匹配‘verb’中的‘er’\B匹配非单词边界\n, \t,等匹配一个换行符。匹配一个制表符等\1 … \9匹配第n个分组的内容\10匹配第n个分组的内容如果它已经匹配。否则指的是八进制字符码的表达式 多线程 使用线程有2中方式函数或者用类来包装线程。 函数调用thread模块中的start_new_thread()函数来产生新线程。语法如下 thread.start_new_thread(function, args[, kwargs]) 参数 function线程函数args传递给线程函数的参数必须是tuple类型kwargs可选参数 线程的结束一般依靠线程函数的自然结束也可以在线程函数中调用thread.exit()抛出SystemExit exception达到退出线程的目的。 相关模块 python有两个标准库thread和threading提供对线程的支持。thread提供低级别、原始的线程以及一个简单点锁。 threading提供其他方法 threading.currentThread()返回当前线程变量。 threading.enumerate()返回一个包含正在运行的线程的list。 threading.activeCount()返回正在运行的线程数量与len(threading.enumerate())有相同的结果。 除了使用方法线程模块同样提供了Thread类来处理线程Thread类提供了一下方法 run()线程启动后通过run()运行线程具体业务。 start()启动线程 join([time])等待线程终止。 isActive()返回线程是否活动 getName()返回线程名 setName()设置线程名 线程锁 两个线程同时对同一个数据处理时需要先获得线程锁使用完数据释放线程锁。 #!/usr/bin/python # -*- coding: UTF-8 -*-import threading import timeclass myThread (threading.Thread):def __init__(self, threadID, name, counter):threading.Thread.__init__(self)self.threadID threadIDself.name nameself.counter counterdef run(self):print Starting self.name# 获得锁成功获得锁定后返回True# 可选的timeout参数不填时将一直阻塞直到获得锁定# 否则超时后将返回FalsethreadLock.acquire()print_time(self.name, self.counter, 3)# 释放锁threadLock.release()def print_time(threadName, delay, counter):while counter:time.sleep(delay)print %s: %s % (threadName, time.ctime(time.time()))counter - 1threadLock threading.Lock() threads []# 创建新线程 thread1 myThread(1, Thread-1, 1) thread2 myThread(2, Thread-2, 2)# 开启新线程 thread1.start() thread2.start()# 添加线程到线程列表 threads.append(thread1) threads.append(thread2)# 等待所有线程完成 for t in threads:t.join() print Exiting Main Thread线程优先级队列queque python的queue模块提供了同步的、线程安全的队列类包括FIFO队列QueueLIFO队列LifoQueue和优先级队列PriorityQueue。这些队列都实现了锁原语能够在多线程中直接使用。可以使用队列实现线程间的同步。
http://www.huolong8.cn/news/194610/

相关文章:

  • 59网站一起做网店广州网站开发验收流程
  • 在重庆 那里可以做诚信网站认证建设网站需要购买数据库吗
  • 怎么提高网站加载速度慢做婚纱网站的目的
  • 做网站花多少钱网站建设捌金手指花总十三
  • 山东建设项目环境影响登记网站临沂四个商城建设
  • 织梦网站如何做404重庆渝中区企业网站建设哪家专业
  • 西安专业网络推广平台宁波网站优化价格
  • 建设网站赚钱wordpress怎么改成中文版
  • 六安网站制作多少钱wordpress插件主题集成
  • 网站建设免wordpress主题用什么设计
  • 怎么做网站地图导航新人做直播哪个网站好
  • 在哪个网站做科目一考试题crm客户管理系统登陆
  • 做网站需要什么特色dw如何制作表格网页
  • 更改wordpress主题字体颜色网站打开慢如何优化
  • php asp jsp 网站赣州优化公司
  • 查询数据的网站怎么做东莞做个网站
  • 优秀网页设计导航seo职业培训学校
  • php网站服务器怎么来开发三味是啥
  • xp 做网站服务器吗福田公司简介
  • 织梦网站密码忘记了盱眙网站建设
  • 建设网站要多少页面中国住房和城乡建设部网站首页
  • 做融资的网站有哪些深圳网站建设网牛天下
  • 成都市做网站公司产品是做网站
  • 昌平区手机网站制作服务汉中中药材初加工平台
  • 英国人买服务器网站网站建设情况检查报告
  • 经销商自己做网站做h5哪个网站好用
  • 域名没到期 网站打不开晋州专业网站建设
  • 门户网站制作定做教学网站在线自测功能怎么做
  • 网站包括哪些内容平顶山网站制作哪家公司好
  • 品牌网站设计首选南阳优化网站排名