Python学习从0开始——004版本升级和定义函数

Python学习从0开始——004版本升级和定义函数

一、match+版本升级

match是Python3.10以后的新特性,当前系统的版本为3.8,用不了。以下操作没有解决编译器报错问题,但是终端可以正常运行含有match的函数,可跳过。

#打开右侧的终端,在终端执行以下命令
#输入:查看系统命令
cat /etc/os-release
#输出
NAME="Ubuntu"
VERSION="20.04.5 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.5 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

尝试版本升级,升级到3.10.4

#打开右侧的终端,在终端执行以下命令
#通过git克隆pyenv的仓库并修改配置
git clone https://github.com/pyenv/pyenv.git ~/.pyenv  #可能要执行两次,第一次在80左右会断掉,再执行一次就可以
#或者 git clone https://gitee.com/chenshuchuan/pyenv.git ~/.pyenv 用gitee快一点
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc  
echo 'eval "$(pyenv init -)"' >> ~/.bashrc  
exec "$SHELL"
#使用pyenv安装Python
pyenv install 3.10.4  #有点慢,然后有警告,缺少几个模块
#使用sudo命令安装缺少模块,首先安装sudo命令再安装模块
#安装sudo命令
apt-get update  
apt-get install sudo
#安装缺失模块
sudo apt-get install libbz2-dev #解决 _bz2 模块缺失问题
sudo apt-get install libncurses5-dev libncursesw5-dev #解决 _curses 模块缺失问题
sudo apt-get install libreadline-dev #解决 readline 模块缺失问题
sudo apt-get install libsqlite3-dev  #解决 _sqlite3 模块缺失问题
sudo apt-get install liblzma-dev #解决 _lzma 模块缺失问题
#重新安装python
pyenv uninstall 3.10.4  
pyenv install 3.10.4 #等了六七分钟,安装时cpu利用率飙升到99.54%,内存升到1020M,安装完成恢复正常
#设置全局的Python版本
pyenv global 3.10.4
#查看版本
python -V
Python 3.10.4

安装截图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
开始安装缺失模块
在这里插入图片描述
卸载重装
在这里插入图片描述

以上操作完成后关闭并重新打开项目,match仍旧报错,检查项目

在这里插入图片描述
发现环境依赖还是3.9
在这里插入图片描述
此时再次查看版本号,发现环境变成了3.9,没头绪,莫名其妙,删了这个项目然后重建

删除掉所有项目,然后从Inscode新建一个项目

git clone https://gitee.com/chenshuchuan/pyenv.git ~/.pyenv 
echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc  
echo 'eval "$(pyenv init -)"' >> ~/.bashrc  
exec "$SHELL"
#使用pyenv安装Python
pyenv install 3.10.4  #有点慢,然后有警告,缺少几个模块
#使用sudo命令安装缺少模块,首先安装sudo命令再安装模块
#安装sudo命令
apt-get update  
apt-get install sudo
#安装缺失模块
sudo apt-get install libbz2-dev #解决 _bz2 模块缺失问题
sudo apt-get install libncurses5-dev libncursesw5-dev #解决 _curses 模块缺失问题
sudo apt-get install libreadline-dev #解决 readline 模块缺失问题
sudo apt-get install libsqlite3-dev  #解决 _sqlite3 模块缺失问题
sudo apt-get install liblzma-dev #解决 _lzma 模块缺失问题
#重新安装python
pyenv uninstall 3.10.4  
pyenv install 3.10.4 
#设置全局的Python版本
pyenv global 3.10.4
#创建虚拟环境
python3.10 -m venv venv
#激活
cd venv/
source bin/activate

在这里插入图片描述

然后关掉项目,重新打开,还是这个问题……
在这里插入图片描述

# 打开终端
python3.10 
subject = "Hello, world!"  
match subject:  
    case "Hello, world!":  
        print("Exact match!")  
    case "Hello, ":  
        print(f"Matched prefix and captured!")  
    case _:  
        print("No match found.")

在这里插入图片描述

终端正常运行,编译器里提示错误,而且输入mat没有match的匹配项,其它关键字正常,很明显的编译器配置有问题,不挣扎了,过。

二、定义函数

#main.py
def f(a, L=[]):
    L.append(a)
    return L

if __name__ == '__main__':  
    print(f(1))
    print(f(2))
    print(f(3))
#终端输出
#默认值只计算一次。默认值为列表、字典或类实例等可变对象时,会产生与该规则不同的结果。
[1]
[1, 2]
[1, 2, 3]

#若不想共享默认值
def f(a, L=None):
    if L is None:
        L = []
    L.append(a)
    return L
#为参数指定默认值是非常有用的方式。调用函数时,可以使用比定义时更少的参数
def ask_ok(prompt, retries=4, reminder='Please try again!'):
    while True:
        reply = input(prompt)
        if reply in {'y', 'ye', 'yes'}:
            return True
        if reply in {'n', 'no', 'nop', 'nope'}:
            return False
        retries = retries - 1
        if retries < 0:
            raise ValueError('invalid user response')
        print(reminder)

if __name__ == '__main__':  
    ask_ok('Do you really want to quit?')
    ask_ok('OK to overwrite the file?', 2)
    ask_ok('OK to overwrite the file?', 2, 'Come on, only yes or no!')

#输出
Do you really want to quit?y
OK to overwrite the file?n
OK to overwrite the file?l
Come on, only yes or no!
OK to overwrite the file?no
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值