Python学习笔记

python知识点回顾

编码相关

文件存储时,使用某种编码,打开时需要使用相同的编码,否则会乱码
字符底层存储时本质上都是二进制
字符和二进制的对应关系:
    ascll编码,256种对应关系
    gb2312,gbk(中文和亚洲的一些国家)中文:占2个字节
    unicode,ucs2/ucs4(包括所有文明)
    utf-8,中文:占三个字节
python默认解释器编码(utf-8)
    python.exe 代码文件

计算机中的单位

8位=1字节

字符串格式化

v1="我是{}".format(“俞琦”)
v2="我是%s"%(“俞琦”)
name="俞琦"   v3=f"我是{name}"

数据类型

int、bool、str、list、tuple、dict、set、float、None
转为bool为False:空、None、0
可变类型和不可变:
    可变:list、set、dict
可哈希和不可哈希:
    不可哈希:list、set、dict
字典的键/集合的元素,必须是可哈希类型(list、set、dict不能做字典的键和集合的元素)
str:
    独有功能:split、upper、lower、startwith、strip、join
    注意:str不可变,不会对原子符进行修改,直接生成新的内容
list:
    独:append/insert/remove/pop
    注意:list可变,对原数据进行操作
dict:
    独:get\keys\items\value

运算符

特殊的逻辑运算符:(整体结果取决于谁?)
    v1=99 and 88     #88
    v2=[] or 10      #10
    v3= 10 or []     #10

推导式

data =[i for i in range(10) if i<5>]  #[0,1,2,3,4]

函数

定义:
参数:位置传参/关键字传参/参数默认值/动态参数*args,**kwargs
返回值
    函数没有返回值默认返回None
函数的进阶:
    python中是以函数为作用域。
    全局变量(大写)、局部变量(小写)
    局部变量中global关键字,引用全局的变量(不是局部新建的)
内置函数;
    bin\hex\odc\max\min\dicmod\sorted\open文件操作

文件操作:

with open自动关闭
打开的模式:
    r:读        【文件不存在,报错】     【文件夹不存在,报错】
    w:写(清空)【文件不存在,自动新建】   【文件夹不存在,报错】
    a:追加      【文件不存在,自动新建】   【文件夹不存在,报错】
注意:os.makedirs/os.path.exsits是否存在,不存在新建目录

模块

1.自定义模块:
2.内置模块:
    time/datatime/json/re/random/os..
查看当前目录下所有文件:os.listdir/os.walk
关于时间模块:时间戳/datetime/字符串可以互相转换
关于json模块:
    json本质是字符串,有一些自己格式的要求,如:无元组、无单引号
    json.dumps序列化时,只能序列化python常用数据类型
关于re正则模块:
    正则:\d \w
    默认贪婪,不贪婪加?
    re.search/re.match/re.findall
3.第三方模块:
    requests/openpyxl/python-docx/flask...

面向对象

三大特性:封装、继承、多态

install python in ubuntu

  1. 下载安装python:
    官网:https://devguide.python.org/getting-started/setup-building/
  2. 安装项目虚拟环境
# 安装虚拟环境库
sudo apt-get install python3-pip
pip3 install pipenv 

# 创建项目的虚拟环境
mkdir flask-project
cd flask-project
pipenv shell
  1. 安装git
步骤1.首先,通过运行以下命令确保您的系统和apt包列表完全更新:
apt-get update -y
apt-get upgrade -y

第2步。在Ubuntu 18.04上安装Git。
现在让我们安装git:
apt install git
您可以使用以下命令来检查已安装的git版本:
$ git --version

第3步。在Ubuntu上配置Git。
(blog-project) root@aliyun:~/blog-project#  git config --global user.name "sobermh"
(blog-project) root@aliyun:~/blog-project# git config --global user.email "409788696@qq.com"
接下来,我们将通过查看.gitconfig来验证配置更改:
(blog-project) root@aliyun:~/blog-project# git config --list
user.name=sobermh
user.email=409788696@qq.com


装饰器及闭包

装饰器基本概念

用来装饰其他函数的,即为其他函数添加特定功能的函数

  • 两个基本原则:
    1. 装饰器不能修改被装饰函数的源码
    2. 装饰器不能修改被装饰函数的调用方式
  • 函数即变量
    任何变量名都是指向变量值的内存地址;函数名跟变量名一样,只是一个变量的标识符,它指向函数定义对应的内存地址。

高阶函数

定义:接受函数名作为形参(不改变被装饰函数的代码的前提下增加功能),返回值中包含函数名(不改变被装饰函数的调用方式)。
但是高阶函数无法同时实现装饰器的两个原则

嵌套函数

通过def关键字定义在另一个函数中的函数叫嵌套函数。

def timer(func):
    def gf():
        start_time = time.time()
        func()
        end_time = time.time()
        print('func运行的时间为:',end_time-start_time)
    return gf

@timer  ==   foo=timer(foo)
def foo():
    time.sleep(3)
    print("in foo")

foo()

作用:新增功能和返回的原函数要写在嵌套函数中,在外层函数中需要返回嵌套函数。

编写装饰器的基本套路

  1. 定义一个接受函数名作为参数的高阶函数
  2. 在高阶函数中定义一个嵌套函数,在该嵌套函数中:封装想要添加的功能代码、调用作为参数传入的函数名、返回嵌套函数的函数名

常见的装饰器类型

  • 被装饰的函数带参数
def timer(func):
    def gf(*args,**kwargs):   #通过提供不定量参数来自适应被装饰函数的参数
        #所有要附加的功能
        start_time = time.time()
        func(*args,**kwargs)
        end_time = time.time()
        print('func运行的时间为:',end_time-start_time)
    return gf
  • 装饰器本身带参数
def timer(timer_type):  #接收装饰器本身的参数
    print(timer_type)
    def outer(func)  #加入一层嵌套函数,并且接受被装饰函数名作为参数
        def inner(*args,**kwargs):   
            start_time = time.time()
            func(*args,**kwargs)
            end_time = time.time()
            print('func运行的时间为:',end_time-start_time)
        return inner
    return outer

@timer(timer_type='minites')  #==  foo=timer(timer_type='minites')(foo)
def foo(name.age):
    time.sleep(3)
    print("in foo",name,age)

foo('maohui',11)   #inner(name,age)
  • 被装饰函数带返回值
def timer(timer_type):
    print(timer_type)
    def outer(func)  #加入一层嵌套函数,并且接受被装饰函数名作为参数
        def inner(*args,**kwargs):   #通过提供不定量参数来自适应被装饰函数的参数
            start_time = time.time()
            res= func(*args,**kwargs) 记录返回值
            end_time = time.time()
            print('func运行的时间为:',end_time-start_time)
            return res  返回
        return inner
    return outer

闭包及与装饰器的比较

func_list=[]
for i in range(3):
    def deco(i):
        def myfunc(a):
            return i+a
        return myfunc
    func_list.append(deco(i))

for i in func_list:
    print(f(1))
  • 闭包的作用:
    可以用来在一个函数与一组私有变量之间创建关联关系,在给定函数被多次调用的过程中,这些私有变量能够保持其持久性(保存运行环境与变量的状态)
  • 闭包的特征:
  1. 必须要有函数的嵌套,而且外层函数必须返回内层函数。外层函数相当于给内层函数提供了一个包装起来的运行环境,在这个包装的运行环境里面,内层函数可完全自己掌握自由变量的值。
  2. 内层函数一定要用到外层函数中定义的自由变量
  • 区别:

the meaning of underlined varibales and functions in python

  • variables:
    1.前带_的变量;标明是一个私有变量,只用于标明,外部类还是可以访问到这个变量。
    2.前带两个__,后到两个__的变量:表明是内置变量
    3.大写加下划线的变量:表明是不会发生改变的全局变量
  • functions:
    1.前带_的变量:表明是一个私有函数,只用于表明
    2.前带两个__,后带两个__的函数:表明是特殊函数

环境

在Ubuntu部署64位anconda

https://blog.csdn.net/qq_53564294/article/details/120535377?spm=1001.2014.3001.5506

https://blog.csdn.net/a_cherry_blossoms/article/details/123434261?spm=1001.2014.3001.5506

https://blog.csdn.net/qq_33290813/article/details/125389669?spm=1001.2014.3001.5506

anaconda

官网:https://www.anaconda.com/products/distribution

anaconda操作

1.基础操作

# 查看版本
conda --version  /  conda -V
# 获取帮助
conda --help / conda -h
# 获取remove命令的帮助
conda remove --help
# 详细信息
conda info 
# 安装包s
conda install <package_name>
# 卸载包
conda remove 包名
# 更新包
conda update 包名
# 查询已安装的包
conda list

2.管理及配置环境

# 升级anaconda
conda update conda
# 建虚拟环境
conda create -n name(自己起) python=3.7
# 查看已有环境
conda info -e
# 进入创建的虚拟环境
conda activate <name>
# 切换到base环境
activate base
# 创建某些包的环境
conda create --envname numpy
# 创建指定版本指定包的环境
conda create --envname python=3.6 numpy
# 复制某个环境
conda create --newenv --clone oldenv
# 删除某个环境
conda remove -n 你的环境名字 --all

3.anaconda使用时间长了,会衍生很多没用文件,比如pakage、tar文件包等,大到十几G;使用命令行能有效清除。

# 1.删除从不使用的包
conda clean --packages
# 2.删除tar包
conda clean --tarballs
# 3.删除索引缓存、锁定文件、未使用过的包和tar包
conda clean -a
$ 4.清除索引缓存
conda clean -i

模块导入与搜索机制

  • 模块搜索路径:
    1.程序的主目录
    2.pythonpath(环境变量)
    3.标准链接库
    4.任何.pth文件的内容
    以上四个组件组合起来就变成了sys.path,其保存了模块搜索路径在机器上的实际配置,可以通过打印内置的sys.path列表来查看路径。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值