当前位置:   article > 正文

Python基础知识点梳理_python知识体系

python知识体系

本文简要梳理了Python基础知识的大体框架。


一、变量和赋值

变量是编程语言中能存储数据的抽象概念,它可以存储各种数据。变量名只能由字母、数字、下划线组成,需要注意的是:

  • 不能以数字开头;
  • 不能包含空格;
  • 区分大小写,变量A和变量a是不同的。

赋值语句用于将数据赋值给变量。Python支持多种格式的赋值语句:

  • 简单赋值用于为一个变量赋值。
  • 序列赋值可以一次性为多个变量赋值。
  • 多目标赋值指用连续的多个等号将同一个数据赋值给多个变量。
  • 增强赋值指将运算符与赋值相结合的赋值语句。

代码如下(示例):

  1. # 简单赋值
  2. num = 100
  3. # 序列赋值
  4. x, y = 1, 2 # 1, 2
  5. (x2, y2) = 10, 20 # 10, 20
  6. [x3, y3] = 'ab' # a, b
  7. ((x4, y4), z4) = 'ab', 'cd' # a, b, cd
  8. x5, *y5 = 'abcd' # a, ['b', 'c', 'd']
  9. *x6, y6 = [1, 2, 3, 'abc'] # [1, 2, 3], abc
  10. # 多目标赋值
  11. a = b = c = 10 # 将10 分别赋值给变量 a、b、c
  12. # 增强赋值
  13. i = 10
  14. i += 10 # 20

二、分支和循环

1.分支结构

Python中用 if 语句实现分支结构。

代码如下(示例):

  1. # 分支结构
  2. # 输入一个成绩,判断它的优良中差等级
  3. score = int(input('请输入一个成绩:'))
  4. if score < 60:
  5. print('差')
  6. elif score < 70:
  7. print('中')
  8. elif score < 80:
  9. print('良')
  10. else:
  11. print('优')
  12. # 输入两个数,输出最大的值
  13. num1 = int(input('请输入第1个数值:'))
  14. num2 = int(input('请输入第2个数值:'))
  15. maxNum = num1 if num1 > num2 else num2
  16. print(maxNum)

2.循环结构

Python中循环语句有两种格式:

  • while语句
  • for语句

循环中的break和contiune

  • break:结束当前循环。
  • continue:结束当前循环进入下一个循环。

代码如下(示例):

  1. ##while语句
  2. # 使用 while 计算1+2+...+100的结果
  3. result = 0
  4. i = 1
  5. while i <= 100:
  6. result += i
  7. i += 1
  8. print(f'结果为:{result}')
  9. else: # 不管while条件是否满足,都会执行,可以省略
  10. print('执行完毕')
  11. ##for语句
  12. # 循环输出1..10之间的所有偶数,如果数值等于6就跳过
  13. for i in range(2, 11, 2):
  14. if i == 6:
  15. # break
  16. continue
  17. print(i, end='\t')
  18. else:
  19. print("循环执行完毕!")

三、数据结构

Python中有两类数据类型:

  • 简单数据类型:数字和字符串。
  • 组合数据类型:
    • 集合(set) 是Python 2.4引入的一种类型,集合常量用大括号表示,例如,{1,2,3}。集合中的元素具有唯一、无序和不可改变等特点,集合支持数学理论中的各种集合运算。
    • 列表和元组都属于序列,序列支持索引、分片和合并等操作。字符串属于特殊的不可变序列。
    • 元组可以看作是不可变的列表,它的使用与字符串类似。元组常量用圆括号表示,例如:(1,2)('a','b','c'),也可以使用tuple()方法来创建元组对象。
    • 字典是一种无序的映射集合,包含一系列的键:值对。字典常量用大括号表示,例如,{'name':'John','age':25,'sex':'male'},也可以使用dict()函数来创建。
  1. ##集合数据结构示例
  2. # 重复值的集合声明
  3. set1 = {1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4}
  4. print(len(set1)) # 求长度:计算集合中元素的个数 4
  5. print('a' in set1) # 判断包含:判断集合是否包括数据 True
  6. # Python3.0引入的集合解析构造方法
  7. set2 = {item for item in [1, 2, 3, 4]}
  8. # 集合对象支持求长度、判断包含、求差集、并集、交集、对称差和比较等运算
  9. print(set1 - set2) # 求差集:用属于set1但不属于set2的元素创建新集合 {2, 'bc'}
  10. print(set1 | set2) # 求并集:用set1、set2两个集合中的所有元素创建新集合 {1, 2, 5, 'a', 'bc'}
  11. print(set1 & set2) # 求交集:用同时属于set1和set2的元素创建新集合 {1, 'a'}
  12. ##列表数据结构示例
  13. # 列表切片操作
  14. list1 = list(range(10)) # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  15. print(list1[2:5]) # [2, 3, 4]
  16. print(list1[2:]) # [2, 3, 4, 5, 6, 7, 8, 9]
  17. print(list1[:5]) # [0, 1, 2, 3, 4]
  18. print(list1[3:10:2]) # [3, 5, 7, 9]
  19. print(list1[10:3:-2]) # [9, 7, 5]
  20. # 列表常用方法
  21. list2 = [1, 3, 3, 7, 5]
  22. list2.append(5) # 追加
  23. list2.remove(7) # 移除指定元素
  24. list2.pop(0) # 按索引位置删除
  25. list2.sort() # 升序排序
  26. list2.reverse() # 反转
  27. # 列表解析(推导式): 列表解析与循环的概念紧密相关,使用列表解析来for代替循环操作。列表解析的基本结构:表达式 for 变量 in 可迭代对象 if 表达式
  28. print([x + 10 for x in range(10) if x % 2 == 0]) # 带条件的列表解析, 用if筛选偶数 [10, 12, 14, 16, 18]
  29. print([x + y for x in (10, 20) if x > 10 for y in (1, 2, 3) if y % 2 == 1]) # 重解析嵌套, 分别使用if执行筛选 [21, 23]
  30. ##元组数据结构示例
  31. # 创建元组
  32. print((2,)) # 包含一个对象的元组,不能缺少逗号 (2,)
  33. print(tuple('abcde')) # 参数为可迭代对象 ('a', 'b', 'c', 'd', 'e')
  34. print(tuple(item * 2 for item in range(5))) # 使用解析结构创建元组 (0, 2, 4, 6, 8)
  35. # 元组常用方法
  36. print(len((1, 2, 3, 4, 5))) # 求长度
  37. print((1, 2) * 3) # 重复
  38. print(t3.count(1)) # 统计指定值出现的次数,如果不包含指定值时,返回0
  39. print(t3.index(2)) # 查找指定范围内元素所在的索引
  40. # 索引和分片
  41. t2 = tuple(range(10)) # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
  42. print(t2[1]) # 1
  43. print(t2[-1]) # 9
  44. print(t2[2:5]) # (2, 3, 4)
  45. print(t2[1:7:2]) # (1, 3, 5)
  46. ##字典数据结构示例
  47. # 创建字典
  48. dict1 = {'name': 'John', 'age': 25, 'sex': 'male'} # 字典常量
  49. dict2 = {'book': {'Python编程': 100, 'C++入门': 99}} # 嵌套字典
  50. dict3 = dict(name='Tom', age=25) # 使用赋值格式的“键:值”对创建字典 {'name': 'Tom', 'age': 25}
  51. # 字典常用方法
  52. dict1['name'] = 'tom' # 通过索引修改映射值
  53. dict1.update(name='jim') # update()方法用于为字典添加键值对,若字典已存在同名的键,则该键的映射值被覆盖
  54. print(dict1['name']) # 根据key获取value
  55. print(dict1.get('name', 'default')) # 返回键 key映射的值, 如果键key不存在,返回默认值
  56. print(dict1.pop('name', 'default')) # 从字典中删除键值对,并返回被删除的映射值。若键不存在,则返回default
  57. print(dict1.items()) # 返回键值对视图,视图对象支持迭代操作
  58. print(dict1.keys()) # 返回字典中所有键的视图
  59. print(dict1.values()) # 返回字典中全部值的视图

四、函数

函数是完成特定任务的语句集合,调用函数会执行其它包含的语句。函数的返回值通常是函数的计算结果,调用函数是使用的参数不同,可获得不同的返回值。Python利用函数实现代码复用

在函数定义的参数表里面的参数称为形式参数,简称形参。调用函数时,参数表中提供的参数称为实际参数,简称实参。Python的函数参数非常灵活,可以根据需求去选择参数个数,但是需要注意的是即使没有参数,括号也不可省略。

  • 参数赋值传递:调用函数时会按参数的先后顺序,依次将实参传递给形参。Python允许以形参赋值的方式,将实参传递给指定形参。
  • 默认值的可选参数:在定义函数时,可以为参数设置默认值。调用函数时,如果未提供实参,则形参取默认值使用。注意,带默认值的参数为可选参数,在定义函数时,应放在参数表的末尾。
  • 接受任意个数的参数: 在定义函数时,可接受任意个数的参数,如果在参数名前面使用一个星号*,表示形参是一个元组,如果是两个星号**,表示形参是一个字典

代码如下(示例):

  1. ##函数定义
  2. def function(num1, num2, other=-1, *args, **kwargs):
  3. print(num1, num2, other, args, kwargs) # 1 2 3 (4, 5) {'name': 'Tom', 'age': 18}
  4. #函数调用
  5. function(1, 2, 3, 4, 5, name='Tom', age=18)

lambda函数(匿名函数)

lambda函数也称表达式函数,用于定义匿名函数,可将lambda函数赋值给变量,通过变量调用函数。lambda表达式基于数学中的 λ演算 得名,它主要的作用就是简化函数代码,与def不同,lambda只能用一行表示。

lambda函数定义的基本语法为:lambda 参数表:表达式

五、面向对象

面向对象(Object Oriented)是软件开发方法,是一种程序设计规范,是一种对现实世界理解和抽象的方法。在面向对象编程思想中,一切事物皆对象,通过面向对象的方式,将现实世界的事物抽象成对象。

用来描述具有相同属性和方法的对象的集合。Python的类使用class语句来定义,类通常包含一系列的赋值语句和函数定义,用来描述某一类事物。赋值语句定义类的属性,函数定义类的方法

代码如下(示例):

  1. ##定义类
  2. class ClassName:
  3. """定义类的语法"""
  4. class_property = 0 # 没有使用self,并且写在方法外,这是类属性,它是共享的
  5. def __init__(self, prop_val): # 初始化方法,即构造方法
  6. temporary_val = -1 # 写在方法里,但是没有self,这是一个局部变量
  7. self.instance_property = prop_val # 有self,这里创建了一个实例属性,只需要赋值就可以创建
  8. ClassName.class_property += 1 # 操作类属性需要写类名
  9. def instance_method(self, prop_val):
  10. """
  11. 实例方法,与前面的学习过的函数几乎一样,区别在于第一个参数必须是 self,隐式传入,实例自己
  12. :param prop_val:
  13. :return:
  14. """
  15. print(prop_val)
  16. pass
  17. @staticmethod # 静态方法,类名调用
  18. def static_method():
  19. pass
  20. @classmethod # 类方法,类名调用
  21. def class_method(cls):
  22. pass

1、封装

封装(Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。要访问该类的代码和数据,必须通过严格的接口控制。封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。

封装的优点:

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。

2、继承

继承可实现新类获取现有类的属性和方法。新类称作子类或派生类被继承的类称作父类、基类或超类。在子类中可以定义新的属性和方法,从而完成对父类的扩展。

  1. class Person:
  2. def __init__(self, name, age, sex):
  3. self.name = name
  4. self.age = age
  5. self.sex = sex
  6. def show_info(self):
  7. print(f"name: {self.name}, age:{self.age}, sex:{self.sex}")
  8. class Student(Person): # 这里加了一个括号表明父类是 Person
  9. def __init__(self, name, age, sex, stu_id):
  10. super().__init__(name, age, sex) # super 就是父类,调用父类的 初始化方法初始化参数
  11. self.stu_id = stu_id # 子类特性
  12. def show_info(self): # 重写父类方法
  13. print(f"name: {self.name}, age:{self.age}, sex:{self.sex}, stu_id:{self.stu_id}")
  14. stu = Student("Tom", 18, "male", 10010)
  15. stu.show_info()

六、模块和包

模块是一个包含变量、函数或类的程序文件,模块中也可包含其他的各种Python语句。大型系统往往将系统功能划分为模块来实现,或者将常用功能集中在一个或多个模块文件中,然后在顶层的主模块文件或其他文件中导入并使用模块。Python也提供了大量内置模块,并可集成各种扩展模块

以模块方式组织代码能够方便地管理和维护,但是随着项目复杂度进一步升级,需要将项目不同功能代码放入把不同的文件夹中,这些文件夹可以相互引用,这就是的概念。

Python模块的导入方式:

  • 采用import 模块名的方式,导入模块中的所有函数,调用的时候需要通过模块名.函数的形式调用。也可以在模块名后面使用as关键字给模块重命名,这种方式主要用来避免模块之间函数名冲突。
  • 采用from 模块名 import 函数名的方式,导入模块中指定的函数,调用的时候,函数名前不需要加上模块名。也可以把函数名换成*号,导入所有函数。
  • 采用from 模块名 import *的方式,导入模块所有函数。

Python包从本质上来说就是一个文件夹,与一般的文件夹不同之处在于包中必须包含一个名为__init__.py的文件。__init__.py文件可以是一个空文件,仅用于表示该文件夹是一个包。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/737253
推荐阅读
相关标签
  

闽ICP备14008679号