目录

  • 一、基础教程

    • 2.1 基本知识点
    • 2.2 重要知识点
  • 二、高级教程
    • 2.1 网络编程:
    • 2.2 多线程:
    • 2.3 python3 MySQL编程:
    • 2.4 python调用C语言

一、基础教程

2.1 基本知识点

  • python默认的编码格式是ASCII格式;需要使用# -*- coding: UTF-8才能读取中文。

  • python能进行交互式编程,脚本式编程。

  • python标识符由字母、数字、下划线组成。

    • 以单划线开头_foo表示不能直接访问的类属性,需要通过类提供的接口进行访问,不能用from xxx import *而导入。

    • 以双下划线开头的 __foo 代表类的私有成员。

    • 以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。

  • python中所有代码块语句必须严格包含相同的缩进空白数量。

  • python3中有6个标准的数据类型:数字Number,字符串String,列表List,元组Tuple,集合Set,字典Dictionary。

    • 其中不可变数据3个:数字Number,字符串String,元组Tuple。

    • 可变数据3个:列表List,字典Dictionary,集合Set。

  • python3中数字Number有四种类型:整数int,布尔型bool,浮点数float,复数complex(1+2j)。

  • python中的循环语句有for和while,没有do...while。

  • python中pass语句是空语句,是为了保持程序结构的完整性。pass不做任何事情,一般用做占位语句。

2.2 重要知识点

---------first---------

  • 迭代器:方法iter()next()迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会退后。把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。StopIteration 异常用于标识迭代的完成.

  • 生成器(generator):使用了yield的函数被称为生成器。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。调用一个生成器函数,返回的是一个迭代器。

  • 函数:能提高应用的模块性,和代码的重复利用率。def area(width, height):

  • 在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。例如a=5后再令a=10,实际上是新生成了一个int值对象,再让a指向它,而5被丢弃。而la=[1,2,3,4]后再赋值la[2]=5,则是剪list la的第三个元素值更改,本身la对象没有动,只是其内部的一部分值被修改了。

  • 参数传递:

    • 不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

    • 可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响。

  • python的作用域:

    • 局部作用域L:Local

    • 闭包函数外的函数中E:Enclosing

    • 全局作用域G:Global

    • 内置作用域B:Built-in

变量查找的规则是L->E->G->B;即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,再者去内置中找。

  • 当内部作用域想修改外部作用域的变量时,就要用到global和nonlocal关键字了。

-------second-------

  • python的数据结构:

    1. 列表[,]:可变,列表推导式[3*x for x in [2,4,6] ]提供了从序列创建列表的简单途径,列表嵌套。

      • 列表作为堆栈使用:后进先出。append()方法可以把一个元素添加到堆栈顶。用不指定索引的pop()方法可以把一个元素从堆栈顶释放出来。

      • 列表作为队列使用:先入先出,效率不高。from collections import deque,然后append()方法加入队列,popleft()方法弹出队列。

    2. 元组(,):由若干个逗号分隔的值组成。

    3. 集合{,}:是一个无序不重复元素的集。

    4. 字典{}:可以看成无序的键=>值对集合。字典以关键字为索引,关键字可以是任意不可变类型,通常用字符串或数值。

  • 模块:是一个包含所有你定义的函数和变量的文件,其后缀名是.py。其可以被别的程序引入,以使用该模块中的函数等功能。

  • import语句:当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。搜索路径是一个解释器会先进行搜索的所有目录的列表。

  • __name__属性:由于一个模块被另一个程序第一次引用时,其主程序将运行。如果想在模块被引入时,模块中的某一程序块不执行。我们可以使用__name__属性来使该程序仅在该模块自身运行时执行。例如


if __name__ == '__main__':print('程序自身在运行')else:print(‘我来自另一模块’)
  • 标准模块:直接被构建在解析器中,直接import导入即可。例如:import sys

  • 包:是一种管理python模块命名空间的形式,采用“点模块名称”。例如,一个模块的名称是A.B,那么他表示一个包A中的子模块。在导入一个包的时候,Python 会根据 sys.path 中的目录来寻找这个包中包含的子目录。目录只有包含一个叫做 init.py 的文件才会被认作是一个包。用户可以每次只导入一个包里面的特定模块,例如:import sklean.model_selection,其下必须有一个__init__.py函数。

  • 从一个包中导入*,即Python 会进入文件系统,找到这个包里面所有的子模块。

二、高级教程

2.1 网络编程:

  • python提供了两个级别访问的网络服务:

    • 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法。

    • 高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。

  • Socket:又称套接字,应用程序通常通过“套接字”向网络发出请求或者应答网络请求,使主机或者一台计算机上的进程间可以通讯。socket实现进程间通信。python中语法如下:

socket.socket([family[, type[, proto]]])

- family:套接字家族可以使AF_UNIX或者AF_INET- type:套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM或SOCK_DGRAM- protocol:协议一般默认为0.

例如:socket.socket([AF_UNIX[, SOCK_STREAM[, 0]]])

(1)服务器:文件名——server.py

  • 服务端套接字:

    s.bind()绑定地址。s.listen(5)开始TCP监听,最大连接数为5。s.accept()被动接受TCP客户端连接,等待连接的到来。


#!/usr/bin/python3import socketimport sys#(1)创建socket对象serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#(2)获取本地主机名host = socket.gethostname()#(3)设置端口号port = 9999#(4)绑定端口号serversocket.bind((host, port))#(5)设置最大连接数,超过后排队serversocket.listen(5)while True:# 建立客户端连接clientsocket, addr = serversocket.accept()print("连接地址:%s" % str(addr))message = "欢迎访问博客!" + "\r\n"clientsocket.send(message.encode('utf-8'))clientsocket.close()

(2)客户端:文件名——client.py

  • 客户端套接字:

    s.connect()主动初始化TCP服务器连接,返回的address一般是元组(hostname,port)。s.connect_ex()是connect的扩展版本,出错时返回出错码,而不是抛出异常。


#!/usr/bin/python3import socketimport sys#(1)创建socket对象s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#(2)获取本地主机名host = socket.gethostname()#(3)设置端口号port = 9999#(4)连接服务,指定主机和端口s.connect((host, port))#(5)接收小于1024字节的数据message = s.recv(1024)s.close()print(message.decode('utf-8'))
  • 公共用途的套接字:

    s.recv()接收TCP数据,数据以字符串形式返回。s.send()发送TCP数据,将string中的数据发送到连接的套接字。s.close()关闭套接字。

代码:socket编程

  • python Internet模块:

协议 功能用处 端口号 Python 模块
HTTP 网页访问 80 httplib, urllib, xmlrpclib
NNTP 阅读和张贴新闻文章,俗称为"帖子" 119 nntplib
FTP 文件传输 20 ftplib, urllib
SMTP 发送邮件 25 smtplib
POP3 接收邮件 110 poplib
IMAP4 获取邮件 143 imaplib
Telnet 命令行 23 telnetlib
Gopher 信息查找 70 gopherlib, urllib

2.2 多线程:

  • 多线程类似于同时执行多个不同程序,多线程运行优点:

    • 使用线程可以把占据长时间的程序中的任务放到后台去处理。

    • 程序的运行速度可能加快。

2.3 python3 MySQL编程:

  • pyhon可以使用mysql-connector来连接使用MySQL,mysql-connector是MySQL官方提供的驱动器。

(1)创建数据库连接


import mysql.connectormydb = mysql.connector.connect(host="localhost", # 数据库主机地址user="yourusername", # 数据库用户名passwd="yourpassword" # 数据库密码)print(mydb)

(2)创建数据库


mycursor = mydb.cursor() mycursor.execute("CREATE DATABASE runoob_db")

(3)创建数据表


mycursor = mydb.cursor() mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")

(4)主键设置


mycursor = mydb.cursor() mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")

(5)插入数据


mycursor = mydb.cursor() sql = "INSERT INTO sites (name, url) VALUES (%s, %s)" val = ("RUNOOB", "https://www.runoob.com") mycursor.execute(sql, val)mydb.commit() # 数据表内容有更新,必须使用到该语句print(mycursor.rowcount, "记录插入成功。")
  • select语句:查询数据使用SELECT语句;

  • where语句:读取指定条件的数据,可以使用where语句;

  • 排序:查询结果排序可以使用 ORDER BY 语句,默认的排序方式为升序,关键字为 ASC,如果要设置降序排序,可以设置关键字 DESC。

  • delete删除记录:删除记录使用“DELETE FROM”语句。

  • update语句:数据表更新使用“UPDATE”语句。

  • drop删除表:删除表使用“DROP TABLE”语句。

2.4 python调用C语言

  • python中的ctypes模块提供了和C语言兼容的数据类型和函数来加载dll文件,因此调用时不需对源文件做任何修改。流程如下:

    1. 首先将C代码编译成动态.so文件(windows下为dll文件);

    2. 然后导入ctypes库from ctypes import *

    3. 最后在python中直接调用adder = CDLL('./adder.so'),并且可以用adder对象调用动态文件中的函数。

这个过程中,C文件是自解释的,python通过导入模块加载库文件,在函数调用时,python内部会对C函数进行调用。

参考:

  1. 菜鸟教程:http://www.runoob.com/python3/python3-socket.html
  2. 官方文档:https://docs.python.org/3.0/library/socket.html

转载于:https://www.cnblogs.com/hugechuanqi/p/10540743.html

《菜鸟教程》之基础教程相关推荐

  1. [转载]VBS入门教程 VBS基础教程

    [转载]VBS入门教程 VBS基础教程(收藏) VBS基础教程 VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. Microsoft Visual Basic是微软公司 ...

  2. 全国电子商务人才专业化从业认证考试初级教程(公共基础教程)(全国电子商务人才丛业能力教育指定教材)

    书名:<全国电子商务人才专业化从业认证考试初级教程(公共基础教程)>(全国电子商务人才丛业能力教育指定教材) 作者:单兴华 组编:全国电子商务人才从业能力教育项目管理办公室 出版社:中国人 ...

  3. 14-(基础入门篇)关于系统教程和基础教程后期规划

    https://www.cnblogs.com/yangfengwu/p/9966901.html 系统教程:现在的系统教程已经写完源码,还没配教程,现在买只能给源码哈 系统教程初步要做到的就是12节 ...

  4. 黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三)

    黑马程序员全套Java教程_Java基础教程_异常(含扩展)(二十三) 1.1 异常概述与异常体系结构 1.2 JVM遇到异常时的默认处理方案 1.3 异常处理 1.4 异常处理之try--catch ...

  5. html5语言基础教程,HTML5基础教程,从入门到精通,零基础学HTML5

    随着互联网的快速发展,对前端开发方面的人才需求越来越大,其中Web前端领域的HTML5也受到许多人追捧 HTML5是构建Web内容的一种语言描述方式.HTML5是互联网的下一代标准,是构建以及呈现互联 ...

  6. python语言教程-Python 基础教程

    Python基础教程 Python是一种解释型.面向对象.动态数据类型的高级程序设计语言. Python由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年. 像Pe ...

  7. sql基础教程mysql_SQL基础教程(第2版)笔记整理

    花了一段时间把SQL基础教程(第2版)看完,并把笔记整理好. 数据定义语言(Data Define Language) 数据操作语言(Data Manipulation Language) 数据控制语 ...

  8. javascript基础教程_JavaScript基础教程(九)对象、类的定义与使用

    对象.类的定义与使用 对象与类是面向对象程序设计语言教学过程中不可避免需要讲解的内容之一.很多人将两者混为一谈,简单认为对象就是类,类就是对象.实际上深入分析的话,对象与类的区别还是较为明显的.本文主 ...

  9. python2.7教程 pdf_PYTHON基础教程至60课(2.7版本)整理

    python 基础教程至 60 课整理 2014 年 7 月 10 日:(整理前几天内容) 1. 疑惑: a. for score in data [1:]: 解答:将 score 一一赋 data ...

  10. python教程pdf-python基础教程[高清][中文第2版].pdf

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython python基础教程[高清][中文第2版].pdf ...

最新文章

  1. 用 Hystrix 构建高可用服务架构
  2. excel 科学计数法转换成文本完整显示_避免万次暴击,巧办法解决数字和文本之间的快速转化...
  3. java 常用的api_Java中常用的API(一)——Object
  4. 【C++11新特性】 - 空间配置allocator类
  5. access denied for_abm怎么样?ACCESS集团携8大国际品牌在进博会首秀,展示abmr 硬核实力!...
  6. spring mvc mysql 实例_Spring+Mybatis+SpringMVC+Maven+MySql搭建实例
  7. 有的朋友问我创业没有资金怎么办?
  8. fedora下java环境配置
  9. Spring初学快速入门
  10. ofo容器pass架构分享
  11. url传值的长度限制解决方法
  12. java自行车销售系统_基于 javaee 自行车租赁系统,源码分享
  13. 测试手机软件打开速度的app,16个软件打开速度测试 iPhoneXS怒胜三星Note9
  14. mir2的db数据库
  15. touch: cannot touch ‘***’: Read-only file system
  16. Goolge全球各国域名大全
  17. 2021年最新ABAQUS复合材料建模仿真与应用专题培训
  18. 企业级别应用--GFS分布式文件系统(GlusterFS工作原理、弹性 HASH 算法 、GlusterFS卷的类型、 部署GlusterFS)
  19. EBC动作片 记录EBC 的 景 和 人
  20. 面试必考之Java基础数据类型

热门文章

  1. ride.py在运行python3.×版本后导致无法运行及解决办法
  2. js获取最新的省市区地址
  3. socketTCP协程文件+信息传递 - TCP聊天文件服务器v1.9 - 划时代的版本更新(4.6万字)
  4. 吉他弹唱精通——运用空弦音的分解和弦
  5. 足球类游戏球场风云前端项目代码
  6. 高铁的速度 华为的服务
  7. TCP粘包问题以及解决方法
  8. 2014年6月份第4周51Aspx源码发布详情
  9. 自制密码生成器1.0
  10. 树模型(六):XGBoost