python3教学

Author : zbzhen,        Modified : Fri May 24 09:43:46 2024

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

版本问题

版本问题的内容源于AI, 没有经过测试

在 Python 中,你可以使用虚拟环境管理工具(如 virtualenv、pyenv 等)来创建和切换虚拟环境,同时也可以使用 pyenv 来管理多个 Python 版本。

  1. 使用虚拟环境管理工具创建和切换虚拟环境

    a. 使用 virtualenv

    # 安装 virtualenv
    pip install virtualenv
    
    # 创建虚拟环境
    virtualenv myenv
    
    # 激活虚拟环境(Windows)
    myenv\Scripts\activate
    
    # 激活虚拟环境(Linux/Mac)
    source myenv/bin/activate
    

    b. 使用 pyenv-virtualenv(需要安装 pyenv):

    # 安装 pyenv 和 pyenv-virtualenv
    # 具体安装方法可查看 pyenv 的文档
    # https://github.com/pyenv/pyenv#installation
    
    # 创建虚拟环境
    pyenv virtualenv <python_version> myenv
    
    # 激活虚拟环境
    pyenv activate myenv
    
    # 离开虚拟环境
    pyenv deactivate
    
  2. 使用 pyenv 管理多个 Python 版本

    # 安装 pyenv
    # 具体安装方法可查看 pyenv 的文档
    # https://github.com/pyenv/pyenv#installation
    
    # 安装所需 Python 版本
    pyenv install <python_version>
    
    # 列出已安装的 Python 版本
    pyenv versions
    
    # 设置全局 Python 版本
    pyenv global <python_version>
    
    # 设置本地目录的 Python 版本
    pyenv local <python_version>
    

通过这些方法,你可以很方便地管理不同的 Python 环境和版本。


要在 Python 中创建多个虚拟环境,你可以使用 Python 的内置模块 venv。以下是创建多个虚拟环境的一般步骤:

  1. 安装 Python:确保已经安装 Python,并且可以在命令行中使用 python 命令。

  2. 创建虚拟环境:使用 venv 模块创建虚拟环境。你可以指定不同的目录来创建多个独立的环境。

  3. 激活虚拟环境:对于每个虚拟环境,需要在使用之前激活它。

下面是具体的步骤:

1. 创建虚拟环境

在命令行中执行以下命令来创建虚拟环境:

python -m venv myenv1
python -m venv myenv2
python -m venv myenv3

这将分别创建三个虚拟环境,分别命名为 myenv1myenv2myenv3。你可以根据需要创建更多的环境。

2. 激活虚拟环境

在 Windows 上:

myenv1\Scripts\activate

在 macOS 和 Linux 上:

source myenv1/bin/activate

这样就激活了名为 myenv1 的虚拟环境。要退出虚拟环境,可以执行以下命令:

deactivate

同样的步骤也适用于 myenv2myenv3

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