欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python入门必看

程序员文章站 2024-02-02 21:52:34
...

Python入门及基础

Python - 开源通用的脚本编程语言
开源 通用

计算机
处理器 CPU
存储器 内存/硬盘
I/O设备

编程语言
机器语言 0101010
低级语言(汇编) add 3 5
高级语言 跨平台
编译型 把文本代码转成二进制可执行文件
C/C++ Go
解析型 运行解析型实时解析文本代码(脚本语言)
shell javascript NodeJs

    编译解析型  将文本代码转二进制代码(不可执行), 再使用解析型解析二进制代码运行
        java python php C#

Python的发展史
http://120.76.144.128/python

学习编程语言的流程:
熟悉编程语言的发展史
搭建编程语言的开发环境(安装解析器或编译器 编辑器)
编写hello程序 -> 代码编辑流程及代码执行流程
变量 -> 数据类型
运算符(操作符) -> 表达式 -> 语句
流程控制语句 -> 顺序/分支/循环 -> if/while/for
函数 -> 打包代码
数组 -> 复合类型

类和对象 -> 面向对象的编程思想
系统编程
    文件I/O 进程及进程间通讯 网络

Python开发环境
官网: python.org
提供下载python源代码和查看官方手册
中文官方手册:
http://usyiyi.cn/translate/python_352/index.html

安装: sudo apt install python3 -y

python      对应python版本2 2020停止维护
python3     对应python版本3

测试:
    python --version
    python3 --version

编辑Python代码: vim hello.py
    print("hello world")

运行Python代码:
    python3 hello.py

直接运行python代码文件:
    在python代码文件第一行指定python解析器路径
    #!/usr/bin/python3

    更通用的写法(不管python3放在哪,只要在PATH变量中存在):
        #!/usr/bin/env python3

Python交互开发模式
    交互开发模式用于测试和调试
    运行python3可进入交互开发模式(ctrl + D退出)

    推荐交互模式使用ipython3, 好处谁用谁知道
    安装:
        pip3工具是python模块或包管理工具
            安装pip3工具: sudo apt install python3-pip -y

        通过pip3工具安装ipython3:
            pip3 install ipython

        ipython3的功能:
            颜色显示用于区分
            直接可运行shell命令
            补全功能强大
            查看帮助简单

Python程序如何执行:
    Python是属于编译解析型的脚本语言
    为了提高Python执行效率, Python解析会将*.py文件编译成字节码(二进制)
    再给Python虚拟机(PVM)去解析字节码运行

变量
Python变量是动态类型, 根据值的类型才能确定变量的类型
Python变量定义时必须赋初始值
标识符:
内置标识符
自定义标识符: 变量名 函数名 类名…

定义变量/变量赋值
    变量名 = 值

多目标赋值:
    变量1 = 变量2 = 变量3 = 值

元组赋值:
    变量1, 变量2, 变量3 = 变量值1, 变量值2, 变量值3

访问变量
    变量名

删除变量
    del 变量名

变量的值存储于内存
    Python变量赋值一切都是引用赋值
        变量名只是符号与值的内存地址绑定
    获取变量的地址: id函数

变量命名规范:
    严格区分大小写
    数字 字母 特殊符合组合(个别特殊符号可以组合 如: 下划线)
    但不能以数字和特殊符号开头(下划线除外)
    如果不了解下划线的特殊意义不推荐使用
    Python3支持中文但不建议使用中文命名(容易引发乱码问题)
    不能与Python关键词重名
        查看Python关键词有哪些:
            import keyword
            print(keyword.kwlist)

Python提供常用的数据结构(值的类型)
    数字
        整型        int
        浮点型      float
        复数
    字符串          str/repr
    布尔型          bool(Ture/False)
    列表            list        [,]
    元组            tuper       (,)
    字典            dict        {:, }
    集合            set         {,}
    NoneType        None

    获取变量的类型: type函数

操作符
算术操作符 + - * / % ** //
比较操作符 > >= < <= == !=
10 < b < 100
赋值操作符 =
增强赋值操作符 += -= *= /= %= **= //= &= |= ^= <<= >>=
逻辑操作符 and or not
位操作符(数字) & | ^ << >> ~
成员操作符 in/not in
身份操作符 is/is not

根据操作符类型:
    单目运算符/一元运算符(只针对一个值操作)   ~ - +
    双目运算符/二元运算符(必须左值和右值存在)
    三目运算符/三元运算符(if else写在一行, 赋值使用)
        b = 0 if a > 10 else 1

Python语句语法
Python程序由多个逻辑行组成

物理行: 人眼看到的行为物理行(行尾必须终止符的字符序列)
    windows: \r\n
    Unix: \n
    MacOS: \r

逻辑行: 包含一个或多个物理行

多个物理行连接一个逻辑行:
    显式连接        \
        不推荐使用显示连接
    隐式连接        所有括号 (推荐使用小括号)

一个物理行包含多个逻辑行(不建议使用):
    a = 34 ; print(a)

空白行: 交互模式代表一段代码的结束

注释:  #代表注释符
    从注释符开始后面的内容为注释
    注释符针对物理行生效

分隔符: , () {} [] : ; @ =

缩进
    Python中标识代码块强制使用缩进对齐来区别(其它语言使用{}来区别)
    如果缩进没有对齐会报语法错误
    Tab和空格为缩进前导符
        Tab键在不同平台下解析不同
        Tab ==>     9
        空格 ==>    32

        一定要确定是使用Tab还是空格, 一般文本编辑器都提供Tab转换成空格
        空格:
            html/css    2个空格
            其它所有    4个空格

简单的I/O函数
input 输入
s = input([“输入提示符”])
返回用户输入的字符串

print       输出
    print(变量, [...], sep=' ', end='\n', flush=False)
        sep     控制前面输出多个变量之间分隔符
        end     控制输出终止符
        flush   是否刷新缓冲区(默认为行缓冲)

流程控制
分支 if
if 条件:
条件成立执行的代码块

    if 条件:
        条件成立执行的代码块
    else:
        条件不成立执行的代码块

    if 条件1:
        条件1成立执行的代码块
    elif 条件2:
        条件2成立执行的代码块
    elif 条件3:
        条件3成立执行的代码块
    ...
    else:
        以上条件都不成立执行的代码块

    三目运算符: 赋值使用
        if a > 10:
            s = 1
        else:
            s = 0

        s = 1 if a > 10 else 0

循环 while
    while 条件:
        条件成立执行的循环体代码块

    循环控制语句:
        break       退出循环
        continue    跳过本次循环

空语句
    pass        没有任何意义,只是占位使用

生成一个范围的数字  range
    返回可迭代对象(生成器对象)
    range(10)           生成0 - 9
    range(1, 10)        生成1 - 9
    range(-10, 10)      生成-10 - 9
    range(1, 10, 2)     生成1 3 5 7 9
    range(10, 1, -1)    生成10 9 8 7 6 5...

for         迭代对象的结构
    for 迭代变量 in 可迭代对象:
        print(迭代变量)

    模拟循环(次数固定推荐使用for循环):
        for i in range(10):
            print(i)

延时
    import time

    time.sleep(1)       延时一秒
    time.sleep(0.1)     延时100毫秒

函数 - 打包代码
一段代码要在多个地方使用, 就要使用函数(不要复制代码)

函数定义:
    def 函数名(形参列表...):
        函数要打包的代码

函数调用:
    函数名(实参列表...)

变量的类型:
    局部变量    在函数内部定义的变量, 只能在函数内部使用
    全局变量    在函数外部定义的变量, 全局使用
                在函数内部修改全局变量必须使用global声明

函数的参数:
    函数的参数是以逗号为分隔符,可以传递任意个
    在函数内部定义变量不能在函数外部访问

    实参个数必须与形参数一致
    函数调用时实参变量的值赋给形参变量, 修改形参变量不影响实参变量

函数的返回值
    默认情况下函数执行到最后一条代码也会退出, 并且返回None
    return      退出函数

例:
    def out(s):
        print("hello: ", s, sep='')

    out("world")

库 -> 模块
python中模块就是一个*.py文件, 通过import导入python文件


代码规范
缩进对齐 使代码具有层次感

空行        使代码具有段落感
    import代码块上下加空行
    函数实现下面加两个空行
    方法实现下面加一个空行
    流程控制语句上下加空行
    变量定义之间建议加空行

空格        使代码更清晰
    双目操作符两边加空格
    逗号后面必须加空格
    括号后面不能加空格
    函数参数赋值的等于号两边不能加空格

折行        使代码更容易维护(提高代码可读性)
    一行代码量不能超过80个字符
    容易超过80个字符的情况:
        条件表达式      用括号括起来, 在逻辑运算符前面折行
        字符串          用小括号括起来分段
        函数参数        在逗号后面折行
        三目操作符      改写成if语句

命名规范        提高代码可读性

python调试 - pdb模块
python3 -m pdb hello.py
进入hello.py调试交互模式

pdb命令
    q       退出
    h/?     获取帮助
        h       列表pdb所有命令
        h q     获取q命令的帮助
    l       列出python源代码 (默认列出11行代码,再按l继续列出接下来的代码)
        l 10    列出第10行源代码及上下各5行代码

    单目调试:
        b       设置断点
            b 3 给第3行源代码设置断点

        c       让程序运行到断点停止

        n       下一行, 会跳过函数

        s       下一步,会进入函数

        p       打印变量的值
            p a, b 打印a和b的值

vim操作补充
批量缩进 > <
自动排版 =

文件浏览器  F7
    回车    直接打开
    t       vim标签
    gt/gT   vim标签切换

快速定位
    ,,f
    ,,j
    ,,k
    ,,w

注释
    ,cs     批量注释
    ,cc     单行注释
    ,cu     取消注释

跨终端vim复制(依赖/tmp/kyo.vim文件)
    "y      复制
    "p      粘贴

高亮单词 #
    再按n/N进行切换定位

取消高亮    :noh

命令组合:
    dw      删除单词
    d^      删除光标到行首字符位置
    vip     选取一段代码
    V10j    选取当前行及向下10行
    xp      交换两个字符位置
    di"     删除光标所在双引号包含的内容

vim命令历史操作界面: ,u

插入79个-/=作为分隔符
    ,kl
    ,kg

折叠
    空格    自动折叠
    zM      折叠所有可折叠内容
    zR      打开所有折叠内容

去除window换行: cM

去除行尾空白字符: ,ws

打开Python文件自动生成主代码, 将以下代码复制到~/.vimrc.local文件里:

function! KyoPythonEntry()
if getfsize(GetFileName()) != -1
return
endif
call setline(1, [’#!/usr/bin/env python3’, ‘’,
‘def main():’, ’ pass’, ‘’,
‘if name == “main”:’, ’ main()’])
return setpos(’.’, [bufnr(’%’), 4, 4])
endfunction

autocmd FileType python call KyoPythonEntry()