zoukankan      html  css  js  c++  java
  • 总结(6)--- python基础知识点小结(细全)

    ===========================================================================================================================================
    基础: 一、列表
    ===========================================================================================================================================
    1. 取出元素------------------------->>-: 变量=列表[索引]

    2. 添加元素------------------------->>-: 列表.insert(位置,要添加的元素)

    列表.append(要添加的元素)

    列表.exntend([元素,元素,元素,元素])

    3. 修改元素------------------------->>-: 列表[索引] = "将要被修改成的元素"

    4. 删除元素------------------------->>-: del 列表[索引]

    列表.remove(元素) #-只能删一个元素

    列表.pop() #-只能删除最后一个元素

    列表.pop(索引) #-只能删一个元素

    列表.clear() #-清空

    5. 统计元素------------------------->>-: print(len(列表)) #-查列表内元素的数量

    if 元素 in 列表: #-判断列表中是否包含某元素

    变量 = 列表.count(元素) #-查元素出现次数

    变量 = 列表.index(元素) #-查元素索引

    6. 元素排序------------------------->>-: 列表.sort() #-升序

    列表.sort(reverse=True) #-降序

    列表.reverse() #-反转

    7. set()去重------------------------>>-: set(a)

    ===========================================================================================================================================
    基础: 二、字典
    ===========================================================================================================================================
    1. 字典取值------------------------->>-: 变量 = 字典[键] #-如果没有key会报错

    变量 = 字典.get(键) #-如果没有key不会报错,返回None

    变量 = 字典.get(键,"") #-如果没有key不会报错,返回引号中的内容

    变量 = 字典.keys() #-可以把字典中的所有key以视图对象的方式遍历出来,
    视图对象可随意更改成列表、元祖类型。
    取出的内容没有顺序

    for key in 字典.keys() #-遍历所有键

    for value in 字典.values() #-遍历所有值

    for item in 字典.items() #-遍历所有键和值

    for key,value in 字典.inems() #-遍历所有键和值,遍历一次自动换行

    for key in 字典:
    print(key, 字典[key]) #-打印效果:> key values

    2. 增加键值对----------------------->>-: 字典[键] = 值 #-无则增,有则改

    3. 删除键值对----------------------->>-: del 字典[键] #-删除指定键

    字典.pop(键) #-删除指定键

    变量 = 字典.pop(键) #-删除键,并返回被删键

    变量 = 字典.popitem() #-随机删除一个键值对

    4. 改值----------------------------->>-: 字典[键] = 值

    字典.update({键:值,键:值}) #-更新键值对

    ===========================================================================================================================================
    基础: 三、字符串
    ===========================================================================================================================================
    1. 判断开头------------------------->>-: if 字符串变量.startswith("条件")

    2. 判断结尾------------------------->>-: if 字符串变量.endswith("条件")

    3. 左-->右查找---------------------->>-: 新变量 = 字符串的变量.find("判断条件") #-未找到返回-1, 找到返回索引

    4. 右-->左查找---------------------->>-: 新变量 = 字符串的变量.rfind("判断条件") #-未找到返回-1, 找到返回索引

    5. 替换----------------------------->>-: 新变量 = 字符串的变量.repiace("被替换的",“替换成”)

    新变量 = 字符串的变量.repiace("被替换的",“替换成”,替换数量)

    6. 转为大写------------------------->>-: 新变量 = 变量.upper()

    7. 转为小写------------------------->>-: 新变量 = 变量.lower()

    8. 居中对齐------------------------->>-: 新变量 = 变量.center(字符长度,“内容外要显示的东西”)

    9. 左对齐--------------------------->>-: 新变量 = 变量.ljust(字符长度,“内容外要显示的东西”)

    10.右对齐--------------------------->>-: 新变量 = 变量.rjust(字符长度,“内容外要显示的东西”)

    11.去除头尾------------------------->>-: 新变量 = 变量.strip(“去除内容”)

    12.去除左右/替换-------------------->>-: 新变量 = 变量.repllace("去除内容","去除内容替换为")

    13.拆分----------------------------->>-: 新变量 = 变量.split("内容") #-拆分字符串并删除"内容"

    14.拼接----------------------------->>-: 新变量 = 变量 + 变量

    新变量 = 变量.join(["内容","内容","内容"])


    ===========================================================================================================================================
    一. udp
    ===========================================================================================================================================
    udp----创建------------------------->>-: from socket import *
    udp_socket = socket(AF_INET, SOCK_DGRAM)

    dup----发送------------------------->>-: udp_socket.sendto(内容.encode(编码), (ip, 端口))

    dup----接收------------------------->>-: recv_data = udp_socket.recvfrom(最大接收字节数)

    dup----绑定固定端口号--------------->>-: udp_socket.bind(变量) #《变量 = ("", 端口号)》

    udp----接收显示--------------------->>-: print(recv_data.decode(解码))

    udp----关闭套接字(socket)----------->>-: udp_socket.close()

    ===========================================================================================================================================
    二. tcp客户端
    ===========================================================================================================================================
    tcp----客户端创建------------------->>-: from socket import *
    tcp_client_socket = socket(AF_INET, SOCK_STREAM)

    tcp----连接服务器------------------->>-: tcp_client_socket.connect((服务器ip, 服务器port)) #《port:---端口号》

    tcp----发送------------------------->>-: tcp_client_socket.send(内容.encode(编码))

    tcp----接收------------------------->>-: recv_data = tcp_client_socket.recv(最大接收字节数)

    tcp----接收显示--------------------->>-: print(recv_data.decode(解码))

    tcp----关闭套接字------------------->>-: tcp_client_socket.close()

    ===========================================================================================================================================
    三. tcp服务器
    ===========================================================================================================================================
    tcp----服务器创建------------------->>-: from socket import *
    tcp_server_socket = socket(AF_INER, SOCK_STREAM)

    tcp----设置重用端口号--------------->>-: server_socket.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1) #《1代表设置 0代表取消》

    tcp----绑定端口号------------------->>-: tcp_server_socket.bind(("", 端口号))

    tcp----转为监听模式----------------->>-: tcp_server_socket.listen(128)

    tcp----为客户端安排沟通套接字------->>-: tcp_client_socket, tcp_client_addr = tcp_server_socket.accept()

    ===========================================================================================================================================
    四. 获取当前时间
    ===========================================================================================================================================
    1.导入模块-------------------------->>-: import datetime

    2.调取当前时间---------------------->>-: now_time = datetime.datetime.now()

    3.更改时间显示格式------------------>>-: a = now_time.strftime("%Y-%m-%d %H:%M:%S")

    4.显示时间-------------------------->>-: print(a)

    ===========================================================================================================================================
    五. 线程创建
    ===========================================================================================================================================
    1.线程模块导入:--------------------->>-: import threading

    2.基本子线程创建方法:--------------->>-: t1 = threading.Thread(target=xxx, args=(参数,))
    t1.start()

    3.面向对象方式创建子线程方法:------->>-: class MyTherad(threading.Thread):
    def run(self):
    self.类方法

    def...

    def main():
    for i in range(子线程数量)
    t1 = MyThread()
    t1.start()

    4.查看线程数量方法:----------------->>-: 变量(线程数量)= len(threading.enumerate())

    5.创建互斥锁:----------------------->>-: mutex = threading.Lock()

    6.锁定------------------------------>>-: mutex.acquire()

    7.释放------------------------------>>-: mutex.release()

    ===========================================================================================================================================
    六.进程创建
    ===========================================================================================================================================
    1.进程模块导入:--------------------->>-: from multiprocessing import Process

    2.2.基本子进程创建方法:------------->>-: P1 = Process(target=xxx, args=(参数,))


    3.面向对象方式创建子进程方法:------->>-: class MyProc(multiprocessing.Process):
    def run(self):
    self.类方法

    def...

    def main():
    for i in range(子进程数量)
    t1 = MyProc()
    t1.start()

    4.自动创建子进程方法:(多进程必用)
    1.输入信息-->赋值给变量
    2.将信息变量打包成元祖,转给类,然后将类看成一个变量,返回
    类变量 = 类(信息变量,信息变量,信息变量)
    3.创建子进程:
    pro = multiprocessing.Process(target=类变量.类方法)
    pro.start()

    5.获得进程pid----------------------->>-: 想要获得的地方打印 print(os.getpid())

    6.获得父项进程pid------------------->>-: 想要获得的地方打印 print(os.getppid())

    ===========================================================================================================================================
    七. 进程间通信 用Queue队列
    ===========================================================================================================================================
    1. 导入Queue模块:------------------->>-: form multiprocessing import Queue

    2.创建Queue对象:-------------------->>-: q = Queue(接收消息的数量)

    3.发送消息:------------------------->>-: q.put(内容)

    4.接收消息:------------------------->>-: q.get()

    5.返回队列消息数量------------------>>-: q.qsize()

    6.查看消息队列空-------------------->>-: q.empty()

    7.查看消息队列满-------------------->>-: q.full()

    ===========================================================================================================================================
    八. 进程池Pool(多进程必用)
    ===========================================================================================================================================
    1.导入进程池模块:------------------->>-: from multiprocessing import Pool

    2.创建进程池:----------------------->>-: po = Pool(最大进程数)

    3.往进程池中添加一个任务(一):------->>-: po.apply(func=函数)
    #《执行完一个任务后,才会开始执行下一个任务,可以不加join》

    4.往进程池中添加一个任务(二):------->>-: po.apply_async(func=函数)
    #《多个任务同时去做,关闭进程池后必须加po.join》

    5.关闭进程池------------------------>>-: po.close()

    6.阻塞等待所有进程任务运行结束:----->>-: po.join()

    ===========================================================================================================================================
    九.迭代器
    ===========================================================================================================================================
    1. 迭代器生成方法(一):------------->>-: 变量 = (公式 for循环)

    2. 迭代器生成方法(二):------------->>-: 函数内加 yield 后跟接收的变量

    3. yield 多任务切换:--------------->>-: 1.创建第一个任务函数
    #《函数最后加 yield 和 time.sleep(0.5)》
    2.创建第二个任务函数
    ...
    3.调用生成器函数,产生生成器对象-------w1 = 第一个任务函数()
    w2 = 第二个任务函数()
    4.循环调用生成器进行任务切换----------while True:
    next(w1)
    next(w2)

    ===========================================================================================================================================
    十. 协程
    ===========================================================================================================================================
    1.判断对象是否可迭代---------------->>-: 1.导入模块:-------from collections import Iterable
    2.isinstance(a, Iterable) #《a:-----要查询的数据》

    2.greenlet多任务切换:--------------->>-: 1.导入greenlet模块:----from greenlet import greenlet
    2.创建greenlet对象-----gr1 = greenlet(任务1)
    gr2 = greenlet(任务2)
    ...

    3.任务中添加切换功能---任务1结尾添加 gr2.switch()
    time.sleep(0.5)

    任务2结尾添加 gr1.switch()
    time.sleep(0.5)

    4.启动位置添加程序段:----------------gr1.switch()

    3.gevent多任务切换(主要用):--------->>-: 1.导入模块----------from gevent import monkey
    monkey.patch_all()
    #《多任务同时进行》 import gevent
    import time

    2.创建任务函数 函数内容末尾必须加time.sleep()

    3.创建并启动协程----g1 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)
    g2 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)
    g3 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)
    time.sleep()

    4.添加主进程保护----gevent.joinall([g1,g2,g3])

    4.gevent多任务切换(主要用):--------->>-: 1.导入模块------>>-:import gevent
    import time
    #《单任务执行后切换任务》
    2.创建任务函数

    3.创建并启动协程----g1 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)
    g2 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)
    g3 = gevent.spawn(任务函数,如果有要传的参数直接写在这里)

    4.添加主进程保护----gevent.joinall([g1,g2,g3])

    ===========================================================================================================================================
    十一. 网页内容下载方法(非https)
    ===========================================================================================================================================
    1.导入模块:------------------------->>-: import urllib.request

    2.创建任务函数(url):---------------->>-: response = urllib.request.urlopen(url) url:网页赋值变量
    data = response.read()

    3.创建并启动协程-------------------->>-: begin = time.time() #记录当前时间 -----开始
    .....
    end = time.time() #记录当前时间 -----结束
    print("用时%f s" % (end - begin))

    ===========================================================================================================================================
    十二. 正则表达式
    ===========================================================================================================================================
    各种表达式-------------------------->>-: 匹配单个字符:

    .---> 匹配任意一个字符,除了
    []--> 匹配[]中列举的字符
    [-]--> 匹配字符的范围
    [0-9]
    [a-z]
    [A-Z]
    [^]--> 对其中字符禁止匹配--表示[]中的字符都不参与匹配
    d---> 表示匹配一个数字----等价于[0-9]
    D---> 表示匹配一个非数字--等价于[^0-9]
    s---> 表示匹配一个空白字符-----等价于[ fv]
    S---> 表示匹配一个非空白字符---等价于[^ fv]
    w---> 表示匹配一个单词字符-----等价于[a-zA-Z0-9_]
    W---> 表示匹配一个非单词字符---等价于[^a-zA-Z0-9_]

    匹配多个字符:
    {n} ----> 代表前面的字符可以匹配n次
    {n,m}---> 代表前面的字符最少匹配n次,最多匹配m次
    {n,}----> 代表最少匹配n次即可,上不封顶
    + ------> 代表最少匹配1次
    * ------> 代表最少匹配0次
    ? ------> 代表匹配0次或者1次

    将匹配的内容单独输出方法(网页篇):

    匿名分组-------------------------->>-: data = re.match(r"()","") 在表达式中用括号括起来想要单独输出的内容即可.第一个括号用
    group(1)调出. 第二个括号用group(2)调出. 以此类推

    有名分组-------------------------->>-: data = re.match(r"<(?P<html>w+)>(.*)</(html)>",a)
    #创建顺序----->data = re.match(r"","")--->re.match(r"<()><>",a)--->re.match(r"<(?P<名字>表达式)></(名字)>",a)


    1.导入模块-------------------------->>-: import re

    2.只查开头-------------------------->>-: re.match(r"a","b") #《a-正则表达式; b-搜索范围》

    3.查某内容(只查一部分,后面不再查)--->>-: re.search(r"a","b") #《a-正则表达式; b-搜索范围》

    4.查所有内容(输出全部要查找的内容)-->>-: re.findall(r"a","b") #《a-正则表达式; b-搜索范围》

    5.将匹配的数据进行替换-------------->>-: re.sub("a", "b", "c") #《a-正则表达式; b-要被替换的; c-将被替换成》

    6.切割------------------------------>>-: re.split(r"a","") #《a-正则表达式,表示按什么切分; b-要被切割的数据》

    7.输出内容-------------------------->>-: group(n) #《n-分组编号》

    8.以元祖的方式输出内容-------------->>-: groups()


    正则表达式编译功能:
    1.将表达式封装---------------------->>-: 变量 = re.compile(r"表达式")

    2.调用------------------------------>>-: ↑变量.match/search/findall(搜索范围).group()


    ===========================================================================================================================================
    十三. 正则表达式------将接收到的data内容用正则表达式从中单独提取出需要的部分
    ===========================================================================================================================================
    1.接收内容-------------------------->>-: data = XXXX.recv(4096)

    2.解码------------------------------>>-: str_data = data.decode()

    3.内容拆分到列表中------------------>>-: data_list = str_data.split(" ") #以网页请求为例. 括号内为以 为基准切分

    4.将列表中[0]号参数取出------------->>-: list_0 = data_list[0]

    5.正则取出参数中的路径-------------->>-: re_list_0 = re.match(r"/w/s(/S)", list_0)

    6.取出的历经赋值给变量-------------->>-: puth_info = re_list_0.group(1)


    ===========================================================================================================================================
    十四. Mysql---数据库
    ===========================================================================================================================================
    数据库:
    1.查看数据的存放位置(ubuntu)-------->>-: sudo su #进入最高权限
    cd /var/lib/musql #数据存放的路径

    1.1修改mysql数据库密码-------------->>-: mysqladmin -uroot -p旧密码 password 新密码

    1.2数据库的备份--------------------->>-: 先切换路径到桌面,然后--->>: mysqldump -uroot -p 源数据库 > 新文件.sql

    1.3数据库的恢复--------------------->>-: 先创建一个同名的数据库,然后切回ubuntu,---->>mysql -uroot -p 数据库名 < 备份文件路径/文件名

    2.启动mysql服务--------------------->>-: sudo service mysql start

    3.停止mysql服务--------------------->>-: sudo service mysql stop

    4.重启mysql服务--------------------->>-: sudo service mysql restart

    5.ubuntu的mysql默认登录信息--------->>-: 帐号: root
    密码: mysql

    6.连接mysql数据库------------------->>-: mysql -uroot -pmysql #-u:帐号; #-p:密码

    7.查看mysql中都有那些数据库--------->>-: show databases;

    8.查看当前使用的数据库-------------->>-: select databases();

    9.使用XX数据库---------------------->>-: use xxx;

    10.创建数据库----------------------->>-: create database 数据库名称 charset=utf8;

    11.查看数据库的创建语句------------->>-: show create database 数据库名称;

    12.删除数据库----------------------->>-: drop database 数据库名称;

    13.退出mysql数据库的三种方法-------->>-: exit、puit、ctrl + d

    14.查看mysql的配置文件-------------->>-: cd /etc/mysql/mysql.conf.d

    15.查看mysql的log日志--------------->>-: cd /var/log/mysql/error.log

    16.显示时间------------------------->>-: select now();

    17.查看数据库版本------------------->>-: select version();

    数据表:
    1.查看当前数据库中所有表------------>>-: show tables;

    2.查看表结构(desc)------------------>>-: desc 表名;

    3.创建表(create)-------------------->>-: create table 表名(列参数);

    4.修改表(添加字段)------------------>>-: alter table 表名 add 列名 类型 约束;

    5.修改表(重命名修改字段)------------>>-: alter table 表名 change 原列名 新列名 类型 约束;

    6.修改表(不重命名修改字段)---------->>-: alter table 表名 modify 列名 类型 约束;

    7.修改表(删除字段)------------------>>-: alter table 表名 drop 列名;

    8.删除表(drop)---------------------->>-: drop table 表名;

    9.查看表的创建语句------------------>>-: show create table 表名;

    10.向表内插入数据------------------->>-: insert into 表名 values;

    11.查看表内所有数据----------------->>-: select * from 表名;

    12.查看表内所有数据(完全写法)------->>-: select 数据库.表名.* from 表名;

    13.修改表内数据(update)------------->>-: update 表名 set 列=值 where 判断条件;

    14.物理删除(不可恢复)--------------->>-: delete from 表名 where id = ***;

    15.逻辑删除(可恢复)----------------->>-: 跳到13步,将is_delete修改为1即可;

    16.查看未被删除文件----------------->>-: select * from 表名 where is_delete = 0;

    17.查看已被删除文件----------------->>-: select * from 表名 where is_delete = 1;

    18.指定查询------------------------->>-: select 列名,列名,列名 from 表名;

    19.去重(distinct)------------------->>-: select distinct 列名 from 表名;

    20.条件查询------------------------->>-: select * from 表名 where 判断条件

    21.关键字查询(模糊查询)(like)------->>-: select * from 表名 where 列名 like "%关键字%" #%表示任意字符可有可无

    22.正则表达式查询(rlike)------------>>-: select * from 表名 where 列名 rlike "正则表达式"

    23.范围查询(in)(和)----------------->>-: select * from 表名 where 列名 in (**,**) #只查满足括号内条件的

    24.范围查询(between)(到)------------>>-: select * from 表名 where 列名 between 初始条件 and 结束条件

    25.空判断(is null)------------------>>-: select * from 表名 where 列名 is null;

    26.排序查询------------------------->>-: (升序) select * from 表名 order by 列名 asc;
    (降序) select * from 表名 order by 列名 desc;

    27.聚合函数(查询表内数据总数)--------->>-: select count(*) from 表名;
    (查询某个列有多少)-------->>-: select count(列) from 表名;

    28.查询最大值(max)------------------>>-: select max(列) from 表;

    29.查询最小值(min)------------------>>-: select min(列) from 表;

    30.求和(sum)------------------------>>-: select sum(列) from 表;

    31.求平均值(avg)-------------------->>-: select avg(列) from 表;

    32.四舍五入保留小数位数(round)------>>-: select round(列,保留小数位数) from 表;

    33.分组查询(group by)--------------->>-: select 列,查询方法 from students group by gender;
    例: select gender, count(*) from students group by gender;

    34.组名+内容(显示查询结果)---------->>-: select 列, 内容列表名字(列) from students group by gender;

    35.分组后再条件筛选(having)--------->>-: select 列, 内容列表名字(列) from students group by gender having 判断表达式

    36.增加记录分组内容总和------------->>-: select 列, 内容列表名字(列) from students group by gender with rollup

    37.设置分行查询--------------------->>-: select * from 表 where 判断条件 limit 起始行,终点行 公式: limit (n-1)*m,m

    38.列表内连接查询(inner join + on)-->>-: select 表1.显示列,表2.显示列 from 表1 inner join 表2 on 表1.关联列 = 表2.关联列ID

    39.列表左关联查询(lift join + on)--->>-: select * from 表1 left join 表2 on 表1.关联列 = 表2.id/

    40.导入sql资源文件(source)---------->>-: source 路径/文件名

    41.自关联查询----------------------->>-: 例:
    select p.atitle,c.atitle from areas as p inner join areas as c on c.pid = p.aid where p.atital = "广东省"
    显示省名 显示市名 表 名1 表 名2 查找表1

    42.标量子查询语句------------------->>-: 例: 查询结果为《一行一列》
    select * from students where heigh = (select max(heigh) from students);

    43.列级子查询语句------------------->>-: 例: 查询结果为《一列多行》
    select class_name from classes where classes.id in (select cla_id from students);

    44.行级子查询语句------------------->>-: 例: 查询结果为《一行多列》
    select * from students where (age,hergh) = (select max(age),max(hergh) from students);

    45. 每种类型中最贵的(备份)--------->>-:
    select a.name as "型号", b.name as "种类", c.name as "品牌", a.price as "价格" from goods as a inner join JDcate_name as b on a.cate_id = b.id inner join JDbrand as c on a.brand_id = c.id inner join (select cate_id as aa, max(price) as bb from goods group by aa) as d on d.aa = b.id and d.bb = a.price;

    46.创建外键约束(1)------------------>>-: 先创建子表--->> foreign key(外键id) references 子表(id)

    47.创建外键约束(2)------------------>>-: 先创建主表--->> alter table 主表 add foreign key (外键id) references 子表(id)

    48.查找外键约束的名字--------------->>-: show create table 主表;

    49.删除外键约束--------------------->>-: alter table 主表 drop foreign key 外键名称;

    50.开始sql运行时间监测-------------->>-: set profiling = 1;

    51.查看所有用户--------------------->>-: mysql> select host,user,authentication_string from user;


    视图封装:
    1. 创建视图封装--------------------->>-: create view v_需要封装的表名(视图名称) as select * from 需要封装的表名

    2. 删除视图封装--------------------->>-: drop view 视图名称

    事物操作:
    1. 开启事物:------------------------>>-: begin;

    2. 操作内容------------------------->>-: sql操作;

    3. 提交事物------------------------->>-: commit;

    4. 回滚事物------------------------->>-: rollback

    索引操作:
    1. 开启sql时间监测------------------>>-: set profiling = 1;

    2. 创建索引------------------------->>-: create index title_**(#索引名字) on 表(title(*) #对应字段(长度,要和创建表时一样));
    例: create index title_index on text_index(title(10))

    3. 执行sql查询语句------------------>>-: select * from 表 where title = "条件"

    4. 查询消耗时间--------------------->>-: show profiles;

    5. 查询表中设置的索引--------------->>-: show index from 表;

    6. 删除索引------------------------->>-: drop index 索引名称 on 表名;

    ===========================================================================================================================================
    十五. Python操作MySql
    ===========================================================================================================================================

    1. 导入模块------------------------->>-: from pymysql import *

    def update():

    1. 建立和数据库的连接对象----------->>-: conn = connect(host = "localhost", #localhose默认本机IP,如连接他人,需输入对方ip
    user = "mysql帐号",
    password = "mysql密码",
    database = "数据库名字",
    port = mysql端口,
    charset = "utf8")

    2. 获取数据库的操作对象------------->>-: cur = conn.cursor()

    3. 编写sql操作语句------------------>>-: sql = "sql操作语句"

    4. 通过3来执行4--------------------->>-: ret = cur.execute(sql)
    print("受影响的行数为%s" % ret)

    5. 如果是更新操作,那么执行此步------>>-: if ret != 0:
    conn.commit() #提交
    else:
    conn.rollback() #回滚

    6. 关闭操作对象--------------------->>-: cur.close()

    7. 关闭连接对象--------------------->>-: conn.close()


    def select():

    1. 建立和数据库的连接对象----------->>-: conn = connect(host = "localhost", #localhose默认本机IP,如连接他人,需输入对方ip
    user = "mysql帐号",
    password = "mysql密码",
    database = "数据库名字",
    port = mysql端口,
    charset = "utf8")

    2. 获取数据库的操作对象------------->>-: cur = conn.cursor()

    3. 编写sql操作语句------------------>>-: sql = "sql操作语句"

    4. 通过3来执行4--------------------->>-: ret = cur.execute(sql)
    print("受影响的行数为%s" % ret)
    ret = cur.fetchone()/fetchall() #fetchone() 如果有数据,返回元祖. 如果没有,返回None
    print(ret) #fetchall() 如果有数据,返回元祖嵌套,没有,返回空元祖()


    5. 关闭操作对象--------------------->>-: cur.close()

    6. 关闭连接对象--------------------->>-: conn.close()


    防止sql注入bug:
    1.操作语句中加%s站位

    2.执行语句中加[实参],实参与站位一一对应 ret = cur.execute(sql,[实参])

    3.主程序中加实参


    ===========================================================================================================================================
    十六. WSGI
    ===========================================================================================================================================

    已封装模块:
    from wsgiref.simple_server import make_server


    def application(environ, start_response):

    start_response('200 OK', [('Content-Type', 'text/html')])

    print('===', environ['PATH_INFO'])

    body = r'<h1>Hello, %s!</h1>'%(environ['PATH_INFO'] or 'web')

    return [body.encode('utf-8')]


    # 创建一个服务器,IP地址为空,端口是8000,处理函数是application:
    httpd = make_server('127.0.0.1', 8080, application)
    print('正在监听HTTP的8080端口...')
    httpd.serve_forever()


    练习用Application:

    def applitation(environ, start_response):
    start_response("200 OK",[("Context-Type", "text/html"),
    ("Server", "PythonWebServer")])
    return "Hello~"


    ===========================================================================================================================================
    十七. 文件操作
    ===========================================================================================================================================
    1. 打开文件------------------------->>-: with open("路径", "打开方式") as file
    print(file.read())


    ===========================================================================================================================================
    十八. argv(主程序头必写)
    ===========================================================================================================================================
    1. 导入模块------------------------->>-: import sys

    2. 主程序开头输入------------------->>-: if len(sys.argv) != 2 #设置终端输入参数的数量判断条件
    print("判断条件数量不正确")
    return
    data = sys.argv[1]
    if data.isdigit():
    port = int(data)

    3. 之后的程序可应用port进行传参


    ===========================================================================================================================================
    十九. argv---->通过终端输入的方式导入模块
    ===========================================================================================================================================
    1. 导入模块------------------------->>-: import sys

    2. 将内容赋值给变量----------------->>-: mod_name_app_name = sys.argv[位置索引]

    3. 将内容切分到列表----------------->>-: data_list = mod_name_app_name.split(":")

    4. 判断内容数量是否符合------------->>-: if len(data_list) != 2

    5. 将参数分别赋值给命名------------->>-: mod_name = data_list[0]
    app_name = data_list[1]

    6. 导入'字符串'模块----------------->>-: Application(模块名) = __import__(mod_name)
    # Application(模块名) = __import__(mod_name) 等价于 import Application

    7. 调用模块内的函数----------------->>-: app = getattr(Application, app_name)
    # app = getattr(Application, app_name) 等价于 Appliction.app

    8. 在__init__中创建self.app = app,以便传参

    ===========================================================================================================================================
    二十. HTML+CSS
    ===========================================================================================================================================
    HTML:
    =======
    1. 段落标签------------------------->>-: <p></p> #段落标签是个换行的标签,并且文字没有任何附加的效果,仅仅只是个文本

    2. 页面布局标签(换行)--------------->>-: <div></div> #在页面布局的时候使用<div>标签,可以达到换行的效果,布局分块用,也叫块级标签

    3. 页面布局标签(不换行)------------->>-: <span></span> #使用<span>标签,可以达到不换行的效果,不能设置宽和高,也叫内联/行内标签

    4. 存放特殊效果的文字和小图片------->>-: <span></span> #<span>标签不但可以布局,还可以存放带有特殊效果的文字和小图片

    5. 文本加粗------------------------->>-: <b><b> #它可以给文本设定加粗效果,无特殊含义,不换行

    6. 文本倾斜------------------------->>-: <i></i> #它可以给文本设定倾斜效果,无特殊含义,不换行

    7. 文本下划线----------------------->>-: <u></u> #它可以给文本添加下划线效果,无特殊含义,不换行

    8. 文本删除线----------------------->>-: <s></s> #它可以给文本添加删除线效果,无特殊含义,不换行

    9. strong--------------------------->>-: <strong></strong> #强调语义的加粗,不换行

    10. em------------------------------>>-: <em></em> #强调语义的倾斜,不换行

    11. ins----------------------------->>-: <ins></ins> #强调语义的下划线,不换行

    12. del----------------------------->>-: <del></del> #强调语义的删除线,不换行

    13. 页面中插入图片------------------>>-: <img src="图片名" title="图片备注" alt="备用显示">
    #title: 当鼠标放到图片上时,鼠标旁边会显示title设定的文字,以便于给图片备注
    #title: 可用于seo搜索关键词的存放
    #alt: 当图片无法显示时,会显示alt的内容.
    #alt: alt支持盲人读屏软件的读取

    14. 插入超链接---------------------->>-: <a href="http://链接地址"/"路径" target>显示给用户看的链接按钮(文字/图片)</a>

    15. 超链接占位---------------------->>-: <a href="###"></a>

    16. 显示多个空格-------------------->>-: &nbsp;&nbsp;&nbsp....

    17. 在网页中显示程序中的标签-------->>-: &lt...&gt

    18. 插入换行------------------------>>-: <br>

    19. 创建无序列表-------------------->>-: <ul>
    <li>列表内容1</li>
    <li>列表内容2</li>
    ...
    </ul>

    20. 创建有序列表-------------------->>-: <ol>
    <li>列表内容1</li>
    <li>列表内容2</li>
    ...
    </ol>

    21. 创建自定义列表(项目列表)-------->>-: <dl>
    <dt>项目标题</dt>
    <dd>项目内容</dd>
    ...
    </dl>

    CSS引用:
    =========
    CSS初始化模板:
    ---------------
    body, h1, h2, h3, h4, h5, h6, hr, p, blockquote, dl, dt, dd, ul, ol, li, pre, form, fieldset, legend, button, input, textarea, th, td { margin:0; padding:0; }
    body, button, input, select, textarea { font:12px/1.5tahoma, arial, 5b8b4f53; }
    h1, h2, h3, h4, h5, h6{ font-size:100%; }
    address, cite, dfn, em, var { font-style:normal; }
    code, kbd, pre, samp { font-family:couriernew, courier, monospace; }
    small{ font-size:12px; }
    ul, ol { list-style:none; }
    a { text-decoration:none; }
    a:hover { text-decoration:underline; }
    sup { vertical-align:text-top; }
    sub{ vertical-align:text-bottom; }
    legend { color:#000; }
    fieldset, img { border:0; }
    button, input, select, textarea { font-size:100%; }
    table { border-collapse:collapse; border-spacing:0; }


    内链式:
    --------
    1. 搭建CSS运行环境------------------>>-: 在html的head中,回车插入<style></style>

    2. 设置标签内容属性(颜色)----------->>-: 在style中加入属性键值对 <style>
    标签{
    color:red(颜色的英文)
    }
    </style>


    外链式:
    --------
    1. 新建一个css文件

    2. 编辑css文件内容,文件内容和内链式的<style></style>内容一样: 标签{
    color:red
    }

    3. 在html程序中head中,回车插入css引用标签: <link rel="stylesheet" href="路径">

    常用文字样式属性:
    ------------------

    font(同时设置2-8)------------------->>-: font:是否加粗 是否倾斜 字号/行高 字体 #字号/行高 字体 -->这三个必须设置

    1. 设置文字的颜色------------------->>-: color: ;

    2. 设置文字加粗--------------------->>-: font-weight:bold;

    3. 设置文字不加粗------------------->>-: font-weight:normal;

    4. 设置文字的倾斜------------------->>-: font-style:italic;

    5. 设置取消文字的倾斜--------------->>-: font-style:normal;

    6. 设置文字的大小------------------->>-: font-size: ;

    7. 设置行间距----------------------->>-: line-height:**px;

    8. 设置文字的字体------------------->>-: font-family:'微软雅黑'(字体名字一般用英文);

    9. 设置文字下划线------------------->>-: text-decoration:underline;

    10. 设置取消文字下划线-------------->>-: text-decoration:none;

    11.设置文字的删除线----------------->>-: text-decoration:line-through;

    12.超链接的伪类--------------------->>-: 设置点击前的状态: ------------>>-: a:link{color:red};

    设置点击时的状态: ------------>>-: a:active{color:red};

    设置点击后的状态: ------------>>-: a:visited{color:blue};

    设置鼠标滑过的状态: ---------->>-: a:hover{color:yellow};

    实际开发写法------------------>>-: a{color:red};
    a:hover{color:blue};

    13.设置表单标签--------------------->>-: 表单通常用来制作登录,注册和页面的部分搜索,form叫表单域,form包含的标签叫表单控件

    创建表单标签--------------------->>-: <form action="服务器提交地址" method="get(不加密)/post(加密)"></form>

    文本框---------------------->>-: <input type="text" placeholder="默认显示内容">
    valus="默认显示内容"

    文本域---------------------->>-: <textarea></textarea>

    css中设置文本域--------->>-: 禁用拖拽框大小----->>-: resize:none;

    密码框---------------------->>-: <input type="password">

    单选框---------------------->>-: <input type="radio" name="" checked>男 <input type="radio" name="">女
    #name取相同值,即可实现单选
    #checked在'男'选项这里,说明这个选项是默认选项(可设置默认,不写就行)

    设置选框点击字也生效-------->>-: <input type="radio" name="" checked id=""><label for="">男</label>
    #id和for取相同值即可

    复选框---------------------->>-: <input type="checkbox">读书 <input type="checkbox" checked>听音乐
    #默认

    上传文件-------------------->>-: <input type="file">

    下拉菜单-------------------->>-: <select>
    <option>北京</option>
    <option>上海</option>
    <option selected>广州</option> #加了selected,所以默认选择广州
    </select>

    提交功能按钮---------------->>-: <input type="submit" value="按钮上显示的内容">

    需要通过js绑定功能的按钮---->>-: <input type="button" value="按钮上显示的内容">

    重置功能按钮---------------->>-: <input type="reset">

    刷新页面按钮---------------->>-: <a href="javascript:location.reload();" class="button2">重置</a>

    常用布局样式属性:
    ------------------
    1. 设置布局宽度--------------------->>-: **px;

    2. 设置布局高度--------------------->>-: height:**px;

    3. 设置布局背景色------------------->>-: background:***(颜色英文单词);

    设置布局背景图(平铺)--------->>-: background:url(相对路径/图片名);

    设置布局背景图(不平铺)------->>-: background:url(相对路径/图片名) no-repeat **px **px; #后面的px可设置图片位置坐标
    #定位在中间:px换成center

    设置布局背景图(横向平铺)----->>-: background:url(相对路径/图片名) repeat-x;

    设置布局背景图(纵向平铺)----->>-: background:url(相对路径/图片名) repeat-y;

    设置布局背景图位置固定------->>-: background:url(相对路径/图片名) no-repeat fixed; #加个fixed就行.或者不写fixed,下加
    background-attachment: fixed;

    设置布局圆角----------------->>-: border-radius:**px/**%(最大50%);

    单独设置背景图平铺方式------->>-: background-repeat: ;

    单独设置背景图定位----------->>-: background-position: ;

    设置布局背景图透明----------->>-: background:rgba(0,0,0,0.5(透明度)); 6 #0,0,0以黑色为底色,0.5是透明度,范围0-1之间小数


    4. 设置布局边框(全体)--------------->>-: border:粗细(单位px) 颜色 样式; #样式包括: solid(实线)、dashed(虚线)、dotted(点线)

    设置布局顶边边框------------->>-: border-top:粗细(单位px) 颜色 样式;

    设置布局左边边框------------->>-: border-left:粗细(单位px) 颜色 样式;

    设置布局右边边框------------->>-: border-right:粗细(单位px) 颜色 样式;

    设置布局底边边框------------->>-: border-bottom:粗细(单位px) 颜色 样式;

    10. 设置首行缩进--------------------->>-: text-indent: *em; #*em = *个字的宽度

    11. 设置内间距----------------------->>-: padding:**px;

    顶部距离--------------------->>-: padding-top:**px;

    左侧距离--------------------->>-: padding-left:**px;

    右侧距离--------------------->>-: padding-right:**px;

    底部距离--------------------->>-: padding-bottom:**px;

    四面八方距离----------------->>-: padding:**px **px **px **px; #三个值: 上 左右 下 两个值: 上下 左右;
    上 右 下 左

    设置内容位置变化不影响整体尺寸(设置内间距时不影响整体尺寸)--->>-: box-sizing:border-box;

    12. 设置元素和外界的距离------------->>-: margin:**px;

    顶部距离--------------------->>-: margin-top:**px;

    左侧距离--------------------->>-: margin-left:**px;

    右侧距离--------------------->>-: margin-right:**px;

    底部距离--------------------->>-: margin-bottom:**px;

    四面八方距离----------------->>-: margin:**px **px **px **px; #三个值: 上 左右 下 两个值: 上下 左右;
    上 右 下 左

    设置版心居中----------------->>-: margin:* auto;

    设置内容超出父级隐藏(设置外间距时不影响父级位置和尺寸)------------->>-: overflow:hidden #放到父级中

    13. 路径写法------------------------->>-: 1).当前文件所在位置包含的文件夹中--->>-: ./文件夹/文件

    2).上一级位置所在文件夹中----------->>-: ../文件夹/文件

    3).多级位置所在文件夹中------------->>-: ../../../文件夹/文件

    14. 设置内容水平居中----------------->>-: text-align: center;

    设置内容水平左对齐--------------->>-: text-align: left;

    设置内容水平右对齐--------------->>-: text-align: right;

    15. 设置内容垂直居中----------------->>-: line-height: 自身行高;

    16. 实现元素类型之间的转换----------->>-: 块级转内联:------------------------------->>-: display: inline;

    内联块(块级转内联并且宽和高设置生效):----->>-: display: inline-block;

    内联转块级:------------------------------->>-: display: block;

    隐藏(配合js)------------------------------>>-: display: none;

    占位隐藏(配合js)-------------------------->>-: visibility: hidden;

    标准流/文档流: 标签默认的元素类型.

    17. 浮动----------------------------->>-: 让块级标签完美的没有间距的在一行共存,只要涉及块级一行共存,都用浮动.

    无浮动--------------------->>-: float: none;

    基准在左------------------->>-: float: left; #需要共存的元素都要加上这个

    基准在右------------------->>-: float: right; #需要共存的元素都要加上这个

    18. 清除浮动(清除浮动的影响)--------->>-: 1. 显示在最底层的标签添加 overflow:hidden;

    2. 额外标签法------------->>-: 在所有浮动标签的下面添加<div class="clearFix"><div>
    在css中设置.clearFix{clear:both;}

    3. 伪类(伪元素)办法------->>-: css中设置: ↓↓↓
    .clearfix::after{
    content:"" #语法规定,必须有这个
    display:block/table; #转元素类型为block(块级类型)
    clear:both;
    height:0; #设置一个默认高度为0
    visibility:hidden; #设置让它占位隐藏
    zoom:1; #解决IE6的兼容性
    }
    在子级的最后,也就是包含子级的元素div中添加clearfix:↓↓↓
    <div class="con clearfix">

    19. 定位: 可以控制让标签去页面的任何一个位置,包括两个标签压在一起;

    相对定位:---------------------------->>-: position: relative; #需要配合位置偏移属性 top, bottom, left, right;
    位置偏移属性: **px; #偏移方向的基准点是自己

    绝对定位:---------------------------->>-: position: absolute; #可设置宽和高属性,默认宽高是自己;
    位置偏移属性: **px; #偏移方向的基准点是浏览器左上角

    改变偏移方向基准点--------------->>-: 把被当做基准的标签改成相对定位即可
    #定位要领: 子绝父相

    固定定位----------------------------->>-: position: fixed; #可设置宽和高属性,默认宽高是自己;
    位置偏移属性: **px; #通过位置偏移属性设置固定显示位置的坐标;基准点是浏览器左上角
    位置偏移属性: **px;

    改变盒子的显示优先级----------------->>-: z-index:-10; #显示在下面

    鼠标显示状态------------------------->>-: cursor: pointer; 显示鼠标手,

    cursor: text; 显示鼠标文本;

    cursor: move; 显示鼠标十字;

    点击按钮时不显示按钮边框------------->>-: outline:none;


    类选择器: **写前台基本都用这个
    ----------
    1. 在css引用中创建类选择器---------->>-: .类选择器名字{color:red(颜色的英文)}

    2. 设置对应要被修改的标签----------->>-: 例、<div class="类选择器名字><div>


    ID选择器: **一个ID名在一个页面只能使用一次,一般预留给js配合程序去写页面的效果或者读取数据.
    ----------
    1. 在css引用中创建ID选择器---------->>-: #ID选择器名字{color:red}

    2. 设置对应要被修改的标签----------->>-: <div id="ID选择器名字"><div>


    后代选择器(层级选择器):
    ------------------------
    标签 标签{color: red}


    组选择器(并集选择器):
    ----------------------
    标签,标签,标签,标签...{color:red}


    指定标签选择器:
    ----------------
    标签.类{color:red}


    伪元素选择器:
    --------------
    元素的开头添加内容------------------>>-: 元素::before{content:"内容"}

    元素的结尾添加内容------------------>>-: 元素::after{content:"内容"}


    ===========================================================================================================================================
    二十一. JavaScript
    ===========================================================================================================================================
    1.创建JavaScript运行环境------------>>-: <script> #内联式用
    window.onload = function(){JavaScript代码}
    </script>;

    2.引用js文件------------------------>>-: <script src="相对文件路径"></script>; #外链式用

    3.行内式调用js---------------------->>-: <标签 事件=动作></标签> #必须用户有操作事件时,才会执行,所以此功能用的很少
    事件:
    onclick ------------->>-: 鼠标点击某个对象;
    onmouseover --------->>-: 鼠标被移动到某元素上;
    onmouseout ---------->>-: 鼠标从某元素移开;

    ondblclick ---------->>-: 鼠标双击某个对象;
    onabort ------------->>-: 图像加载被中断;
    onblur -------------->>-: 元素失去焦点;
    onchange ------------>>-: 用户改变域的内容;
    onerror ------------->>-: 当加载文档或图像时发生某个错误;
    onfocus ------------->>-: 元素获得焦点;
    onkeydown ----------->>-: 某个键盘的键被按下;
    onkeypress ---------->>-: 某个键盘的键被按下或按住;
    onkeyup ------------->>-: 某个键盘的键被松开;
    onload -------------->>-: 某个页面或图像被完成加载;
    onmousedown --------->>-: 某个鼠标按键被按下;
    onmousemove --------->>-: 鼠标被移动;
    onmouseup ----------->>-: 某个鼠标按键被松开;
    onreset ------------->>-: 重置按钮被点击;
    onresize ------------>>-: 窗口或框架被调整尺寸;
    onselect ------------>>-: 文本被选定;
    onsubmit ------------>>-: 提交按钮被点击;
    onunload ------------>>-: 用户退出页面;


    4.js入口函数的作用:----------------->>-: 保证先有html和css,再运行js

    5.js入口函数写法-------------------->>-: window.onload = function(){JavaScript代码} #js文件或运行环境中首先加这个

    6.从整个网页文档中通过ID名查找元素-->>-: document.getElementById("id名");

    7.Dom控制id名的css宽度-------------->>-: document.getElementById("id名").style.wigth = "500px";
    #js添加的css都是行内式,所以优先级比较高
    #带横线的键需要把横线去掉,变成驼峰式命名.例如 border-top 变成 borderTop

    8.创建变量-------------------------->>-: var 变量名 = 内容;
    #例、 var oMyp = document.getElementById("myp")
    #变量名通常以变量类型的首字母+id名的驼峰方式来命名

    9.Dom控制html的内容----------------->>-: document.getElementById("id名").innerHTML = "内容"

    10.Dom控制html的属性---------------->>-: document.getElementById("id名").属性 = "内容"
    #属性是什么就写什么,和html中一样.除了class,class应该写成className
    #例、 document.getElementById("id名").href = "http://www.baidu.com"

    11.查看数据类型--------------------->>-: typeof(要被查看的);

    12.自定义函数----------------------->>-: function fn函数名(传参填这里){函数内容填这里}

    13.调用自定义函数------------------->>-: fn函数名();

    14.添加条件判断--------------------->>-: if (条件){条件成立执行的程序}
    else if (条件){条件成立执行的程序}
    else{以上条件都不满足,执行这个}

    15.事件操作------------------------->>-: 事件源.事件类型 = function(){执行代码}

    16.创建网页提示输出弹窗-------------->>-: alert("内容");

    17.js中的与、或、非------------------>>-: ||(与), &&(或), !(非)

    18.数组------------------------------>>-: 用来存储多个数据的容器

    19.创建数组的两种方式---------------->>-: var array_1 = new Array(存储的数据,存储的数据,存储的数据);

    var array_2 = [存储的数据,存储的数据,存储的数据] #[工作中常用]

    20.数组的常用操作方法:

    查看数组内所有数据--------------->>-: alert(数组名);

    通过索引查数据------------------->>-: var 变量 = 数组名[索引];

    统计数组内数据数量--------------->>-: var 变量 = 数组名.length;

    数组分割成字符串----------------->>-: var 变量 = 数组名.join("分割符号");

    在数组结尾追加数据--------------->>-: 数组名.push("内容");

    删除数组中最后一个数据----------->>-: 数组名.pop();

    删除并替换某些数据--------------->>-: 数组名.splice(位置,删除数量,添加谁);

    删除某索引后的所有数据----------->>-: 数组名.splice(位置索引);

    数组反转------------------------->>-: 数组名.reverse();

    查数据第一次出现时的索引--------->>-: 数组名.indexOf(数据);

    21.js的while循环写法----------------->>-: while(循环条件){循环内容};

    22.js的for循环写法------------------->>-: for(初始值;条件;增量){循环内容};

    23.js中字符串的常用操作方法:

    转换成去掉小数的数值------------->>-: parseInt(字符串);

    转换成保留小数的数值------------->>-: parseFloat(字符串);

    以"-"分割成数组------------------>>-: 字符串.split("-");

    切片----------------------------->>-: 字符串.substring(开始索引,结束索引);

    从某索引开始切片----------------->>-: 字符串.substring(开始索引);

    js的字符串反转------------------->>-: 字符串.split("").reverse().join("") #把字符串转为数组,然后反转,然后再转成字符串.

    24.定时器:

    1. 创建空定时器变量---->>-: var oTimer = null;

    单次定时------------>>-: oTimer = setTimeout(执行的(匿名函数/自定义函数名),定时器的延迟时间(毫秒,1000毫秒 = 1秒))

    多次循环定时-------->>-: oTimer = setInterval(执行的(匿名函数/自定义函数名),定时器的延迟时间(毫秒,1000毫秒 = 1秒))

    2. 停止多次循环定时---->>-: clearInterval("oTimer");

    oTimer = null;


    ===========================================================================================================================================
    二十一. jQUery
    ===========================================================================================================================================
    1.导入JQ文件------------------------->>-: <script src = "jq文件路径"></script>;

    2.创建自己的script------------------->>-: <script></script>;

    3.jQ入口函数(完整写法)--------------->>-: $(document).ready(function(){});

    4.jQ入口函数(化简写法)--------------->>-: $(function(){});

    5.选择一个要控制的标签--------------->>-: $("标签/#id名");
    #设置选中标签点击按钮操作-------->>-: $("标签/#id名").click(function(){操作});

    6.jQ的相关操作:

    隐藏选定------------------------->>-: $("标签/#id名").hide(完成时间);

    显示选定------------------------->>-: $("标签/#id名").show(完成时间);

    隐藏和显示综合体----------------->>-: $("标签/#id名").toggle(完成时间);

    鼠标滑过和鼠标离开综合体--------->>-: $("标签/#id名").hover(function(){经过时的代码}, function(){离开时的代码});

    使用jQ控制css属性---------------->>-: 单个控制------>>-: $("标签/#id名").css("键","值");

    多个控制------>>-: $("标签/#id名").css({"键":"值","键":"值"});

    使用jQ访问css属性的值------------>>-: $("标签/#id名").css("键");

    使用jQ控制html内容--------------->>-: $("标签/#id名").html("要改成的内容");

    7.jQ的常用选择器:

    选择第一个li标签----------------->>-: $("li:first").xxx("xxx"); /$("li").first().xxx("xxx");

    选择最后一个li标签--------------->>-: $("li:last").xxx("xxx"); /$("li").last().xxx(xxx);

    选择任意索引位置的li标签--------->>-: $("li").eq(标签所在位置索引).xxx("xxx");

    选择指定标签前面的一个标签------->>-: $("标签").prev().xxx("xxx");

    选择指定标签前面的所有标签------->>-: $("标签").prevAll().xxx("xxx");

    选择指定标签后面的一个标签------->>-: $("标签").next().xxx("xxx");

    选择指定标签后面的所有标签------->>-: $("标签").nextAll().xxx("xxx");

    根据class选择标签---------------->>-: $(".名").nextAll().xxx("xxx");

    根据id选择标签------------------->>-: $("#名").nextAll().xxx("xxx");

    选择排除.box外的所有li标签------->>-: $("li").not(".box").xxx("xxx");

    选择包含某标签的父级标签--------->>-: $("父级标签").has("标签").xxx("xxx");

    选择父级标签中的某标签----------->>-: $("父级标签").find("标签").xxx("xxx");

    选中属性=值得li标签-------------->>-: $("li[class=box]").xxx("xxx");

    选择某标签的父级标签------------->>-: $("标签").parent().xxx("xxx");

    选择自己的父级标签--------------->>-: $(this).parent().xxx("xxx");

    选择自己的子级标签--------------->>-: $(this).children("要选择的子级").xxx("xxx");

    选择自己的同级(兄弟)标签--------->>-: $(this).siblings().xxx("xxx"); #排他思想就是用siblings做的.

    链式编程------------------------->>-: 同标签的连续不同操作,可用链式编程:例:
    $(this).css("xxx").siblings("xxx");

    给某个标签添加类名(class)-------->>-: $("标签").addClass("设置好属性的class名");

    给某个标签删除类名(class)-------->>-: $("标签").removeClass("当前标签的class名(可不填)");

    添加类名和删除类名的综合体------->>-: $("标签").toggleClass("class名");

    查自己的索引值------------------->>-: $("标签").index();

    8.自定义动画函数:

    1.创建自定义动画函数------------->>-: #$("标签").animate(动画过程,完成时间,运动曲线,回调函数);

    $("标签").animate({"width": "200px"},600,"linear",function(){动画完成后执行的内容});

    动画过程制作-->>-: {k:v, k:v} #例如 {"width": "200px","height": "100px"};

    运动曲线制作-->>-: 两个参数: 1.swing; 2.linear #通常用linear

    回调函数------>>-: 指动画完成后要执行的函数.

  • 相关阅读:
    LINQ to XML一些基本查询
    系统二级域名配置说明
    分布式文件系统部署Hadoop【转载】
    5 ways to instantly appear more confident
    hadoop Namenode和DataNode架构分析
    Employee burnout: Around the corner? Already here?
    阿里巴巴分布式服务框架 Dubbo 团队成员梁飞专访
    eclipse web项目 分多个源文件目录
    配置VS2008本地调试.NETFRAMEWORK源代码
    Google搜索指令大全
  • 原文地址:https://www.cnblogs.com/Dreamxin/p/8157341.html
Copyright © 2011-2022 走看看