第二章 python基础知识梳理

目录

一、 变量和赋值

二、分支和循环

三、数据结构

四、函数

五、面向对象(封装 继承)

六、模块和包

一、 变量和赋值

1. 变量命名

变量命名可以包括字母、数字、下划线,但是不能用数字作为开头;

系统关键字不能作为变量名使用;

2. 格式化输入输出

如果希望输出文字信息的同时,一起输出数据,就需要使用到格式化操作符:

%s        字符串

%d        有符号十进制整数

%f        浮点数

3. 赋值语句

简单赋值、序列赋值、多目标赋值和增强赋值等。

序列赋值:

x1, y1 = 10, 20
(x2, y2) = 30, 40
[x3, y3] = 'ab'
((x4, y4), z4) = 'ab','cd'   #a, b, cd
x5, *y5 = 'abcd' #a, ['b', ' c', 'd']
*x6, y6 = [10, 20, 30, 'abc']   #[10, 20, 30], abc

二、分支和循环

  程序结构分为3种:顺序结构、分支结构和循环结构。

分支结构:python使用 if 语句实现分支结构。最简单的三元表达式语法:表达式1 if 条件表达式 else 表达式2。即满足条件表达式执行表达式1,否则执行表达式2。

score = float(input('请输入一个成绩'))
if score < 60:
    print('差')
elif score < 70:
    print('中')
elif score < 80:
    print('良')
else:
    print('优')

循环结构:python使用 for 和 while 语句实现循环结构。循环中可使用 break、continue、和 pass来完成循环控制。

#使用 while 计算 1+2+...+100 的结果
result = 0
i = 1
while i <= 100:
    result += i
    i += 1
    print(f'结果为:{result}')
else:  #不管 while 条件是否满足,都会执行,可以省略
    print('执行完毕')

#循环输出 1...10 之间的所有偶数,如果数值等于 8 就跳过
for i in range(2, 11, 2):
    if i == 8:
        continue
        print(i, end = '\t')
else:
    print('循环执行完毕!')

三、数据结构

在 python 中,数据和字符串属于简单数据类型。集合、列表、元组、字典和范围均属于组合数据类型。组合数据类型的对象是一个数组容器,可以包含多个有序或无序的数据项。

1. 集合 唯一、无序和不可改变得特点;用大括号表示{},但是定义空集合得使用set(),否则{}为字典类型。

set1 = {1, 2, 3, 1, 3, 2}
print(len(set1))  #3
print('1' in set1)

set2 = {item for item in [1, 2, 3, 4]}
print(set1 - set2)     #求差集
print(set1 | set2)    #求并集
print(set1 & set2)    #求交集

2. 列表 序列和可变特点;支持索引、分片和合并等操作;用中括号表示[]。

# 列表切片操作 
l1 = list(range(10))  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(l1[2:5])   #索引位置从 2 开始,取到索引位置为 4  [2, 3, 4]
print(l1[2:])    #索引位置从 2 开始,取到索引位置为最后一个  [2, 3, 4, 5, 6, 7, 8, 9]
print(l1[3:10:2]) #索引位置为 3 开始取到索引位置为 9,并步长为 2 [3, 5, 7, 9]
print(l1[10:3:-2]) #索引位置为 9 开始,取到索引位置为 4,逆向。步长且为 2 [9, 7, 5]

在列表切片时,当左或又索引值大于序列的长度值时,就用长度值作为该索引值。但注意不能索引超出范围的值,如上例若打印print(l1[10]),则会报错。

#列表常用方法
l2 = [1, 3, 3, 7, 5]
l2.append(5)
l2.remove(7)  #移除指定元素且排在第一位置的
l2.pop(0)  #按索引位置删除
l2.sort()  #升序排序
l2.reserve()  #反转

#列表解析(推导式)
print([x + 10 for x in range(10) if x % 2 == 0])  #[10, 12, 14, 16, 18]
print([x + y for x in(10, 20) if x > 10 for y in (1, 2, 3) if y % 2 ==1])   #[21, 23]

l1 = list(1) 是不可以的,print(l1) 会报错,因为 1 是不可迭代对象(不可循环遍历);s1 = set('a') 进行print(s1) 得到 {'a'} 。

3. 元组 序列和不可变特点;使用与字符串类似;用圆括号表示()。

包含一个对象的元组,不能缺少逗号,不然就是对象的类型,如 t1 = (2),此 t1 为 int 型。

#创建元组
print((2,))
print(tuple('sdrf'))
print(tuple(item * 2 for item in range(5)))

#元组常用方法
t1 = (1, 2, 3, 4, 5)
print(len(t1))
print((2, 3) *3)   #(2, 3, 2, 3, 2, 3)
print(t1.count(1))  #统计指定值出现的次数,如果不包含指定值时,返回0
print(t1.index(2))  #查找指定范围内元素所在的索引    1

#索引和分片
t2 = tuple(range(10))
print(t2[1])
print(t2[-1])
print(t2[2:5])
print(t2[1:7:2])

4. 字典 无序可变;包含一系列的键值对;用大括号表示{}。

dict1 = {'name': 'Jone', 'age': 25, 'sex': 'male'}
dict2 = {'book': {'Python编程': 100, 'C++入门': 99}}
dict3 = dict(name = 'Tom', age = 25)

#字典常用方法
dict1['name'] = 'tom'   # 修改映射值或新建映射   也可用 dict1.update(name = 'tom')
print(dict1['name'])   # 根据key获取value
print(dict1.get('name', 'default')) # 返回键 key映射的值, 如果键key不存在,返回默认值
print(dict1.pop('name', 'defaule')) # 从字典中删除键值对,并返回被删除的映射值。若键不存在,则返回default
print(dict1.items())  #返回键值对视图,视图对象支持迭代操作
print(dict1.keys())  # 返回字典中所有键的视图
print(dict1.values())  #返回字典中全部值的视图

四、函数

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

1. 参数赋值传递:调用函数时会按照参数的先后顺序,依次将实参传递给形参。Python 允许以形参赋值的方式,将实参传递给指定形参。

2. 有默认值的可选参数:在定义函数时,可以为参数设置默认值。调用函数时,如果未提供实参,则形参取默认值使用。注意,带默认值的参数为可选参数,在定义函数时,应放在参数表的末尾。

3. 接受任意个数的参数:在定义函数时,可接受任意个数得参数,如果在参数名前面使用一个 * 号,表示形参是一个元组,如果是两个 ** 号,表示形参是一个字典。

def fn(num1, num2, other = -1, *args, **kwarges):
    print(num1, num2, other, args, kwarges)
fn(1, 2, 3, 4, 5, name = 'Tom', age = 18)   #1 2 3 (4, 5) {'name':'Tom', 'age': 18}

lambda 函数(匿名函数)

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

def fn1(): return 100
lambdaFn1 = lambda: 100

def fn2(x, y): return x + y
lambdaFn2 = lambda x, y : x + y

五、面向对象(封装 继承)

类的属性:类属性和实例属性

  • 类属性只要在类定义内,类方法定义外即可,它是一个类的全局变量,是所有对象共享的一个变量
  • 实例属性定义在 _init_ 中,每个对象之间相互独立。如果在实例属性名前加上 _ 就变成一个私有变量,在类的外部是不可见的,内部可以使用 self 访问

类的方法:实例方法、类方法和静态方法

  • 实例方法定义时,需要将实例对象本身作为隐含的第一个参数传递给方法,所以在定义时,通常第一个参数名称为 self ,使用 self 只是惯例,重要的是位置,完全可以用其他的名称来代替 self
  • 静态方法定义时,需要在前一行加上一个装饰器 @staticmethod ,调用的时候直接用类名访问,不需要将实例对象本身作为隐含的第一个参数传递给方法
  • 类方法与静态方法类似,也需要一个装饰器 @classmethod ,依然是用类名调用它,唯一不同的是类方法多了一个 cls 参数,它是类名,系自动注入
#类定义语法格式
class ClassName:
    class_property = 0  # 没有使用self,并且写在方法外,这是类属性,它是共享的

    def _init_(self, prop_val):   # 初始化方法,即构造方法
        temporary_val = -1  # 写在方法里,但是没有self,这是一个局部变量
        self.instance_property = prop_val   # 有self,这里创建了一个实例属性,只需要赋值就可以创建
        ClassName.class_property += 1  # 操作类属性需要写类名

    def instance_method(self, prop_val):
        """
        实例方法,与前面的学习过的函数几乎一样,区别在于第一个参数必须是 self,隐式传入,实例自己
        :param prop_val:
        :return:
        """
        print(prop_val)
        pass

    @staticmethod 
    def static_methoc():
        pass

    @classmethod
    def class_method(cls):
        pass
# 对象实例化和类成员信息调用示例
obj_instance = ClassName('prop_val')  # 创建对象的语法
obj_instance.instance_property = 0  # 调用属性,并赋值为0
print(ClassName.class_property)   # 类对象直接读取类属性
print(obj_instance.class_property)  # 实例对象读取类属性

ClassName.static_mathod()  # 调用静态方法
ClassName.class_method()   # 调用类方法
obj_instance.instance_method('inst_val')   # 调用实例方法
# 类定义和实例化操作
class Person:
    name = 'Person Class'

    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    @staticmethod
    def show():
        return Person.name

    def show_info(self):
        print(f'name:{self.name}, age:{self.age}, sex:{self.sex}')

obj = Person("Tom", 18, 'male')
obj.show_info()
print(Person.show())

 类继承

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

class Person:
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex

    def show_info(self):
        print(f'name:{self.name}, age:{self.age}, sex:{self.sex}')

class Student(Person):   # 这里加了一个括号表明父类是 Person
    def __init__(self, name, age, sex, stu_id):
        super().__init__(name, age, sex)  # super 就是父类,调用父类的 初始化方法初始化参数
        self.stu_id = stu_id # 子类特性

    def show_info(self):   # 重写父类方法
        print(f'name:{self.name}, age:{self.age}, sex:{self.sex}, stu_id:{self.stu_id}')

stu = Student("Tom", 18, 'male', 2022001)
stu.show_info()

六、模块和包

 模块是一个包含变量、函数或类的程序文件,若文件中包含一个名为 __init__.py 的文件,则是一个包。Python 也提供了大量的内置模块,并可集成各种扩展模块。

1. 采用 import 模块名 的方式,导入模块中的所有函数,调用的时候需要通过 模块名.函数 的形式调用。也可以在模块名后面使用 as 关键字给模块重命名,这种方式主要用来避免模块之间函数名冲突。

2. 采用 from 模块名 import 函数名的方式,导入模块中指定的函数,调用的时候,函数名前不需要加上模块名。也可以把函数名换成 * 号,导入所有函数。

# pythontest.py

from templates.pack1.Demo1 import Person, show, name
print(name)
show()
Person.show()
obj = Person('Jim', 21)
obj.show_info()
# Demo1.py
name = 'Demo Package Model'
def show():
    print('hello world')

class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

    def show_info(self):
        print(f'name:{self.name}, age:{self.age}')

    @staticmethod
    def show():
        print('This is Person StaticMethod')

这节课学完啦,一向不用 pycharm 的我这次懂得了许多操作,但还现在只是跟着老师做,要自己熟练运用还有待加强哦!

记录下怎么在 pycharm 中安装包:点击 terminal ,然后pip install 名称 即可

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Python第二章的主要知识点包括: 1. 数据类型:Python提供了多种数据类型,包括整数(int)、浮点数(float)、布尔值(bool)、字符串(str)等。 2. 变量:变量是用于存储数据的容器。在Python中,可以通过赋值语句将值赋给变量,并且不需要事先声明变量的类型。 3. 运算符:Python支持常见的数学运算符(如加减乘除)、比较运算符(如等于、大于、小于等)、逻辑运算符(如与、或、非等)等。 4. 字符串:字符串是由字符组成的序列,在Python中可以使用单引号或双引号括起来表示。可以对字符串进行切片、拼接、格式化等操作。 5. 列表:列表是一种有序的、可变的数据类型,可以包含任意类型的数据。可以通过索引访问和修改列表中的元素,还可以进行切片操作。 6. 元组:元组和列表类似,但是元组是不可变的,即元组创建后不能修改其中的元素。 7. 字典:字典是一种无序的键值对集合,可以根据键获取对应的值。字典中的键必须是唯一的,值可以是任意类型。 8. 条件语句:条件语句用于根据条件执行不同的代码块。Python中的条件语句包括if语句、elif语句和else语句。 9. 循环语句:循环语句用于重复执行一段代码。Python中的循环语句包括for循环和while循环。 10. 函数:函数是一段可重复使用的代码块,可以接收参数并返回结果。在Python中可以使用def关键字定义函数。 这些是Python第二章的主要知识点,希望对你有帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值