zkz098's blog

zkz098's blog

= 我的学习笔记 =

python-用企业微信机器人发天气预报

<Note type="info"> 本文实际上是企业微信机器人+天气预报,但拆开有点短,所以组合到一起了 </Note> # 企业微信机器人 ## 数据和模块准备 请求头: ```py head = { 'Content-Type': 'application/json', # 声明为json类型 } ``` 数据(负载): ```python data = '''{ "msgtype": "markdown", "markdown": { "content": "暂时留空" }''' ``` <
more...

python-GUI和海龟库

<Note type="info"> 尚未完成 </Note> # GUI和绘图 ## tkinter ### 建一个窗口 ```python import tkinter as tk window = tk.Tk() window.geometry("500x300") window.title("my window") window.mainloop() ``` `tk.Tk`为tkinter的窗口基类,是所有tkinter窗口的基类 `geometry`为窗口设定大小的函数,使用`x`做分隔 `title`为窗口的标题,输入字符串 `mainloop`为窗口自动更新,**必须
more...

使用caddy2支持QUIC协议

<Note type="danger"> 本文当做caddy2安装教程就行,更换服务器后已更新为nginx-quic </Note> # QUIC与HTTP3 ## 什么是QUIC QUIC 是 Quick UDP Internet Connections 的缩写,目前分为iQUIC和gQUIC两种 QUIC类似于在内核层实现的TCP + TLS + HTTP/2。但QUIC基于UDP,因此绕开了对TCP进行改造的大量成本 QUIC相较于TLS+HTTP2有几点优势: - 首次握手1-RTT - 改善了TCP的拥塞 - 前向纠错,减少重传 - 连接平滑迁移,网络状态的变更不会影响连接断
more...

python-第三方库

# 安装第三方库 ## 安装 首先在PowerShell执行以下命令: ```bash pip -V ``` 如果返回值类似这样: ```text pip 21.2.4 from C:\Users\你的用户名\AppData\Local\Programs\Python\Python310\lib\site-packages\pip (python 3.10) ``` 那证明python安装无误,如果出现`无法将“pip”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,如果包括路径,请确保路径正确 ,然后再试一次。` \ 请重新安装python或将pip添
more...

python-面向对象与异常捕获

# 面向对象 ## 类方法和静态方法 ### 类方法 ```python class Dog: variety = "柴犬" def __init__(self, name): self.name = name @classmethod def show_variety(cls): print(f"这个类下所有对象都是{cls.variety}") def __str__(self): return f"{self.name}是一只狗" dog = Dog("dog") dog.show_va
more...

python-面向对象和生成器、迭代器

# 面向对象基础 ## 建立一个类 ### 类的基本语法 ```python class TestClass: def __init__(self): print("这是init方法") ``` 这是一个最基本的类,有`__init__方法` <Note type="info"> 类名必须使用**大驼峰命名法**,即所有的单词首字母大写 </Note> 类的基本语法: ```python class 类名: 函数 ``` ### 对象函数 在python中,像`__init__`这样前后都有双下划线的叫**魔法方法** 例如`__init__`就是
more...

python-递归、匿名函数和生成器

# 递归 递归是什么? 举个例子: ```py def demo(n:int): count = 1 if n ==100: return count else: return count + demo(n+1) print(demo(2)) # 输出99 ``` !!约等于循环99次+1!! 在函数中调用函数本身就是递归 <Note type="warning"> 递归必须要准备一个退出分支,例如本段的`if n==100:`就是退出分支 </Note> 如果没有退出分支: ```python def demo(n:int):
more...

python-函数与作用域

# 函数 ## 定义函数 一个任务:把每个值乘2次方并除以5再加一 你可以这样做: ```python a = 10 a = a**2/5+1 print(a) ``` 但假如你要在不同的地方做x次操作呢? 就可以用到函数了: ```python def demo(num): return num ** 2 / 5 + 1 a = demo(10) print(a) ``` 以下是函数的语法: ```python def 函数名(形参): 代码 ``` `return`后面是函数的返回值,需要使用变量"接住" 在遇到`return`关键字之后,函数会自动**
more...

python-常用模块

# random-随机数库 ## random方法 ```text import random a = random.random() ``` `random()`方法可以生成一个大于0小于1的浮点随机数!!位数可能很长!! 通常使用`round()`方法来控制浮点数长度 <Note type="info"> `round(n,ndigits=x)`为其调用方法,n为数据,ndigits为位数 \ `round()`方法遵循四舍五入原则!!好用多了!! </Note> <Note type="info"> python使用模块前,需要先使用`import`关键字声明 </Note>
more...

python-容器数据类型与常用方法

# 容器类型 ## 列表 ```python list1 = [1,2,3,4,5] list2 = ["a",1,2,"c"] ``` python中的list可以存储相同(list1)或不同的数据(list2) 列表结构类似于C++的数组,但区别是python列表存放的是指针 <Note type="info"> 如果你认真看了第4篇,那你应该知道python中的变量大部分都是指针 </Note> 这里有一段代码: ```python list1 = [1,2,3,4] list2 = list1 list1.append(5) print(list2) # 会输出什么? ```
more...