Python快速上手

  • 1. 前言
  • 2. 环境搭建
  • 3. 注释
  • 3.1 单行注释
  • 3.2 多行注释
  • 4. print() 输出
  • 5. input() 输入
  • 6. 变量
  • 7. 数据类型
  • 8. 运算符
  • 8.1 算术运算符
  • 8.2 复合赋值运算符
  • 8.3 逻辑运算符
  • 9. if判断
  • 10. 循环
  • 10.1 while循环
  • 10.2 for循环
  • 10.3 关键字
  • 11. 函数
  • 11.1 普通函数
  • 11.2 lambda表达式(匿名函数)
  • 11.3 闭包和装饰器
  • 12. 异常捕获
  • 13. 模块
  • 13.1 导入方式
  • 13.2 内置模块
  • 13.3 自定义模块
  • 14. 文件
  • 14.1 读
  • 14.1.1 read
  • 14.1.2 readline
  • 14.1.3 readlines
  • 14.2 写
  • 14.3 关闭
  • 14.4 with(推荐使用)
  • 15. 类
  • 16. 练手题目
  • 1. 前言

    如果有哪些地方写错还望海涵,可以私信或评论指出,我及时更改,感谢🙏同时也欢迎更多人来指导交流~

    各编程语言都有各自复杂的语法和标准,但是从我自身微薄的见识来看,各语言间的编程思想大方向是通用的,唯一不同的是各功能的语法,复杂语法也是由基础语法构成。
    举个栗子,无论是c、java、js和python等都有 注释、输出、输入、变量、判断、循环、函数、类和异常捕获 等,所以我认为只要熟悉一门语言后,再去了解其他语言的基础语法,就可以达到快速上手的目的。

    博主经过一段时间了解学习后,认为以下的学习路径是比较适合自己的思维,所以特此分享给大家参考。

    如果对某一模块的细节有疑惑,推荐 菜鸟教程 或 其他教程网站学习

    Tip
    ① 本文可能不太适合没有编程基础的人学习,因为在写文章时为了摘出最重要的知识,从而省略了大量的细节
    ② 实践是最好的老师,看的再多也不如自己敲一遍记的深刻


    2. 环境搭建

    本案例中使用的Python版本号3.8.0,Pycharm版本号为2021.2

    https://www.python.org/downloads 这是Python官网的下载地址,建议使用稳定版前2,3个版本

    https://www.jetbrains.com/pycharm/download/#section=windows 这是Pycharm官网的下载地址,如果只是学习了解,可以仅下载免费的Community版

    在此安装细节就不展示了,重要的是更改文件的安装路径,剩下的基本都是next


    3. 注释

    3.1 单行注释

    # 我是单行注释,可以使用快捷键"ctrl + /"快速生成
    

    3.2 多行注释

    """
    	我是多行注释
    	我是多行注释
    """
    

    4. print() 输出

    在python中每行语句不需要以分号结尾

    # 普通输出
    print('Hello World') 				# Hello World
    
    
    # 格式化输出(Python3.6 以上版本才可以使用)
    string = 'Hello World'
    print(f'{string}!') 				# Hello World!
    

    print方法打印后会默认会换行,如果不需要可以添加end参数

    print('Ka', end='')
    print('zi')
    

    5. input() 输入

    string = input('请输入名字:')		# 输入Kazi
    
    print(f'我的名字是{string}')			# 我的名字是Kazi
    print(type(string)) 				# <class 'str'>
    
    
    # 注意input()返回的值一定是字符串格式,如果需要得到数值类型,需要进行类型转换。如int()或float()
    num1 = input('请输入金额:') 		# 10
    print(type(num1)) 					# <class 'str'>
    num2 = int(input('请输入金额:')) 	# 10
    print(type(num2)) 					# <class 'int'>
    

    6. 变量

    Python 中的变量赋值不需要类型声明

    命名规则:

  • 由字母、数字和下划线(_)组成

  • 不能由数字开头

  • 严格区分大小写

  • 不能使用内置关键字作为变量名称,可使用help(‘keywords’)查看内置关键字

  • 推荐的变量命名规则:

    变量 推荐写法
    变量名 or 函数名 or 模块名 全小写下划线(get_data)
    类名 大驼峰(Student)
    常量 全大写下划线(MAX_NUM)
    私有属性 以双下划线开始(__age)
    魔法变量 以双下划线开始,双下划线结尾(__ init __)

    7. 数据类型

    标准类型 方法名 相关方法 举例
    整型 int 1
    浮点型 float 1.0
    字符 str find()、replace()、split() 、join()等 ‘字符串’
    布尔 boolean True
    列表 list append()、remove()、reverse()、sort()等 [1, 2, 3]
    元组 tuple (1, 2, 3)
    字典 dict {‘name’: ‘kazi’, ‘age’: 18}
    集合 set add()、remove()、pop() {1, 2, 3}
  • 列表list可以增删改查操作,但是元组tuple只能查找
  • 集合set类型会自动去重,且是无序的
  • 使用type(变量名)可以查看该变量的数据类型
  • 8. 运算符

    8.1 算术运算符

    运算符 含义
    +
    *
    /
    // 整除(向下取整,如9 // 4 输出 2)
    % 取余
    ** 幂指数 (2**3,2的三次方)

    8.2 复合赋值运算符

    运算符 等价于
    += 先进行加法运算再赋值(a += b 等价于 a = a + b)
    -= 同上,不再赘述
    *=
    /=
    //=
    %=
    **=

    8.3 逻辑运算符

    运算符 含义
    and 与运算
    or 或运算
    not 非运算

    只有空值和None转换成布尔值是False,其他是True

    print(None or 0 or 1) # 1
    

    9. if判断

    冒号代表条件判断结束

    在Python中没有大括号{},是通过缩进来表示程序的上下级关系

    语法

    if 条件判断:
    	print('条件成立执行的代码')
    elif 条件判断:
    	print('条件成立执行的代码')
    else:
        print('条件成立执行的代码')
    

    三目运算符

    num1 = 5
    num2 = 3
    
    num = num1 if num1 > num2 else num2
    print(num) # 5
    

    10. 循环

    10.1 while循环

    语法

    while 循环条件:
    	...循环体1
        ...循环体2
        ...
    else: # 可选
        print('在循环结构正常结束时会执行(没有执行break)')
    

    10.2 for循环

    语法

    for 临时变量 in 序列:
    	...循环体1
        ...循环体2
        ...
    else: # 可选
        print('在循环结构正常结束时会执行(没有执行break)')
    
    for i in range(0,3):
    	print(i)
    	
    """
    输出结果:
    	0
    	1
    	2
    """
    
    list1 = [0, 1, 2]
    for i in list1:
        print(i)
        
    """
    输出结果:
    	0
    	1
    	2
    """
    

    列表推导式

    list1 = [i for i in range(5)]
    
    print(list1) # [0, 1, 2, 3, 4]
    

    10.3 关键字

    continue:跳过本次循环,继续下一次循环

    break:终止距离最近的循环结构

    11. 函数

    11.1 普通函数

    语法

    def 函数名称([参数1,参数2...]):
        函数体
        ..
        [return 返回值]
    
    def sum(x, y):
        return x + y
    
    print(sum(1,2)) # 3
    

    函数定义不能为空。如果某种原因写了无内容的函数定义,使用 pass 语句来避免错误

    def student_info():
        pass
    

    含有不定长参数的函数

    # 不定长元组参数
    def user_info(*args):
        print(f'我的名字是{args[0]}, 今年{args[1]岁}')
        
    user_info('kazi', 18)
    
    # 不定长字典参数
    def book_info(**kwargs):
        print(f"书籍名称是{kwargs['name']},价格为{kwargs['price']}元")
    
    
    book_info(name='Python从入门到入土', price=33.3)
    

    11.2 lambda表达式(匿名函数)

    语法

    变量名 = lambada 形参 : 返回值或表达式

    # def fn1():
    #    return 100
    # 等价于
    fn1 = lambda : 100
    
    # def fn2(num1,num2):
    #    return num1 + num2
    # 等价于
    fn2 = lambda num1, num2: num1 + num2
    

    11.3 闭包和装饰器

    需求:如果在函数执行完毕后,我们依然希望局部变量保存在内存中不会被清理。

    解决:使内存中的局部变量保留

    # 闭包三步走:有嵌套,有引用,有返回
    
    def outer(fn):
        a = 10
        def inner():		# 有嵌套
            return a		# 有引用
            
        return inner		# 有返回
    
    
    func = outer() 			# 相当于把inner函数赋值给func
    print(func)	 # 10		# 执行inner函数
    

    装饰器

    本质上也是个闭包函数

    # 装饰器四步走:有嵌套,有引用,有返回,有额外功能
    
    def outer(fn):
        def inner():				# 有嵌套
            print('登录功能')		 # 有额外功能
            fn() 					# 有额外功能
            print('-' * 20)
            
        return inner				# 有返回
    
    # 语法糖
    @outer
    def comment():
        print('评论功能')
        
    comment()						
    
    """
    输出结果:
        登录功能
        评论功能
        ------------------
    """
    

    12. 异常捕获

    语法

    try:
        可能出现异常的代码
    except [Exception as e]:
        出现异常,则执行的代码
    else:
        如果try语句中的代码没有出现异常,则执行else代码
    finally:
        无论程序是否出现异常,系统在异常处理后都会自动执行finally
    

    13. 模块

    13.1 导入方式

    # 使用import导入模块
    import 模块名
    import 模块名 as 别名 # 别名建议使用大驼峰
    
    # 调用方式
    模块名.函数名()
    
    # 使用from...import导入模块
    from 模块名 import *
    from 模块名 import 函数名1,函数名2...
    
    # 调用方式
    函数名1()
    

    13.2 内置模块

    常见的内置模块:time、random、os 等

    import random
    
    print('生成0-10的随机数:', random.randint(0,10))
    

    13.3 自定义模块

    模块名称不能是中文,不能以数字开头

    自定义的模块名称不能和内置模块名相同,如time、random

    # demo1.py
    def sum(x,y):
        return x + y
    
    # demo2.py
    from demo1 import sum
    
    print(sum(1, 2)) # 3
    

    14. 文件

    语法

    文件对象 = open(file_name, mode, [encoding])

    name:打开的文件名 或 包含文件所在的具体路径

    mode:设置打开文件的模式,默认为r,只读模式

    以下模式仅针对文本类型的读写操作(常用)

    模式 效果
    r 只读
    w 只写。打开文件并清空原内容,如果文件不存在则新建
    a 追加。打开文件但不清空原内容,在原内容尾部追加内容,如果文件不存在则新建

    添加b字符可以组成成针对二进制格式文件(图片、视频和音频等)的读写操作。如rb、wb、ab

    encoding:编码格式。默认为gbk

    14.1 读

    python.txt

    Life is Short, i study Python!
    kazi
    18
    

    14.1.1 read

    # 读取size字节文本内容,不写则默认读取全部
    文件对象.read([size]) 
    
    # read.py
    f = open('python.txt', 'r')
    content = f.read()
    print(content)
    f.close()
    
    """
    输出结果:
    	Life is Short, i study Python!
    	Kazi
    	18
    """
    

    14.1.2 readline

    # 一次读取一行内容
    # 每运行一次readline()函数,其就会将文件的指针向下移动一行
    # 适合读取大文件
    文件对象.readline() 
    
    # readline.py
    f = open('python.txt', 'r')
    
    while True:
        content = f.readline()
        if not content:
            break
        else:
            print(content)
    
    f.close()
    
    """
    输出结果:
    	Life is Short, i study Python!
    	Kazi
    	18
    """
    

    14.1.3 readlines

    # 一次性读取文件的所有内容
    # 返回结果是一个列表,列表中的每一个元素都是文件中的一行
    # 适合读取小文件
    文件对象.readlines()
    
    # readlines.py
    f = open('python.txt', 'r')
    
    # ['Life is Short, i study Python!\n', 'aaaa\n', 'bbbb']
    print(f.readlines())
    
    """
    输出结果:
    	['Life is Short, i study Python!\n', 'Kazi\n', '18']
    """
    

    14.2 写

    只能写入字符串格式的内容

    文件对象.write(待写入的内容)
    
    # demo.py
    f = open('python.txt', 'w', encoding='utf-8')
    
    f.write('我是Kazi')
    

    14.3 关闭

    文件打开以后需要占用计算机资源

    文件对象.close
    

    14.4 with(推荐使用)

    自动调用关闭文件操作,即使出现异常也会自动执行关闭文件操作

    with open('python.txt', 'r') as f:
    	content = f.read()
    
    print(content)
    

    15. 类

    语法

    class 类名(object):
    	# 属性
        # 方法
        
    # 类的实例化
    对象 = 类名()
    

    举个栗子

    # demo.py
    class Person(object):
        # 初始化属性
        # __init__是魔法方法,代表对象创建时默认执行的方法
        # self代表对象本身,是必要参数
        def __init__(self,name, age):
            self.name = name
            self.age = age
            
        def introduce(self)
         	print(f'我是{self.name},今年{self.age}岁')
            
    student = Person('Kazi',18)
    student.introduce()
    
    """
    输出结果:
    	我是Kazi,今年18岁
    """
    

    16. 练手题目

    需求分析:
    	创建一个学员信息管理系统
    	
        进入系统显示系统功能界面,功能如下:
        1、添加学员信息
        2、删除学员信息
        3、修改学员信息
        4、查询学员信息(只查询某个学员)
        5、遍历所有学员信息
        6、保存学员信息
        7、退出系统
        
        系统共7个功能,用户根据自己需求选取
    

    参考代码

    student.py

    # 定义一个Student类
    class Student(object):
        # 初始化属性信息
        def __init__(self, name, age, gender, mobile, description):
            self.name = name
            self.age = age
            self.gender = gender
            self.mobile = mobile
            self.description = description
    
        # 用于打印输出学员信息
        def __str__(self):
            return f'===> 姓名:{self.name},年龄:{self.age},性别:{self.gender},电话:{self.mobile},简介:{self.description}'
    
    

    student_cms.py

    from student import Student
    from os import path
    from time import sleep
    
    
    # 确认是否步骤执行
    def is_continue(string):
        flag = input(f"是否{string}(Y/N):")
        if flag.lower() == 'y':
            return True
        else:
            return False
    
    
    class StudentCMS(object):
        # 初始化
        def __init__(self):
            # 保存所有学员对象信息
            self.studentList = []
    
        # 帮助文档
        @staticmethod
        def show_help():
            print('*' * 40)
            print('学员信息管理系统(面向对象版)')
            print('-' * 20)
            print('\t1.添加学员信息')
            print('\t2.删除学员信息')
            print('\t3.修改学员信息')
            print('\t4.查询学员信息')
            print('\t5.遍历所有学员信息')
            print('\t6.保存学员信息')
            print('\t0.退出系统')
            print('*' * 40)
    
        # 添加
        def add_student(self):
            while True:
                name = input('添加学生的姓名:')
    
                for item in self.studentList:
                    if name == item.name:
                        print('已有相同名字,请重新输入')
                        break
                else:
                    break
    
            age = int(input('添加学生的年龄:'))
            gender = input('添加学生的性别:')
            mobile = input('添加学生的电话:')
            description = input('简介:')
            # 注意,这里添加的是Student对象,不是字典
            self.studentList.append(Student(name, age, gender, mobile, description))
            print('添加成功,请注意保存数据')
    
        # 删除
        def del_student(self):
            name = input("需要删除哪位学生(姓名)?")
    
            for item in self.studentList:
                if item.name == name:
                    if is_continue('删除'):
                        self.studentList.remove(item)
                        print('删除成功,请注意保存数据')
                        break
                    else:
                        print('未删除学生,返回菜单')
                        return
            else:
                print('该学生姓名不存在')
                return
    
        # 修改
        def edit_student(self):
            name = input("需要修改哪位学生(姓名)?")
            for item in self.studentList:
                if item.name == name:
                    item.name = input('请输入修改后的学员姓名:')
                    item.age = int(input('请输入修改后的学员年龄:'))
                    item.gender = input('请输入修改后的学员性别:')
                    item.mobile = input('请输入修改后的学员电话:')
                    item.description = input('请输入修改后的学员简介:')
                    print('修改成功')
                    break
            else:
                print('error:该学生姓名不存在')
                return
    
        # 查询单个学生信息
        def show_student(self):
            name = input("查询哪位学生(姓名)信息?")
            flag = True
            for item in self.studentList:
                if name in item.name:
                    print(item)
                    flag = False
    
            if flag:
                print('无学生信息')
    
        # 遍历所有学生信息
        def show_all(self):
            if not self.studentList:
                print('无学生数据,返回菜单')
            else:
                for item in self.studentList:
                    print(item)
    
        # 读取数据
        def load_student(self):
            if not path.exists('student.txt'):
                # 无文件:新建
                with open('student.txt', 'w', encoding='utf-8') as file:
                    file.write('')
            else:
                # 有文件:读取内容
                with open('student.txt', 'r', encoding='utf-8') as file:
                    content = file.read()
                    if content:
                        # 1、将字符串格式转成列表
                        data = eval(content)
                        # 2、将每个元素通过Student类实例化成对象,最后存储到学生列表中
                        self.studentList = [
                            Student(item['name'], item['age'], item['gender'], item['mobile'], item['description']) for item
                            in
                            data]
                    else:
                        return
    
        # 保存数据
        def save_data_to_file(self):
            with open('student.txt', 'w', encoding='utf-8') as file:
                # 将列表中的对象结构转化成字典
                data = [item.__dict__ for item in self.studentList]
                file.write(str(data))
                print('数据已成功保存')
    
            file.close
    
        # 对象执行的入口方法
        def start(self):
            # 只需要在开始时读取数据
            self.load_student()
            print('正在玩命加载中...', end='\n\n')
            sleep(1)
            while True:
                StudentCMS.show_help()
                try:
                    number = int(input('请输入您要执行的功能编号:'))
    
                    if number == 1:
                        self.add_student()
                    elif number == 2:
                        self.del_student()
                    elif number == 3:
                        self.edit_student()
                    elif number == 4:
                        self.show_student()
                    elif number == 5:
                        self.show_all()
                    elif number == 6:
                        self.save_data_to_file()
                    elif number == 0:
                        if is_continue('退出系统'):
                            print('退出系统成功,感谢您使用学员信息管理系统!')
                            break
                        else:
                            print('未退出,返回菜单')
                    else:
                        print('很抱歉,您输入的编号有误,请重新输入')
                except Exception as e:
                    print(f'输出错误日志----{e}')
                    print('发送异常,系统退出')
    
    

    main.py

    from student_cms import StudentCMS
    
    # 执行入口
    if __name__ == '__main__':
        cms = StudentCMS()
        cms.start()
    
    物联沃分享整理
    物联沃-IOTWORD物联网 » 快速开始使用 Python

    发表评论