接触python已有一段时间了,下面针对python基础知识的使用做一完整梳理:
1)避免‘\n'等特殊字符的两种方式:
1
2
|
a)利用转义字符‘\' b)利用原始字符‘r' print r'c:\now' |
2)单行注释,使用一个#,如:
1
2
3
4
5
6
7
8
9
10
11
|
#hello Python 多行注释,使用三个单引号(或三个双引号),如: '''hello python hello world''' 或 """hello python hello world""" 另外跨越多行的字符串。也可以使用三个单引号或三个双引号,如: '''......''' 或者 """......""" |
3)字符串中嵌入双引号等特殊符号
1
2
|
a)利用转义字符‘\' b)使用单引号括起这个字符串。 print ( 'i l"o"ve fis.com' ) |
4)条件分支:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
if condition: 条件为真执行的操作 else : 条件为假执行的操作 if condition: action elif condition: action else : action python可以有效避免“悬挂 else ”( if else 对应关系出错) 条件表达式(三元操作符) small = x if x<y else y 如果x<y ,small = x.否则small = y 断言 assert :当这个关键字后面的条件为假,程序自动崩溃并抛出异常 assert 3 > 4 可以利用他置入检查点 |
5)while条件:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
条件为真执行的操作 for 目标 in 表达式: 循环体 例:favorite = 'fishc' for i in favorite: print (i,end = '') range ([start,] stop[,step = 1 ]) 生成一个从start参数的值到stop参数值的数字序列 break :终止当前循环体。跳到外层程序 continue :终止本轮循环,开始下一轮循环( if condition true) |
6)and逻辑操作符可以将任意表达式连接在一起,并得到一个布尔类型值
7)引入外援:
1
2
3
4
|
a)random模块 b)randint(),返回一个随机的整数 import random 或 from random import randint() secret = random.randint( 1 , 10 ) |
8)python数据类型
1
2
3
4
5
6
7
8
9
10
11
12
13
|
a)数值类型:整型、布尔类型、浮点型、e记法( 1.5e10 ) b)类型转换: int ()转换为整数 str ()转换为字符串 float ()转换为浮点数 c)获取关于类型的信息: type ()函数 a = 520 type (a) isinstance ()函数 a = 12 isinstance (a, int ) - - - >返回true isinstance (a, str ) - - >返回false |
9)Python值常用操作符
1
2
3
4
5
6
7
8
9
10
|
+ - * / % * * (幂运算) / / (地板除法,结果偏小) 比较操作符 > < > = < = 逻辑操作符 and or not 优先级: 幂运算 * * 正负号 + - 算术操作符 * / / / + - 比较操作符 < > = 逻辑擦作福 not and or |
10)列表-->可以把整数、浮点数、字符串等打包在一起。数组却不能
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
创建一个普通列表: member = [ '小甲鱼' , '小布丁' , '黑夜' ] 创建一个混合列表: mix = [ 1 , '小甲鱼' , 3.12 ,[ 1 , 2 , 3 ]] 创建空列表: empty = [] 向列表添加元素: append(): member.append( '福禄娃' ) - - >只能添加一个。末尾添加 extend(): member.extend([ 'test' , 'test1' ]) - - >只能以列表形式添加.末尾添加 insert(): member.insert( 1 , '牡丹' ) - - >第一位插入牡丹 列表中获取元素:使用索引index。 mix[ 1 ] 列表中删除元素:使用remove()。 mix.remove( '小甲鱼' ) 使用 del 。 del mix[ 3 ] / mix 使用pop()。 mix.pop() / mix.pop( 1 ) 列表切片:使用 slice 。 mix[ 1 : 4 ] / mix[ 1 :] / mix[: 4 ] 列表操作符:>, and , + , * , in / not in 列表的小伙伴: dir ( list ) mix.count( '小甲鱼' ) mix.index( '小甲鱼' ) 列表逆序:使用reverse。 mix.reverse() 列表排序:使用sort。 mix.sort() mix.sort(func,key) mix.sort(reverse = True ) |
11)元组--->不可改变的列表
1
2
3
4
5
6
|
和列表的主要不同点: a)创建和访问一个元组: 大部分用() / , ;列表用[] b)元组不可修改数值 c)更新和删除一个元组:temp = temp[: 2 ] + ( 'test3' ,) + temp[ 2 :] del temp d)IN / NOT IN,关系操作符,逻辑操作符,乘号操作符,连接操作符 |
12)字符串的各种内置方法
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
str1 = 'i love fishc.com' a = str1[: 6 ] + '插入的字符串' + str1[ 6 :] capitalize(): str2.capitalize() casefold() - - - >全部小写 str2.casefold() center(width) - - >居中,不足空格填充 count(sub[,start[,end]]) - - >返回sub在string中出现的次数 endswith(sub[,start[,end]]) - - >以sub结束? startswith(prefix[,start[,end]]) - - >以prefix开头 expandtabs([tabsize = 8 ]) - - >将tab键转换为空格 find(sub[,start[,end]]) - - >sub是否在字符串中出现 rfind(sub)... index(sub[,start[,end]]) - - >跟sub一样,不过会产生异常 rindex(sub..)..... istitle() / isupper() / ljust(width) / lower() / strip() / title() / lower() join(sub):以字符串做分隔符,分割sub partion(sub):找到子字符串sub,把字符串分成一个 3 元组 replace(old,new[,count]) split(sep = none,maxsplit = - 1 ) - - >不带参数以空格做分隔符 swapcase() - - >字符串大小写翻转 zfill(width) - - >返回长度为width的字符串,不够补充空格 |
13)字符串格式化 replacement
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
"{0} love {1}.{2:.2f}" . format ( "i" , "fishc" , 3.1424 ) "{a} love {b}.{c}" . format (a = "i" ,b = "fishc" ,c = "com" ) "{0} love {b}.{c}" . format ( "i" ,b = "fishc" ,c = "com" ) 格式化符号含义: % c:格式化字符及其ASCII码 '%c %c %c' % ( 97 , 98 , 99 ) % s:格式化字符串 % d:格式化整数 % o:格式化无符号八进制数 % x:格式化无符号十六进制数 % X:...(大写) % f:格式化定点数,可指定小数点后的精度 % e:用科学技术发格式化定点数 = = = % E % g:根据值的大小决定使用 % f或 % e = = = % G 格式化操作符辅助命令: m.n :m是显示的最小总宽度,n是小数位精度 - :用于左对齐 + :在正数面前添加正号 # :在八进制面前显示0,在十六进制面前显示0x 0 :空格用 0 填充 字符串转义字符 \a:发出系统响铃声 \b、\t、\n |
14)序列
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
列表、元组和字符串的共同点: a)都可以通过索引 b)索引值从零开始 内置方法: list () - - > help - - >转换为序列 list () a = list () list (iterable) b = 'i love fishc.com' b = list (b) tuple ([iterable]) - - >把一个可迭代对象转换为元组 b = tuple (b) str (obj) - - >把obj对象转换为字符串 len (obj) - - >返回obj的长度 max (序列 / 元组) / min (序列 / 元组) sum (iterable[,start = 0 ]) - - >返回序列iterable。。的总和 sorted (序列 / 元组) - - >排序 reversed (序列 / 元组) - - >返回一个迭代器对象 list ( reversed (序列 / 元组)) - - >返回序列 enumerate (序列 / 元组) - - >返回一个迭代器对象 list ( enumerate (序列 / 元组)) - - >返回数组形式列表 zip (a,b) - - >合并成以元组形式的列表 list ( zip (a,b)) |
15)函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
定义: def Myfunction(): print ( 'this is my first function' ) 调用:Myfunction() 函数的参数: def Myfunction(name,age): print (name + age + 'test' ) Myfunction( 'gncao' ,‘age') 函数的返回值: return value 形参(parameter):函数定义时的参数 实参(argument):实际传递的参数 函数文档:在函数中实现 在函数体中用 '' 或 # 查看函数文档: a) functionname.__doc__ (四个下划线) b) help (functionname) 关键字参数:避免参数出乱 def Myfunction(words,name): ...... Myfunction(words = 'words123' ,name = 'name123' ) 默认参数: def Myfunction(name = 'name123' ,words = 'words123' ) ...... 收集参数:在参数前面加上 * 号 def test( * params): print ( '参数的长度是:' , len (params)) print ( '第二个参数是:' ,params[ 1 ]) test( 1 , '小甲鱼' , 2 , 4 , 5 , 6 , 7 ) def test( * params,exp): print ( '参数的长度是:' , len (params),exp) print ( '第二个参数是:' ,params[ 1 ]) test( 1 , '小甲鱼' , 23 , 4 , 2 , 5 , 7 ,exp = 0 ) |
16)函数有返回值,过程没有返回值
17)函数变量作用域(可见性)
1
2
3
|
局部:local - - >函数内部定义的变量,局部可用 全局: global - - >全局可访问 当在函数内部试图修改全局变量时,则会在函数内部新建一个跟 全局变量名相同的局部变量 |
18)内嵌函数和闭包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
global 关键字: def myfun(): global count - >>>全局变量 count = 10 print (count) 内嵌函数: def fun1(): print ( 'fun1()正在被调用...' ) def fun2(): print ( 'fun2()正在被调用' ) fun2() 只能通过fun1()访问fun2() 闭包:在一个内部函数中,对外部函数的变量的引用。成内部函数为闭包 def funx(x): def funy(y): return x * y return funy 调用方式: i = funx( 8 ) i( 5 ) 或 funx( 4 )( 5 ) 通过关键字nonlocal可以使得内部函数调用外部函数变量。 def fun1(): x = 5 def fun2(): nonlocal x x * = x return x return fun2() |
19,递归:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
recursion() def fac(n): if n = = 1 : return 1 else : return n * fac(n - 1 ) number = int ( input ( '请输入一个整数:' )) result = fac(number) print ( '%d 的阶乘是:%d' % (number,result)) 迭代方法: def fab(n): n1 = 1 n2 = 1 n3 = 1 if n < 1 : print ( '输入有错' ) return - 1 while ( n - 2 > 0 ): n3 = n2 + n1 n1 = n2 n2 = n3 n - = 1 return n3 result = fab( 20 ) if result ! = - 1 : print ( '总共有%d对小兔子诞生:' % result) 递归方法: def fab(n): if n < 1 : print ( 'error' ) return - 1 if n = = 1 or n = = 2 : return 1 else : return fab(n - 1 ) + fab(n - 2 ) result = fab( 20 ) print ( '总共有%d对兔子诞生' % result) 但是递归的效率比较低 |
20)字典(key-value)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
映射 / 序列 例 1 : dict1 = { '李宁' : '一切皆有可能' , '耐克' : 'just do it' , '阿迪达斯' : 'impossible is nothing' } print ( '李宁的口号是:' ,dict1[ '李宁' ]) 例 2 : dict3 = dict ((( 'f' , 70 ),( 'i' , 105 ))) 例 3 : dict4 = dict (小甲鱼 = '编程改变世界' ,test = 'test' ) dict4[ '小甲鱼' ] = '修改小甲鱼对应的value' - - >如果没有该KEY,则会自动添加一个KEY 字典的内建方法: a) dict2[ 'key' ] - - >访问字典的元素 b) fromkeys(s[,v]) - - >创建或查询key dict1.fromkeys(( 1 , 2 , 3 )) { 1 : None , 2 : None , 3 : None } dict1.fromkeys(( 1 , 2 , 3 ), 'number' ) { 1 : 'number' , 2 : 'number' , 3 : 'number' } c) keys() - - > dict .keys() - - >打印出 dict 的所有key values() - - > dict .values() - - >打印出 dict 的所有value items() - - > dict .items() - - >打印出 dict 所有(key,value) get() - - > dict .get(key) - - >打印key对应的value dict .get(key, 'text' ) - - >打印key对应的value,如果不存在,则打印text in 操作符 - - > key in dict2 clear() - - > dict .clear() - - >清空 dict 的数据 copy() - - >b = a.copy() - - >拷贝字典 id (a) - - >查看 id pop(key) - - > dict .pop(key) - - >弹出key popitem() - - > dict .popitem() - - >随机弹出key setdefault() - - > dict .setdefault(key) - - >新建key update() - - > dict .update( dict ) - - >更新字典 |
21)集合 --->唯一性
1
2
3
4
5
6
7
8
9
10
|
num = { 1 , 2 , 3 , 4 , 5 } set () - - >set1 = set (列表 / 元组 / 字符串) 不支持索引 访问集合中的值: 使用 for 循环一一查找 使用IN 或者 NOT IN add() - - >set1.add(value) remove() - - >set1.remove(value) 不可变集合: num3 = frozenset (元组 / 列表) |
22)文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
输入 - - >处理 - - >输出 内存 - - - >磁盘 open ()打开文件: open ( 'filename/path' ,mode = 'rwxabt+U' ) 文件对象方法: f.close() - - >关闭文件 f.read(size = - 1 ) - - >从文件读取size个字符 f.readline() - - >以写入模式打开,如果文件存在,则在末尾添加 f.write( str ) - - >将 str 写入文件 f.writelines(seq) - >向文件写入seq序列。seq应该是一个返回字符串序列 f.tell() - - >返回当前的位置。书签 f.seek(offset, from ) - - >在文件中移动文件指针,从 from 偏移offset字节 for each in f: - - - - >浏览整个文件 print (each) |
23)文件系统
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
模块:打包的文件系统 os模块: 常用方法: os.getcwd():返回工作目录 os.chdir(path):改变工作目录 os.listdir(path = ''):列出文件目录 os.mkdir(path):创建目录 os.makedirs(path):创建递归目录 os.remove(path):删除文件 os.removedirs(path):递归删除 os.rename(old,new):文件重命名 os.system(command):运行系统的shell命令 os.curdir:指代当前目录.等价于‘。' os.pardir:指代上一级目录 os.sep:输出操作系统的路径分隔符 os.linesep:当前平台使用的行终止符 os.name:指出当前使用的操作系统 |
24)永久存储
1
2
3
4
5
6
7
8
9
10
11
|
存放:pickling 读取:unpickling 首先要导入模块pickle import pickle >>> my_list = [ 1 , 2 , 3 , 'test' ,[ 23 , 43 ]] >>> pickle_file = open ( 'my_list.pkl' , 'wb' ) - - 》打开一个pickle文件 >>> pickle.dump(my_list,pickle_file) - - 》把my_list导入到pickle_file >>>pickle_file.close() >>> pickle_file = open ( 'my_list.pkl' , 'wb' ) >>> my_list2 = pickle.load(pickle_file) - - >把pickle_file导入到my_list2 |
25)异常处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
常见标准异常: AssertionErron / AttributeError / EOFError / IndexError / KeyError / NameError / OSError / OverflowError / SyntaxError / TypeError / ZeroDivisionError 捕获异常: try : 检测范围 except Exception[as reason]: 出现异常后的处理代码 print ( '代码' ) except Exception[as reason]; 出现异常后的处理代码 print ( 'daimai' + str (reason)) except (Error1,Error2): 处理异常的代码 try : 检测范围 except Exception[as reason]: 处理异常的代码 finally : 无论如何都会处理的代码 raise 语句抛出异常 raise Exception( '指示代码' ) |
26)丰富的else语句和简洁的with语句
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
else 配合其他语句产生更多的功能 with语句:缩小工作量: 没有使用with前: try : f = open ( 'data.txt' , 'r' ) for each in f: print (each) except OSError as reason: print ( '出错啦:' + str (reason)) finally : f.close() 使用with后: try : with open ( 'data.txt' , 'w' ) as f: for each in f: print (each) except OSError as reason: print ( '出错啦:' + str (reason)) |
1
2
3
4
5
6
7
8
9
|
导入模块三种方式: a) import easygui easygui.msgbox( 'test' ) b) from easygui import * msgbox( 'test' ) c) import easygui as g g.msgbox( 'test' ) 建议不要再IDLE上运行EASYGUI |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
关键词 class class Turtle: #属性 color = 'green' weight = 10 #方法: def climb( self ) print ( 'climb tree' ) 调用: tt = Turtle() - - >创建对象 tt.climb() - - >调用方法 oo = 面向对象 oo的特征: 1 ,封装 2 ,继承 class mylist( list ): pass - - - >表示只继承父类,不做其他任何改动 list2 = mylist() 3 ,多态 self - - >相当于c + + 的this指针 >>> class ball: def setname( self ,name): self .name = name def kick( self ): print ( 'i am %s,who kicked me????' % self .name) a = ball() a.setname( 'test' ) 4 ,_init_( self ) - - - >构造方法 >>> class ball: def __init__( self ,name): self .name = name def kick( self ): print ( 'i am %s,who kicked me????' % self .name) b = ball( 'test' ) 5 ,公有和私有 类属性和方法默认都是公有的 name mangling - - - >名字改编,名字重整 私有变量:在变量名或函数名前加上 '__' 双下划线 访问私有变量方法: 1 ,在类内定义方法,间接访问私有变量 2 ,._类名__变量名 6 ,继承 class derivedclassname(basename): .... 如果子类中出现和父类相同的方法,则覆盖掉父类的方法 不想覆盖掉父类的方法: 1 ,调用未绑定的父类方法 def __init__( self ): fish.__init__( self ) - - - - 》先调用父类同名的方法 self .hungry = True 2 ,使用 super 函数 def __init__( self ): super ().__init__() self .hungry = True 7 ,多重继承 class derivedclass(base1,base2,base3): ...... 8 ,拾遗 Mix - in 编程机制 类,类对象,实例对象,实例属性(static) 如果属性的名字和方法的名字相同,则属性会覆盖掉方法 绑定: class bb: def printbb(): print ( 'no zuo no die' ) b1 = bb() b1.printbb() - - - - >会出错误 9 ,一些相关的BIF: issubclass ( class ,classinfo) 1 ,一个类被认为是自己的子类 2 ,classinfo可以是类对象组成的元祖,只要 class 与其中任何一个候选类的子类,则返回TRUE isinstance ( object ,classinfo) 检查对象是否属于classinfo类 1 ,如果第一个参数不是对象,则永远返回fasle 2 ,如果第二个不是类,则会抛出typeerror的异常 hasattr ( object ,name) - - >测定 object 中是否有'name‘属性 hasattr (c1, 'x' ) getattr ( object ,name[,default]) - - >如果有属性返回 1 ,否则返回default setattr ( object ,name,value) - - >给 object 中的name属性赋值vlalue delattr ( object ,name) - - >删除 object 中的name属性 property (fget = none,fset = none,fdel = none,doc = none)设置属性,设置定义好的属性 获取属性的方法,设置属性的方法,删除属性的方法 class c: def __init__( self ,size = 10 ): self .size = size def getsize( self ): return self .size def setsize( self ,value): self .size = value def delsize( self ): del self .size x = property (getsize,setsize,delsize) c1 = c() c1.x / c1.x = 19 / c1.size |
29)魔法方法(构造和析构)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
特点: 1 ,魔法方法总是被双下划线包围,例如__init__ 2 ,魔法方法是面向对象python的一切 3 ,魔法方法的魔力体现在他们总能够在适当的时候被自动调用 构造方法: __init__( self [,...]) - - >返回值一定是NONE 用在实例初始化 __new__( cls [,...]) - - - >第一个初始化的方法 当继承一个不可修改属性的类时,则调用此方法修改属性 class capstr( str ): def __new__( cls ,string): string = string.upper() return str .__new__( cls ,string) 析构方法: __del__( self ) 当数据不适用时,调用此方法 只有在调用了该对象的所有实例都消失时才会产生此方法 |
30)魔法方法:算术运算
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
__add__( self ,other):定义加法的行为 '+' 例子: >>> class new_int( int ): def __add__( self ,other): return int .__sub__( self ,other) def __sub__( self ,other): return int .__add__( self ,other) >>> a = new_int( 3 ) >>> b = new_int( 8 ) >>> a + b - - - - >此时a是 self ,b是other - 5 __sub__(sub,other):减法 __mul__(sub,other):乘法 truediv / floordiv / mod / divmod / pow / lshift / rshift / and / xor / or divmod (a,b)返回的值是一个元祖:(a / / b,a % b) |
31)网络socket
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
socket提供较为底层的网络连接及数据传输功能 tcp socket / udp socket / unix socket 整个通信过程三步走: a)客户端连接服务器: 导入模块: import socket 创建tcp类型的socket: c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 建立到指定ip地址、端口的tcp连接 c.connect(( '211.121.12.43' , 80 )) 在系统上使用netstat命令查看新建的连接: 关闭连接: c.close() b)服务器端监听: import socket s = socket.socket(socket.AF_INET,socket.sock.SOCK_STREAM) s.bind(( '127.0.0.1' , 80 )) s.listen( 1 ) while True : cs,ca = s.accept() - - >创建socket和客户端通信 cs.sendall( 'replay' ) cs.close() c)客户端收发数据: import socket c = socket.socket(socket.AF_INET,socket.SOCK_STREAM) c.connect(( '211.121.12.43' , 80 )) 向服务端发送‘hello' c.send( 'hello' ) 读取服务端回复数据: c.recv( 1024 ) c.close() |
32)HTTP库实现HTTP协议
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
导入httplib模块: import httplib 创建http实例,指定连接主机名和端口: http = httplib.HTTPConnection( 'itercast.com' , 80 ) 指定要获取的URI: http.request( 'GET' , '/ask' ) - - >get方法获取指定数据,ask表示要访问的页面 输出返回的网页body内容: print http.getresponse().read() 关闭连接: http.close() 更简单的urllib库: 导入urllib模块 import urllib 创建一个opener的实例 opener = urllib.build_opener() 打开指定的url f = opener. open ( 'http://www.baidu.com/ask' ) 读取返回内容 f.read() |
33)python连接mysql的模块
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
import MySQLdb conn = MySQLdb.connect(user = 'root' ,passwd = ' ',host=' 127.0 . 0.1 ') - - - >连接mysql,默认是localhost 创建游标,通过游标发送sql指令 cur = conn.cursor() conn.select_db( 'database-name' ) - - 》连接数据库,本例用week cur.execute( 'insert into userinfo(name,age) value(' milo ',20)' ) - - 》执行sql语句。insert 简单化操作方式: sqli = 'insert into userinfo(name,age,gender) value(%s,%s,%s)' cur.execute(sqli,( 'a' , 37 , 'male' )) cur.executemany(sqli,[( 'test' , 34 , 'male' ),( 'test2' , 36 , 'female' )]) cur.execute( 'delete from userinfo where id=20' ) - - >删除数据 cur.execute( 'select * from userinfo' ) - - >查询数据,但是不能直接显示,使用以下方法可以查看 cur.fetchone() - - >在python上显示一行数据 cur.scroll( 0 , 'absolute' ) - - >移动指标,此为绝对方式 cur.fetchmany( 15 ) - - >在python上显示 15 条数据.需要输入数据。必须先查询 cur.fetchmany(cur.execute( 'select * from userinfo' )) - - >通过一条命令显示数据 cur.close() - - >关闭游标的连接 conn.close() - - - >关闭数据库连接 |
以上这篇python常用知识梳理(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
28)类和对象
27)图形用户界面编程:EasyGui