IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python3基础,这篇就够了(总结版) -> 正文阅读

[Python知识库]Python3基础,这篇就够了(总结版)

目录

1、基础语法和基本数据类型.py

2、python中的运算符和类型详解

3、逻辑控制循环遍历自定义函数

4、堆栈、队列、元素操作

5、模块和包

6、输入和输出、序列化和反序列化、文件读写操作

7、异常处理

8、面向对象

9、作用域和常用模块

10、正则表达式、CGI、Mysql操作

??????????????????11、网络编程、发送邮件、多线程

12、xml解析、json解析、日期和时间、urllib库


1、基础语法和基本数据类型.py

? ? ?详细看这里

????????变量:变量名第一个字符必须为字母或者下划线,变量对大小写敏感,python中的保留字 不能作为变量名使用:

? ? ? ? 不通过的变量名:

????????

1c = 3
!1 = 1
*2 = 1


# 查看python中的保留字
print(keyword.kwlist)

单行注释:

? ? ? ? 在代码前加#

多行注释:

? ? ? ? 三个单引号或者三个双引号包住的

????????

'''
多行注释
'''
"""
多行注释
"""

pd = True

"""

其他:

# 键盘输入
input("请输入:")

# 多个变量赋值:
a = b = c = 1

2、python中的运算符和类型详解

详细看这里

算数运算符:

# 算数运算符 + - * / %  ** //
# 2**3 为2的3次方 = 2*2*2

a = 2
b = 3
print(a ** b)

# //为除,不同的是返回的结果为整数

print(b // a)



比较运算符


== != > < >= <=

# 是否等于
print(a == b)

#是否不等于
print(a != b)

#是否大于
print(a > b)

#是否小于
print(a < b)

#是否大于等于
print(a >= b)

成员运算符

in 包含 not in 不包含
print("Python成员运算符-----------------")
list = [1, 2, 3, 4, 5]
print(1 in list)
print(9 in list)
print(9 not in list)


Python身份运算符
# is 同一个对象    is not  不同对象
print("Python身份运算符-----------------")
list2 = [5, 4, 3, 2, 1]
print(list is list2)
print(list is not list2)


Python3 数字(Number)

"""
刚开始入门可能用不到,可以跳过
但是:需要掌握一些比较常用的,比如说:
abs()绝对值
max(v1,v2,v3)最大值
min(v1,v2,v3)最小值
random() 随机数

"""

转义字符

# 转义符 \
print('单引号', '\'')
print('双引号', '\"')
print('响铃', '\a')
print('退格(Backspace)', '\b')
print('空', '\000')
print('换行', '\n')
print('纵向制表符', '\v')
print('横向制表符', '\t')
print('回车', '\r')
print('换页', '\f')

3、逻辑控制循环遍历自定义函数

详细看这里

逻辑控制


if  else if else
'''
print("\n\n----逻辑控制-----------------------------------")

# 分别为:春(3、4、5月),夏(6、7、8月),秋(9、10、11月),冬(12、1、2月)

# 月份
month = 0
if month > 2 and month < 6:
    print('春天')
elif month < 9 and month > 5:
    print('夏天')
elif month > 8 and month < 12:
    print('秋天')
elif month < 13:
    print('冬天')
else:
    print('未知天气')

循环


# 说10次我爱你

# while执行完成后,就会执行else中的语句
i = 0
while i < 10:
    i += 1
    print('我爱你,', '这是我第', i, '次说了!')
else:
    print('我已经说完了,该你了。')

面向对象:

封装、继承、抽象、重载、重写等等;

4、堆栈、队列、元素操作

详情看这里

列表:

列表是通常意义中的数组,也就是顺序存取元素的结果集

queue_list = [1, 2, 3, 4, 5]
print(derivation_list)

set集合:

元素不可重复,与列表无其他区别

zoo = {'老虎'}
zoo.add('狮子')
zoo.add('大象')
zoo.add('长颈鹿')
zoo.add('狮子')
print(zoo)

字典

key,value像是,一个key对应一个value

map = {'name': 'shp', 'age': 18}
print('姓名:', map['name'], ',年龄:', map['age'])

5、模块和包

详情看这里

# import 语句 可用于导入源文件,例如导入自己的工具类
# 也可以导入源文件并给这个文件命名
# 导入Common.py文件的common类,带哦用common类的方法


from com.shp.dev.utils.Common import common

common.forEach([1, 2, 3, 4])


# 直接导入Common文件的println方法,然后执行调用
from com.shp.dev.utils.Common import println

6、输入和输出、序列化和反序列化、文件读写操作

详细看这里

输入和输出



#输出:
s = '啦啦啦啦啦'
print(s)


list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for l in list:
    print('{0:10} ===> {1:10d}'.format(l, l))


#输入
str = input("请输入:");
print("你输入的内容是: ", str)

文件读写


# 输出文本到本地
f = open('hello.txt', 'w')  # 打开文件
f.write("是的\n我也更加相信自己了。")  # 输出的内容
f.close()  # 关闭流

# 打开一个文件
f = open("hello.txt", "r")
str = f.read()
f.close()  # 关闭流
print(str)

# 序列化并输出
pickle.dump(list, output)
output.close()

import pprint

# 读取文件
output = open('data.pkl', 'rb')
# 反序列化
data1 = pickle.load(output)
pprint.pprint(data1)
output.close()

文件操作


f = open("hello.txt", "w")
f.write('我是write输出的')  # 输出
f.writelines('输出行\n我是writelines输出的')
f.flush()  # 刷新缓冲
f.close()  # 关闭流

import os, sys

# 第一个参数为路径,第二个参数为权限
#创建单个目录
os.mkdir('/tmp/')
# 创建多层目录目录
os.makedirs('/tmp/text/', 0o777)

7、异常处理

try/except ?相当于Java中的try/cach
try中是可能会发生异常的代码,except后接的是可能会发生的异常类型,except是发生异常后执行的代码
except 后接else 如果异常没有捕获到会执行else中的代码 ,后接finally 是否有异常都会执行,通常关闭流等操作使用
raise 触发异常 类似java中的throw 手动抛出异常

详细看这里

try:
    x = int(input("请输入一个数字: "))
except ValueError:
    print("您输入的不是数字,请再次尝试输入!")

import sys

try:
    f = open('hello.txt')
    s = f.readline()
    i = int(s.strip())
    list = [1]
    print(list[0])  # 造成角标越界异常
except OSError as err:  # io异常
    print("OS error: {0}".format(err))
except ValueError:  # 值错误异常
    print("Could not convert data to an integer.")
except:  # 其他异常
    print("Unexpected error:", sys.exc_info()[0])
    raise

8、面向对象

详细看这里

class c():
    i = 1

    # 类中的方法  self为方法的参数
    def f(self):
        return 'hello world'

    # 构造方法 __init__() 和java对比,有些不太习惯,在类被实例化之后会调用
    def __init__(self):
        print('调用了构造方法')

    def prt(self):
        print(self)
        print(self.__class__)

继承

class people(parent):

    # 需要调用父类的构造方法
    def __init__(self):
        # 调用父类的构函
        parent.__init__(self)

    # 覆写父类的方法
    def speak(self):
        print('获取到父母的给你筹备的:', self.money, '自己再攒钱买辆车')
        try:
            print('获取父母的知识', self.__know)
        except:
            print('服务的知识是获取不到的')


s = people()
s.speak()

9、作用域和常用模块

详细看这里

作用域
最外层的变量是全局变量,修改全局变量需要使用global关键字声明
修改上级作用域的变量需要使用nonlocal关键字

python的作用域真的太奇葩了,从java过来的人觉得,
在java的作用域所有的方法都可以改变和读取全局变量,并不需要加关键字来修改,
不过写法不能方法里写方法,方法中调用方法是可以的。
python既然可以这么写,在改变其他作用域的变量的时候就得加关键字了。
?

# 全局变量
var1 = 5


def some_func():
    # 局部变量
    var2 = 6

    def some_inner_func():
        # var3 内嵌的局部变量
        var3 = 7

10、正则表达式、CGI、Mysql操作

详细看这里

正则表达式

# re.match函数 匹配开头为某字符串,如果有则返回坐标,如果没有则返回None
import re

print(re.match('www', 'www.runoob.com').span())  # 在起始位置匹配
print(re.match('com', 'www.runoob.com'))  # 不在起始位置匹配

cgi编程

# 进入此文件的目录,执行python -m http.server --cgi 8080
# 然后访问 http://localhost:8080/该文件的文件名
print("Content-type:text/html")
print()  # 空行,告诉服务器结束头部
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print('</head>')
print('<body>')
print('<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>')
print('</body>')
print('</html>')
print("Content-type:text/html")
print()  # 空行,告诉服务器结束头部
print('<html>')
print('<head>')
print('<meta charset="utf-8">')
print('<title>Hello Word - 我的第一个 CGI 程序!</title>')
print('</head>')
print('<body>')
print('<h2>Hello Word! 我是来自菜鸟教程的第一CGI程序</h2>')
print('</body>')
print('</html>')

python mysql

# 安装mysql的驱动
# python -m pip install mysql-connector
import mysql.connector

print(' ----安装mysql的驱动--------------------')
# 创建数据库连接
mydb = mysql.connector.connect(
    host="192.168.0.102",  # 数据库主机地址
    user="root",  # 数据库用户名
    passwd="@aA123456",  # 数据库密码
    database="runoob_db",  # 执行数据库
    buffered=True  # 创建buffered游标,设置buffered 参数为"True"
)

# 连接mysql
mycursor = mydb.cursor()

pd = True
# 查看所有库
mycursor.execute("SHOW DATABASES")
for x in mycursor:
    if x[0] == 'runoob_db': pd = False

11、网络编程、发送邮件、多线程

详细看这里

发送邮件

import smtplib
from email.mime.text import MIMEText
from email.header import Header
from email.mime.multipart import MIMEMultipart

from_addr = '3511647118@qq.com'  # 邮件发送账号
to_addrs = '2948299576@qq.com'  # 接收邮件账号
qqCode = 'flmdhazaiguqchhb'  # 授权码(这个要填自己获取到的)
smtp_server = 'smtp.qq.com'  # 固定写死
smtp_port = 465  # 固定端口

# 配置服务器
stmp = smtplib.SMTP_SSL(smtp_server, smtp_port)
stmp.login(from_addr, qqCode)

# 组装发送内容
# 如果发送html内容使用: message = MIMEText(mail_msg, 'html', 'utf-8')
message = MIMEText('我是发送的内容', 'plain', 'utf-8')  # 发送的内容
message['From'] = Header("Python邮件预警系统", 'utf-8')  # 发件人
message['To'] = Header("管理员", 'utf-8')  # 收件人
subject = 'Python SMTP 邮件测试'
message['Subject'] = Header(subject, 'utf-8')  # 邮件标题

# 发送邮件,由于测试多线程,防止过多邮件发送先注释掉
# try:
#     stmp.sendmail(from_addr, to_addrs, message.as_string())
# except Exception as e:
#     print('邮件发送失败--' + str(e))
# print('邮件发送成功')

多线程

import time
import threading

exitFlag = 0

print('--多线程争抢资源----------------')


class myThread(threading.Thread):
    def __init__(self, threadID, name, counter):
        threading.Thread.__init__(self)
        self.threadID = threadID
        self.name = name
        self.counter = counter

    def run(self):
        print("开始线程:" + self.name)
        print_time(self.name, self.counter, 5)
        print("退出线程:" + self.name)


def print_time(threadName, delay, counter):
    while counter:
        if exitFlag:
            threadName.exit()
        time.sleep(delay)
        print("%s: %s" % (threadName, time.ctime(time.time())))
        counter -= 1


# 创建新线程
thread1 = myThread(1, "Thread-1", 1)
thread2 = myThread(2, "Thread-2", 2)

# 开启新线程
thread1.start()
thread2.start()
thread1.join()
thread2.join()
print("退出主线程")

12、xml解析、json解析、日期和时间、urllib库

详细看这里

xml解析

import xml.sax

print('-----sex解析---------------')


class MovieHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.CurrentData = ""
        self.type = ""
        self.format = ""
        self.year = ""
        self.rating = ""
        self.stars = ""
        self.description = ""

    # 元素开始调用
    def startElement(self, tag, attributes):
        self.CurrentData = tag
        if tag == "movie":
            print("*****Movie*****")
            title = attributes["title"]
            print("Title:", title)

    # 元素结束调用
    def endElement(self, tag):
        if self.CurrentData == "type":
            print("Type:", self.type)
        elif self.CurrentData == "format":
            print("Format:", self.format)
        elif self.CurrentData == "year":
            print("Year:", self.year)
        elif self.CurrentData == "rating":
            print("Rating:", self.rating)
        elif self.CurrentData == "stars":
            print("Stars:", self.stars)
        elif self.CurrentData == "description":
            print("Description:", self.description)
        self.CurrentData = ""

    # 读取字符时调用
    def characters(self, content):
        if self.CurrentData == "type":
            self.type = content
        elif self.CurrentData == "format":
            self.format = content
        elif self.CurrentData == "year":
            self.year = content
        elif self.CurrentData == "rating":
            self.rating = content
        elif self.CurrentData == "stars":
            self.stars = content
        elif self.CurrentData == "description":
            self.description = content


if (__name__ == "__main__"):
    # 创建一个 XMLReader
    parser = xml.sax.make_parser()
    # 关闭命名空间
    parser.setFeature(xml.sax.handler.feature_namespaces, 0)

    # 重写 ContextHandler
    Handler = MovieHandler()
    parser.setContentHandler(Handler)

    parser.parse("movies.xml")

json解析

import json

print('-----json解析---------------')

data = {
    'no': 1,
    'name': 'Runoob',
    'url': 'http://www.runoob.com'
}

json_str = json.dumps(data)
print("Python 原始数据:", repr(data))
print("JSON 对象:", json_str)

# 将 JSON 对象转换为 Python 字典
data2 = json.loads(json_str)
print("data2['name']: ", data2['name'])
print("data2['url']: ", data2['url'])

urllib库

from urllib.request import urlopen, quote, unquote, Request

myURL = urlopen("https://www.runoob.com/")

# 设置读取长度
print(myURL.read(300))
# 读取一行
print(myURL.readline())
# 读取全部
print(myURL.read())

try:
    myURL1 = urlopen("https://www.runoob.com/")
    print(myURL1.getcode())  # 200
    # urlopen("https://www.runoob.com/no.html")
except urlopen.error.HTTPError as e:
    if e.code == 404:
        print(404)  # 404

# 读取网址内容,写到本地
print('------读取网址内容,写到本地--------------------------')
myURL = urlopen("https://www.runoob.com/")
f = open("runoob_urllib_test.html", "wb")
content = myURL.read()  # 读取网页内容
f.write(content)
f.close()

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:03:18  更:2021-08-20 15:04:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 12:35:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计