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知识库 -> Python 学习 01 —— Python基础 -> 正文阅读

[Python知识库]Python 学习 01 —— Python基础


系列文章

Python 学习 01 —— Python基础
Python 第三方库 —— urllib 学习
Python 第三方库 —— BeautifulSoup4学习
Python 学习 02 —— Python爬虫


一、Python基础

1、简单介绍

  1. Python 是一门解释型、面向对象的高级编程语言。(解释型:运行前无需生成中间代码,面向对象:封装、继承、多动态)

  2. Python的设计混合了传统语言的软件工程的特点和脚本语言的易用性,具有如下特性:

    • 开源、易于维护

    • 可移植

    • 易于使用、简单优雅

    • 广泛的标准库、功能强大

    • 可扩展 、可嵌入(在单片机上也可以用Python)

  3. Python缺点:

    • 运行速度慢:由于Python是解释型语言,运行时翻译为机械码非常耗时,但像C语言是运行前直接编译成CPU能执行的机械码。不过大量应用程序并不需要这么快的运行速度,因为用户一般也感觉不出性能差别。(企业针对大型项目有性能需求)
    • 代码无法加密:由于解释型语言发布程序就是发布源代码,其他用户可以直接看到,而像C语言这种编译型语言是把编译后的机械码发出去,机械码无法反推出源码。
  4. Python应用:

image-20210701092444880

image-20210701092410008

2、环境搭建

Python环境比较简单,无论是Mac还是Windows都直接去官网下载最新版安装就行,然后再装一个IDE(通常是PyCharm)

  • python官网:www.python.org , Windows安装,记得勾选下面选项。

    image-20210701094044837

    安装完成后,在命令行下输入python,看是否能成功运行。

    image-20210701102755820

    如果不能,可能是环境变量问题,去检查系统变量PATH里是否包括下面两个变量。

    image-20210701101533656

    如果环境变量正确,输入命令行python却打开了Windows应用商店,则删除下面PATH的变量(环境变量是从上到下的优先级,把Python的路径调到商店前面也可以)

    image-20210701102511056

    在MacBook上,运行是输入 python3,因为MacBook自带了python2,所以我们输入python是默认使用的2.0。

  • Pycharm官网:https://www.jetbrains.com/zh-cn/pycharm/

    安装时下面的全部勾选。

    image-20210701095856069

    进入PyCharm创建新项目,这里选第一个,用于创建纯Python的项目。

    image-20210701143512897

    进入后建议先进行一些常规设置,例如代码的字体、项目格式模板。(Windows快捷键:Ctrl+Alt+S,Mac快捷键:command+,)

    image-20210701143917078

image-20210701144108283

3、基本知识

注释

# 单行注释

'''
多行注释
'''

变量

  • 变量可以是任意的数据类型(浮点数、整型、字符串……)
  • 变量名不能以数字开头,可以是字母、数字、下划线的组合
  • 给变量赋值:例如a="abc",此时Python解释器做了两件事,在内存中创建了“abc"的字符串,然后又在内存中创建了名为a的变量,并让变量a指向”abc“。

输出

# 普通输出
print("这是一个普通输出")

# 格式化输出 %s 字符串占位符,%d整型占位符,
a = 123
b = "这是格式化输出"
print("这是格式化输出%d" % a)  # 一个占位符
print("%s,%d" % (b, a))  # 多个占位符

# 如果直接用逗号隔开
print("aaa", "bbb", "ccc")
# 设置分隔符
print("www", "baidu", "com", sep=".")
# 设置结束符
print("hello", end="")  # 设置结束符为空,默认是换行
print("world", end="\t")  # 设置结束符为TAB
print("python", end="\n")  # 设置结束符为换行
print("end")

image-20210701153258161

输入

使用input()方法来获取输入,需要注意的是这种方式获取到的都是字符串类型。

#  输入
password = input("请输入密码:")
print("您输入的密码是:", password)

# 查看变量类型
print(type(password))

# 强制转换
b = int(password)
print("b的类型:", type(b))

image-20210701155438363

引入库

在Python中使用importfrom xx import导入相应模块。

  • import是导入整个模块。
  • from aa import bb是从aa模块中导入bb函数。
  • from aa import bb, cc是从aa模块导入bb、cc函数。
  • from aa import \*是从aa模块导入全部函数。
import random  # 导入随机库
x = random.randint(0, 2)  # 获取一个0-2的整数

4、判断与循环

  1. if判断

    格式如下,需要注意的是,Python的代码块是依靠缩进完成的,通常内部代码前面会用TAB键来缩进。

    同时,Python的判断表达式可以是True和False,也可以是0和非0。Python中else if的写法是elif

    # True 可以用1,-1等非0值表示。
    if True:
        print("True")
    else:
        print("False")
    
    score = input("请输入分数:")
    score = int(score)
    # 逻辑运算进行判断 and or not,或者直接连续用符号判断
    if 90 <= score <= 100:
        print("优秀")
    elif score >= 60 and score < 80:
        print("合格")
    else:
        print("不合格")
    
  2. for循环

    # for循环1 从0开始,到5结束
    for i in range(5):
        print(i)
    # for循环2 从0开始,到11结束,每次增加3
    for i in range(0, 11, 3):
        print(i, sep=",")
    # for循环3 从-10开始,到-100结束,每次增加(-30)
    for i in range(-10, -100, -30):
        print(i, sep=",")
    # for循环4 遍历字符串
    name = "chongqing"
    for x in name:
        print(x, end="\t")
    # for循环5 遍历列表
    a = ["aa", "bb", "cc"]
    for x in range(len(a)):
        print(x, a[x])
    
  3. while循环

#  while循环1
i = 0
while i < 5:
    print("第%d次循环" % (i + 1))
    print("i=%d" % i)
    i += 1

# while循环2  当while结束时,会进入else里
count = 0
while i < 5:
    print(count, "小于5")
    count += 1
else:
    print(count, "大于或等于5")

在循环中,break和continue是同样的作用,break结束循环,continue开始下一次循环。同时,有关键字pass,用于占位,没有其他意义。

5、字符串、列表、元祖、字典

字符串

  • Python的字符串可以用单引号、双引号、三引号括起来,可以使用反斜杠\来转义特殊字符

    # 单双引号本身没什么区别,不过有特殊用法,例如下面这样
    a = "I'm a student."
    
    # 转义字符 \
    b = "Bob said \"I love you\"."
    b2 = 'Bob said "I love you."' 
    
    # 三引号可以保留换行的格式
    c = """
    	1
    	2
    	3
    """
    
  • Python3默认以UTF-8编码,所有字符串都是unicode字符串

  • 可以对字符串进行拼接、截取

    # 字符串拼接
    a = "Hello"
    b = "Python"
    print("a+b 的结果:", a + b)  # a+b 的结果: HelloPython
    print("你好,"+b)  # 你好,Python,与上面的区别是这样没有空格(逗号的默认分隔符是空格)
    print(b*3)  # PythonPythonPython,输出三次
    
    # 字符串截断
    print("a[1:4]输出结果:", a[1:4])  # a[1:4]输出结果: ell,从下标0输出到下标4
    print("a[1:4:2]输出结果:", a[1:4:2])  # a[1:4:2]输出结果: el,每次加2(步进值2)
    print("a[1:]输出结果:", a[1:])  # a[1:]输出结果: ello,从下标1开始输出到最后
    print("a[:1]输出结果:", a[:1])  # a[:1]输出结果: H,从开始输出到下标1(不包括下标1)
    
  • 特别注意:关于转义

    # 如果在字符串前面加r,这该字符串的所有转义都失效,后面爬虫会经常用到这点,为了使链接的\失去转义功能,获取正常链接
    print(r"Hello\nPython")  # 输出:Hello\nPython
    
  • 字符串常用函数

    使用描述
    isalnum()若字符串至少有一个字符且所有字符都是字母或数字,则返回True
    isalpha()若字符串至少有一个字符且所有字符都是字母,则返回True
    isdigit()若字符串只包含函数字则返回True
    isnumeric()若字符串只包含数字字符则返回True
    join(seq)以当前字符串为分隔符,把seq中的所有元素合并为一个新字符串
    len(string)返回字符串长度
    lstrip()去掉字符串左边的空格
    rstrip()去掉字符串右边的空格
    split(str,num,count)以str为分隔符,分割当前字符串。如果有num则截取num+1个

列表

  • Python的列表类似于其他语言的数组,最大的区别是,Python的列表里的类型可以不相同。

    # 使用[],元素用,隔开
    list = ['abc', 123, 1.1, "ABC"]
    print(list[0], type(list[0]))  # abc <class 'str'>
    print(list[1], type(list[1]))  # 123 <class 'int'>
    
    # 列表可以追加和扩展
    
  • 列表下标从0开始,-1是末尾位置。(即列表可以倒着遍历)

    # for 遍历列表
    for temp in list:
        print(temp)
    
    # while 遍历列表
    length = len(list)
    i = 0
    while i < length:
        print(list[i])
        i += 1
    
  • 列表可以用+操作符进行拼接,使用*进行重复。

  • 列表常用操作

操作名称操作方法举例
访问列表元素通过下标直接访问print(list[0])
列表的切片使用[1:2:3]list[1:2:3]
遍历列表通过for循环for i in list: print(i)
【增】新增元素到列表尾appendlist.append(5)
【增】列表的追加extendlist.extend(list2)
【增】列表数据的插入insertlist.insert(1,3)
【删】列表的删除del:删除指定下标元素
remove:移除列表指定值的第一个匹配值。若都没有匹配则抛出异常。
del list[0],list.remove(0)
【删】弹出列表尾部元素poplist.pop()
【改】更新列表数据通过下标修改list[0] = 1
【查】列表成员关系in、not in2 in list
【查】指定元素的 下标index:从下标1到下标2,找指定元素并返回下标。(不包含下标2)list.index(元素, 下标1, 下标2)
【查】统计指定元素countlist.count(x)
列表的加法操作+list3 = list1 + list2
【排】列表排序sort【默认升序,降序是sort(reverse=True)】list.sort()
【排】列表反转reverselist.reverse()

元祖

  • 元祖Tuple和列表List类似,区别在于元祖的元素不能被修改。

  • 元祖的元素不可变,但可以包含可变的对象,例如List

    # 元祖用小括号
    a = ("abc", 123)
    
    # 只有一个元素也要加逗号【空元祖 就是一个括号 x = ()】
    b = (1, )
    
    # 修改元祖的元素会抛出异常 a[1] = 111
    # 不能删除元祖中某个元素,但可以删除整个元祖 del a
    
    # 两个元祖可以拼接
    t1 = (1, )
    t2 = (2, )
    c = t1+t2 # (1, 2)
    
    # 可以包含可变对象,例如列表,针对列表元素是可以修改的
    d = ("a", [1, 2])
    

字典

  • 字典是无序的对象集合,使用键值对存储,具有极快的查找速度。

  • 键必须使用不可变类型。

  • 在同一个字典中,键必须是唯一的。

    # 字典定义
    info = {"name": "小白", "age": 18}
    
    # 字典访问
    print(info["name"])  # 通过下标访问,若键不存在则报错
    print(info.get("gender"))  # 使用get方法访问,若键不存在则默认返回None
    print(info.get("gender", "man"))  # 使用get方法访问,若键不存在返回man
    
  • 字典的增删改查

    # 增
    info["id"] = 123456
    print(info)  # {'name': '小白', 'age': 18, 'id': 123456}
    
    # 删 (删除的是整个键值对,也可以删除整个字典)
    del info["age"]  # {'name': '小白', 'id': 123456}
    info.clear()  # 清空字典  {}
    
    # 改
    info["id"] = 111111
    
    # 查
    # 得到所有的键(返回的是列表)
    print(info.keys())
    for key in info.keys():
        print(key)
    # 得到所有值(返回的是列表)
    print(info.values())
    for value in info.values():
        print(value)
    # 得到每个键值对(返回的是列表,每个元素是一个元祖)
    print(info.items())
    for key, value in info.items():
        print("key=%s,value=%s" % (key, value))
    

    根据字典的查,可以看出,实际上for遍历是可以有多个参数的,因此,前面对列表的遍历可以优化。

    # 使用枚举配合列表,以便同时拿到下标和元素内容。
    # 其中enumerate()是处理枚举。
    a = ["a", "b", "c", "d"]
    for i, x in enumerate(a):
        print(i, x)
    

集合

  • 集合set和字典dict类似,也是一组key的集合,但set不存储value。由于key不能重复,因此在set中的内容都是无重复的。

  • 集合set是无序的。

    ss = set([1, 1, 2, 3, 3])
    print(s)  # 输出{1, 2, 3}
    

小结

是否有序是否可变
列表[ ]有序可变
元祖( )有序不可变
字典{ }无序key不可变,value可变
集合{ }无序可变(不重复)

6、函数

  • 函数的定义

    # 无参 无返回值
    def 函数名():
      代码
    
    # 有参
    def 函数名(参数1, 参数2):
      代码
    
    # 有返回值
    def 函数名(参数1,参数2):
      return xxx
    
  • 举例:返回多个值

    def divid(a, b):
      shang = a//b
      yushu = a%b
      return shang, yushu
    
    s, y = divid(5, 2)
    print(shang, yu)
    
  • 全局变量和局部变量问题:

    a = 1 # 这是全局变量
    def test():
      global a # 声明 a是全局变量
      a = 2
      print(a)
     print(a)
    
    # 如果不声明a是全局变量,那么a会作为函数test的局部变量,从而无法影响到外部的a
    

7、文件操作

文件操作和C语言有点像,也是使用open函数,同时有各种模式。

# r 只读方式打开(默认模式),若文件不存在则抛出异常
# w 写模式,若文件存在则将其内容覆盖,若文件不存在则创建新文件
# a 追加模式,若文件存在不会覆盖,而是追加到后面
# rb、wb,二进制的方式读写文件。

f = open("test.txt", "w")  # 打开文件,此时文件不存在,会创建名为test.txt的文件
f.write("Hello World!")  # 写入字符串
f.close()  # 关闭文件,这样其他程序才能访问该文件

f = open("test.txt", "r")  # 读取文件
content1 = f.read(5)  # 读取5个字符
content2 = f.readline()  # 读取一行
content3 = f.readlines()  # 读取所有行,每行作为一个列表元素

文件常规操作:需要先导入os模块

import os

# 文件重命名
os.rename("test.txt", "test2.txt")
# 删除文件
os.remove("test2.txt")
# 创建文件夹
os.mkdir("临时文件夹")
# 删除文件夹
os.rmdir("临时文件夹")
# 获取当前目录
print(os.getcwd())
# 改变默认目录
os.chdir("../")
# 获取目录列表
os.listdir("./")

8、异常

  • 捕获异常

    try:
        print("-----test1-------")
        f = open("123.txt", "r")  # 123.txt文件不存在,所以会抛出 FileNotFound异常
        print("-----test2-------")
        try:
          # pass不做任何事,只表示占位通过
          pass # 假设这里出现问题,但此时文件已经打开
        finally:
    		  f.close() # finally中的代码是一定会执行的,所以只要文件打开了,无论是否异常,必定会关闭
    except IOError:
      	# exception的代码是在捕获到异常后执行
        # 异常捕获类型需要一致,假如把IOError改为NameError就无法捕获
        pass
    
    # except (IOError, NameError):  这种就包含了两种异常
    # except (IOError, NameError) as result: 这种是用result作为对象,可以直接打印result
    # except Exception as result: Exception是所有异常父类,用它来捕获所有异常
    

    9、自定义模块

    模块:用来从逻辑上组织Python代码(变量、函数、类),本质就是.py文件,用于提高代码的可维护性。(类似Java的包)

  1. 创建两个文件夹,再分别创建两个文件,如下所示:
创建模块
  1. 在t1.py中定义一个加法函数,如下所示:
定义函数
  1. 在t2.py中引用自定义的模块,如下所示:
引用自定义模块
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-07-04 21:15:28  更:2021-07-04 21:15:49 
 
开发: 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年5日历 -2024/5/3 2:06:46-

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