Python易忽略知识

(1)print 默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""

(2)isinstance 和 type 的区别在于:type()不会认为子类是一种父类类型。isinstance()会认为子类是一种父类类型。这么理解,父类:动物;子类:猫。isinstance()认为猫是动物,type()认为猫就是猫不是动物。

(3)数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。

(4)Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。

(5)迭代器与生成器。

  • 迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter()next()。把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。
class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):x = self.aself.a += 1return xmyclass = MyNumbers()
myiter = iter(myclass)print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
print(next(myiter))
  • 在 Python 中,使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。使用 yield 实现斐波那契数列:
#!/usr/bin/python3import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n): returnyield aa, b = b, a + bcounter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True:try:print (next(f), end=" ")except StopIteration:sys.exit()

(6)列表的栈与队列

(7)将输出的值转成字符串,可以使用 repr() 或 str() 函数来实现。

  • str(): 函数返回一个用户易读的表达形式。
  • repr(): 产生一个解释器易读的表达形式。

(8)类定义了 init() 方法,类的实例化操作会自动调用 init() 方法。类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。与一般函数定义不同,类方法必须包含参数 self, 且为第一个参数,self 代表的是类的实例。self 的名字并不是规定死的,也可以使用 this,但是最好还是按照约定是用 self

(9)**__private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs**。

(10)处理从 urls 接收数据的 urllib.request 以及用于发送电子邮件的 smtplib:

>>> from urllib.request import urlopen
>>> for line in urlopen('http://tycho.usno.navy.mil/cgi-bin/timer.pl'):
...     if 'EST' in line or 'EDT' in line.decode('utf-8'):
...         print(line)>>> import smtplib
>>> server = smtplib.SMTP('localhost')
>>> server.sendmail('soothsayer@example.org', 'jcaesar@example.org',
... """To: jcaesar@example.org
... From: soothsayer@example.org
...
... Beware the Ides of March.
... """)
>>> server.quit()

(11)doctest扫描模块并根据程序中内嵌的文档字符串执行测试。通过用户提供的例子,它强化了文档,允许 doctest 模块确认代码的结果是否与文档一致:

def average(values):return sum(values) / len(values)import doctest
print(doctest.testmod())   # 自动验证嵌入测试

(12)Python实例总结 https://www.runoob.com/python3/python3-examples.html

(13)Python实现查找与排序:https://www.runoob.com/python3/python3-examples.html

(14)re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。flags是否区分大小写。

re.match(pattern, string, flags=0)

(15)re.match与re.search的区别。re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。

(16)Python连接MySQL

import MySQLdb# 显示所有数据库
mydb = MySQLdb.Connect(host='localhost',user='root',passwd='root',database='all_news')
mycursor = mydb.cursor()
mycursor.execute("SHOW DATABASES")
for x in mycursor:print(x)
print("*"*20)# 创建数据表
# mycursor.execute("CREATE TABLE sites (name VARCHAR(255), url VARCHAR(255))")
mycursor.execute("SHOW TABLES")
for x in mycursor:print(x)# 修改表
# mycursor.execute("ALTER TABLE sites ADD COLUMN id INT AUTO_INCREMENT PRIMARY KEY")# 插入数据
# sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
# val = ("RUNOOB", "https://www.runoob.com")
# mycursor.execute(sql, val)
# mydb.commit()    # 数据表内容有更新,必须使用到该语句
# print(mycursor.rowcount, "记录插入成功。")# 批量插入
# sql = "INSERT INTO sites (name, url) VALUES (%s, %s)"
# val = [
#   ('Google', 'https://www.google.com'),
#   ('Github', 'https://www.github.com'),
#   ('Taobao', 'https://www.taobao.com'),
#   ('stackoverflow', 'https://www.stackoverflow.com/')
# ]
# mycursor.executemany(sql, val)
# mydb.commit()    # 数据表内容有更新,必须使用到该语句
# print(mycursor.rowcount, "记录插入成功。")# 查询数据
print("="*20)
mycursor.execute("SELECT * FROM sites")
myresult = mycursor.fetchall()     # fetchall() 获取所有记录
# myresult = mycursor.fetchone() # 读一条数据
for x in myresult:print(x)# 删除数据
# sql = "DELETE FROM sites WHERE name = 'stackoverflow'"
# mycursor.execute(sql)
# mydb.commit()
# print(mycursor.rowcount, " 条记录删除")# 更新数据
sql = "UPDATE sites SET name = 'ZH' WHERE id = 4"
mycursor.execute(sql)
mydb.commit()
print(mycursor.rowcount, " 条记录被修改")# 执行事务
# SQL删除记录语句
sql = "DELETE FROM EMPLOYEE WHERE AGE > %s" % (20)
try:# 执行SQL语句cursor.execute(sql)# 向数据库提交db.commit()
except:# 发生错误时回滚db.rollback()

(17) 格式化日期:

#!/usr/bin/python3
import time
# 格式化成2016-03-20 11:45:39形式
print (time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()))# 格式化成Sat Mar 28 22:24:24 2016形式
print (time.strftime("%a %b %d %H:%M:%S %Y", time.localtime()))

(18)Python操作MongoDB

  • 启动服务
D:\mongodb\bin>mongod --dbpath D:\mongodb\data\db --logpath=D:\mongodb\log\mongo.log --logappend
  • MongoDB
# Python 操作MongoDB
print("*"*50)import pymongomyclient = pymongo.MongoClient("mongodb://localhost:27017/")
mydb = myclient["runoobdb"]
dblist = myclient.list_database_names()
if "runoobdb" in dblist:print("数据库已存在!")# 创建集合
mycol = mydb["sites"]
collist = mydb.list_collection_names()
if "sites" in collist:   # 判断 sites 集合是否存在print("集合已存在!")# 添加数据
mydict = [{ "_id": 1, "name": "RUNOOB", "cn_name": "菜鸟教程"},{ "_id": 2, "name": "Google", "address": "Google 搜索"},{ "_id": 3, "name": "Facebook", "address": "脸书"},{ "_id": 4, "name": "Taobao", "address": "淘宝"},{ "_id": 5, "name": "Zhihu", "address": "知乎"}]
# x = mycol.insert_one(mydict)
# x = mycol.insert_many(mydict)
# print(x.inserted_ids)# 修改数据
myquery = { "alexa": "10000" }
newvalues = { "$set": { "alexa": "12345" } }
mycol.update_one(myquery, newvalues)
# 输出修改后的  "sites"  集合
# for x in mycol.find():
#   print(x)# 查询数据, find() 方法来查询指定字段的数据,将要返回的字段对应值设置为 1。# for x in mycol.find():# print(x)# for x in mycol.find({},{"_id":0}):
#     print(x)# myquery = { "name": "RUNOOB" }
# for x in mycol.find(myquery):
#     print(x)# myresult = mycol.find().limit(3)
# 输出结果
# for x in myresult:
#   print(x)# 删除数据
# myquery = { "name": "知乎" }
# myquery = { "name": {"$regex": "^F"} }# mycol.delete_one(myquery)
# mycol.delete_many(myquery)
# 删除后输出
for x in mycol.find():print(x)# 排序,升序sort("alexa"),降序sort("alexa", -1)
# mydoc = mycol.find().sort("alexa")
# for x in mydoc:
#   print(x)

(19)WSGI 应用和常见的 Web 框架

  • 部署Django
[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191
uwsgi yourfile.ini
  • 部署Flask

创建文件 myflaskapp.py ,代码如下:

from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():return "<span style='color:red'>I am app 1</span>"

执行以下命令:

uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191

转载于:https://www.cnblogs.com/baiboy/p/11014657.html

学习10:Python重要知识相关推荐

  1. python学习手册-Python 重点知识整理(基于Python学习手册第四版)

    字节型编译 如果Python在系统中有写的权限,当程序运行时Python会把源码编译成字节码(与系统环境无关)存在一个.pyc扩展名文件中,如果没有修改源码而重新运行程序时,不会进行编译的步骤而使用字 ...

  2. python基础知识资料-python基础知识整理(值得收藏)

    近些年python语言非常流行,许多开发者都会学习一些python相关知识,本文为大家整理了python的一些基础知识,希望对大家有一定的帮助. 注:下文Python代指Python3. 基本信息和J ...

  3. python的django介绍_【Python基础知识】Django框架简介

    很多初学Python的小伙伴不知道该从何开始学起,其实零基础学习的话可以先学习一些Python基础知识,等基础打牢之后再去接触更加深入的技术,接下来小编就为大家简单介绍一下有关于 Django框架内容 ...

  4. python基础知识-python基础知识整理(值得收藏)

    近些年python语言非常流行,许多开发者都会学习一些python相关知识,本文为大家整理了python的一些基础知识,希望对大家有一定的帮助. 注:下文Python代指Python3. 基本信息和J ...

  5. python难不难学-超级适合新手学习的python教程,入门其实不难?

    在互联网时代很多人都希望掌握一个与互联网相关的知识,比如Python的知识就非常重要,因为无论是操作新媒体平台还是去制作一些软件,我们都需要掌握一些Python的技巧,而且学习一些Python的知识, ...

  6. python入门知识总结,整合类资源

    随着人工智能.大数据的时代到来,学习Python的必要性已经显得不言而喻. 只要接触一点编程的同学就知道,我一点也没有言过其实.对于学习Python的重要性,这里不再赘述.今天整理的教程,是给零基础的 ...

  7. 更完整更系统的python入门知识总结分享

    随着人工智能.大数据的时代到来,学习Python的必要性已经显得不言而喻. 只要接触一点编程的同学就知道,我一点也没有言过其实.对于学习Python的重要性,这里不再赘述.今天整理的教程,是给零基础的 ...

  8. python开发需要掌握哪些知识-人工智能需要学习哪些专业课程知识?

    原标题:人工智能需要学习哪些专业课程知识? 谈到人工智能,相信大家已经不陌生了,人工智能技术在近两年已经火得人尽皆知,跟互联网技术火的时候一样,那时行业和产品只要跟互联网相结合,就能在这个风口分得一杯 ...

  9. python语言的单行注释以井号开头_推荐|零基础学习Python基础知识

    原标题:推荐|零基础学习Python基础知识 Python是一种面向对象.解释型计算机程序设计语言.语法简洁清晰,强制用空白符作为语句缩进. Python具有丰富和强大的库,又被称为胶水语言.能把其他 ...

  10. Python基础知识学习笔记——Matplotlib绘图

    Python基础知识学习笔记--Matplotlib绘图 整理python笔记,以防忘记 文章目录 Python基础知识学习笔记--Matplotlib绘图 一.绘图和可视化 1.导入模块 2.一个简 ...

最新文章

  1. Twiiter,下一个热点
  2. gulp几个常见问题及解决方案
  3. 全面解析java注解
  4. 兰州大学第一届 飞马杯 ★★快乐苹果树★★ 树链剖分 + 懒标记 + 树状数组
  5. Qt工作笔记-QHash与QMap查找速度粗略比较实战
  6. HDU1253 胜利大逃亡
  7. IDL| 数据分割读取
  8. Http协议简易分析
  9. 马来西亚于4月1日重新开放边境
  10. 怎么创建账户Crowd 和 JIRA、Confluence、Fisheye and Crucible、GitLab共享账户已经集成登入
  11. 制作一个谷歌浏览器插件,实现网页数据爬虫
  12. 如何UNI-APP中使用iconfont彩色图标
  13. 软件测试学习 之 Python 类属性 实例属性、实例方法 类方法 静态方法
  14. 元宇宙漫游指南-区块链构建元宇宙基础设施,一文搞清楚元宇宙和区块链
  15. 使用C#开发了一个RPG角色扮演类的小游戏^_^
  16. Ansible Ad—hoc 模式常用模块
  17. 2021-02-03 字符串上的小练习题
  18. fedora17下nvidia双显卡闭源驱动的安装
  19. 西安电子科技大学数据结构考点大纲解析
  20. python机器学习之决策树(decision tree)

热门文章

  1. elementui from表单提交_elementui upload与form一起提交
  2. 青岛计算机类职业中学,青岛最好的职业学校有哪些?
  3. 千年鸿蒙 盼尔来兮是什么意思,鸿蒙是什么意思_鸿蒙的意思和出处_我爱历史网...
  4. 服务器换账号登陆不了怎么办,怎么切换账号 更换账号 注册新的账号小技巧分享给你...
  5. Bash中执行存储过程或普通的SQL命令
  6. [react] react中的setState和replaceState的区别是什么?
  7. [react] 在React中声明组件时组件名的第一个字母必须是大写吗?为什么?
  8. [html] html的哪个标签可以预渲染?
  9. 工作388-jq返回实例
  10. 前端学习(2851):简单秒杀系统学习之相对定位