• {{article.mytitle}}
  • python3教学

    Author : zbzhen,       Last modification time : Wed Apr 12 14:14:46 2023

    1. 返回首页

    首页地址https://kz16.top/na
    本文来源https://kz16.top/na/python3

    2. python安装和运行

    2.1. python优势

    • 免费简单
    • 时代主打
    • 跨平台
    • 安装包体积小且可优盘携带
    • 第三方软件多且文档完善
    • 容易混编
    • 面向对象,很方便封装
    • 开发快
      ...

    2.2. 软件安装

    所有的软件都应该只从官网下载,教程也应用以官网的为主!

    2.2.1. 正常安装

    在python官网https://www.python.org/下载python3,
    安装好后,打开cmd
    输入python或者python3查看python版本

    网络慢推荐用淘宝镜像
    https://registry.npmmirror.com/binary.html?path=python/

    注:如果电脑装有python2则用命令python3

    注:linux或Mac系统自带python2, 但python2将停止更新,现在统一用python3.

    2.2.2. 非root用户在Linux上安装

    学生账户,肯定是没有root权限的,但是要安装python3科学计算包该怎么办?

    为了省事,可以直接安装了anoconda, 这里以python3.7为例子
    先去官网找到合适的版本

    https://www.anaconda.com/distribution/#linux

    可以直接在linux中下载,例如直接在linux命令行中输入

    wget https://repo.anaconda.com/archive/Anaconda3-2019.03-Linux-x86_64.sh

    这样就可以下载好 Anaconda3-2019.03-Linux-x86_64.sh
    然后再输入

    bash Anaconda3-2019.03-Linux-x86_64.sh

    慢慢看提示,也就是两个操作,回车空格

    环境变量的配置

    ~/.bashrc文件最后面添加一行代码

    PATH=$PATH:/home/yourname/anaconda3/bin/

    然后命令行输入

    source ~/.profilesource ~/.bashrc

    2.3. 软件运行

    在桌面上创建test.py,写上

    # -*- coding: utf-8 -*-
    print("hello, 您好")
    

    打开终端输入
    python test.py
    运行结果为hello, 您好,第一行代码# -*- coding: utf-8 -*-是为了显示中文。

    2.4. 打开终端的方法

    windows打开当前路径的终端窗口方法:

    • 按紧Shift键在文件夹的空白处点击鼠标右键,打开powershell

    • 或者用编辑器notepad++打开test.py文件,鼠标右键点击notepad++窗口的test.py文件名字选择Open Containing Folder in cmd

    Mac打开当前路径的终端窗口方法:

    • 直接拖动要打开的文件夹终端

    • 打开finder的服务偏好设置, 勾选"新建位于文件夹位置的终端"选项, 以后可以在文件夹图标上右键选择打开到终端.

    2.5. 编辑器推荐

    2.5.1. Visual Studio Code

    windows建议用免费且体积很小的Visual Studio Code
    推荐用免费跨平台的编辑器Visual Studio Code,官网https://code.visualstudio.com/

    windows或deepin系统快捷键Ctrl + Shift +C
    可直接打开当前文件夹所在路径的终端

    2.5.2. notepad++(不太推荐)

    notepad++(https://notepad-plus-plus.org/)免费且体积很小,但它只支持windows,选择下载英文版

    缩进是python语法一部分,所以建议把notepad++的Tab 变成空格
    Setting -> Preferences -> Language Menu/Table Settings -> 勾选 Repalce by space.

    设置快捷键运行参考
    https://stackoverflow.com/questions/1702586/how-to-execute-a-python-file-in-notepad

    2.5.3. jupyter notebook

    也可以直接使用jupyter notebook交互运行

    2.6. 常用第三方包简介

    • numpy 矩阵运算
    • scipy 数值计算
    • sympy 符号运算
    • matplotlib 画图
    • pandas 表格数据处理
    • jupyter notebook 交互运行

    一行命令安装

    sudo apt update; sudo apt install python3-pip -y; pip install numpy scipy matplotlib pandas jupyter 
    
    或采用清华源
    
    sudo apt update; sudo apt install python3-pip -y; pip install numpy scipy matplotlib pandas jupyter  -i https://pypi.tuna.tsinghua.edu.cn/simple
    
    

    2.7. 第三方包安装

    • 如果有python2
      python3 -m pip install PackageName

    • 只安装过python3
      pip install PackageName

    • pip list可查看已经安装了的所有包名

    • pip install --upgrade SomePackage升级包

    pip批量安装package

    • 将需要安装的包保存在aa.txt

    • cdaa.txt所在目录,运行:

      pip install -r aa.txt

    解决速度慢的问题

    因为网络原因导致下载慢,
    可以在使用pip的时候加参数-i + 网址
    例如:

    pip install PackageName -i https://pypi.tuna.tsinghua.edu.cn/simple
    

    则使用的是清华源,
    其它源:

    解决安装报错的问题
    先在https://www.lfd.uci.edu/~gohlke/pythonlibs/下载好相应版本的XXX.whl文件,再在该文件夹下打开终端输入

    pip install XXX.whl

    前面介绍的常用的python包一般不会出现问题,其它不是很常用的包可能会出问题,例如绘制三维图的mayavi

    mayavi的安装顺序

    traits
    pyface
    traitsui
    apptools
    envisage
    pygments
    Sphinx
    mayavi + vtk //它们是一起的
    pyqt5
    

    想在jupyter notebook中显示mayavi三维图需要输入命令

    jupyter nbextension install --py mayavi --user
    jupyter nbextension enable --py mayavi --user
    

    2.8. 第三方包卸载

    • 单个卸载pip uninstall PackageName
    • 全部卸载
      • 将需要卸载的包保存在aa.txt
      • cdaa.txt所在目录,运行:
        pip uninstall -r aa.txt

    备注:需要卸载的包可从pip freeze得到

    pip freeze            # 显示已安装的包名及版本
    pip freeze > aa.txt   # 将已安装的包名及版本写入aa.txt
    

    3. python简介

    3.1. 基本语法

    3.1.1. 注释

    • 单行注释代码前面加 # 需要注释的内容
    print(1/2)   # 0.5
    print(1//2)  # 0
    
    • 块注释代码前面加 “”“ 需要注释的内容 ”“”

    3.1.2. 循环

    for i in range(3):
        print(i)
    for i, v in enumerate([10,20,30]):
        print("i = ", i)
        print("v = ", v)
    

    结果为

    0
    1
    2
    i =  0
    v =  10
    i =  1
    v =  20
    i =  2
    v =  30
    

    缩进是python语法的一部分,冒号后头接缩进,

    python不需要声明变量类型,用缩进取代括号,使得python代码非常简洁

    大部分编辑器批量缩进的方法是,选择代码块按Tab

    批量缩进的方法是,选择代码块按Shfit Tab

    3.1.3. 判断

    for i in range(5):
        if 1 <= i < 3:
            print(i)
        elif i/3 == 1:
            print(i*(-1))
        else:
            print(i+100)
    

    结果为

    100
    1
    2
    -3
    104
    

    3.2. 函数

    3.2.1. 函数初步

    函数可以封装代码块,并且可以重复利用

    #  file name test1.py
    def add(a, b):
        return a + b
    print(add(1, 3))  # 4
    

    终端输入python test1.py显示结果为4

    #  file name test2.py
    from test1 import add
    print(add(1, 2))  # 4 3
    

    终端输入python test1.py显示结果为

    4
    3
    

    test2.py的结果会把test1.py的测试运行一次,为此可以给个判断if __name__ == "__main__":避免这种不合理现象

    #  file name test1.py
    def add(a, b):
        return a + b
    if __name__ == "__main__":
        print(add(1, 3))  # 4
    

    再次在终端输入python test2.py显示结果为3

    小技巧:终端的输入,可以按上方向键,跳到上一次的终端命令,按下方向键,跳到下一次的终端命令,Tab键可以补全文件或文件夹名字

    test2.py该成

    #  file name test2.py
    import test1
    print(test1.add(1, 2))  
    

    运行结果和原来一模一样

    3.2.2. 函数简化

    匿名函数

    f = lambda x, y : x + y
    print(f(2, 3)) # 5
    

    3.2.3. 函数进阶

    python的函数非常强大,它可以接受各种类型参数,同时支持多个不同的对象输出。

    例如

    def func1(a, b=3):
        c = a + 1
        d = b + 2
        return c, d
    print(func1(4, 1)) # (5, 3)
    print(func1(4))    # (5, 5)
    

    该函数func1的参数b可以缺省,默认值为3,它返回两个数,

    下面给个含参变量的函数例子f(x)=ax+1f(x) = ax+1,其中aa为参数

    def func2(a):
        def f(x):
            return a*x + 1
        return f
    g = func2(3)
    print(g(4)) # 13
    

    3.3. 类

    类可以封装函数,从而提高代码的利用率和可读性
    下面给出例子

    #  file name classtest1.py
    class Box(object):
        def __init__(self, high, length):
            self.high = high
            self.length = length
            
        def area(self):
            return self.high * self.length
    
        def cir(self):
            return 2*(self.high + self.length)
            
        def getCoord(self, center):
            """
            input center coord return 4 vertex coords 
            4______3
            |      |
            1------2
            """
            a, b = center
            h = 0.5*self.high
            l = self.length
            return [a-l, b-h], [a+l, b-h], \
                    [a+l, b+h], [a-l, b+h]
    if __name__ == "__main__":
        box1 = Box(3,2)
        print(box1.area())  # 6
        print(box1.high)    # 3
        print(box1.getCoord([0, 1]))    
        help(Box.getCoord)
    
    #  file name classtest2.py
    import classtest1 as ct  
    box1 = ct.Box(3,2)
    print(box1.area())  # 6
    print(box1.high)    # 3
    print(box1.getCoord([0, 1]))    # 3
    help(ct.Box.getCoord)
    

    import classtest1 as ct表示把classtest1重命名为ct

    其实这个classtest1.py可以有多个类或函数,如果想省事,可以选择使用from classtest1 import *一次性导入classtest1中的所有的函数或类,但是不太建议使用,建议用下面的命令
    from classtest1 import classname1, classname2

    在终端输入python classtest1.py运行结果为

    6
    3
    ([-2, -0.5], [2, -0.5], [2, 2.5], [-2, 2.5])
    Help on function getCoord in module __main__:
    
    getCoord(self, center)
        input center coord return 4 vertex coords
        4______3
        |      |
        1------2
    

    在终端输入python classtest2.py运行结果为

    6
    3
    ([-2, -0.5], [2, -0.5], [2, 2.5], [-2, 2.5])
    Help on function getCoord in module classtest1:
    
    getCoord(self, center)
        input center coord return 4 vertex coords
        4______3
        |      |
        1------2
    

    3.4. python模块和包

    通过前面的例子,对python的函数或类用有了初步认识,我们知道代码块可以用函数封装,函数可以用类封装,它们都可以放到一个.py供其它程序引用。多个类又可以集中在一个或多个文件下,当.py文件多了,我们自然想到的办法是用文件夹管理,我们把这些.py文件的最外层文件夹称为包,包的子文件夹称为模块。

    可参考http://www.runoob.com/python3/python3-module.html

    3.5. 版本问题

    早期版本, 例如3.5, 不支持print(f"{a}")的格式, 解决方案:

    • 安装 pip install future-fstrings
    • py文件首行添加 # -*- coding: future_fstrings -*-

    4. 常用的python第三方包简介

    下面列举的这些经典的包,都可以直接google或百度直接找名字,搜索结果第一般第一条就是官网。

    下面对python第三方包的简介属于个人看法,仅供参考

    4.1. numpy简介

    numpy是python的一个用于矩阵运算的第三方包
    英文官网
    https://numpy.org/
    中文官网
    https://www.numpy.org.cn/

    4.2. scipy简介

    scipy是python的一个用于数值计算的第三方包
    官网
    https://www.scipy.org/
    教程
    https://docs.scipy.org/doc/scipy/reference/tutorial/index.html

    4.3. matplotlib简介

    matplotlib是python的一个用于画图的第三方包
    官网
    https://matplotlib.org/

    4.4. sympy简介

    sympy是python的一个用于符号运算的第三方包
    官网
    https://www.sympy.org/en/index.html
    文档
    https://docs.sympy.org/latest/index.html

    4.5. pandas简介

    pandas是python的一个用于处理表格的第三方包
    官网

    文档
    https://pandas.pydata.org/pandas-docs/stable/

    4.6. jupyter notebook简介

    官网
    https://jupyter.org/

    特点:

    • jupyter的存在使得代码能直接在网页上交互运行,并且把代码与markdown文档结合起来
    • jupyter不仅支持python,还支持其它语言R, C++, Ruby, julia

    5. 返回首页

    首页地址https://kz16.top/na
    本文来源https://kz16.top/na/python3


    仅供参考,部分漏洞在所难免
    欢迎转载,转载请指明来源,
    请勿用于商业
    作者:Zhou Bingzhen
    2019.11.21