python自学笔记
python部分总结
- 主要记录的是python与之前学的语言的不同之处
-
函数总结
首字母大写: name.title() 删除右边空格(暂时):name.rstrip() 删除左边空格(暂时):name.lstrip() 删除前缀(暂时):name.removeprefix() 在列表末尾处添加:list.append('1') 在任意位置进行插入元素:list.insert(0,'A') 删除元素(永久):del list[0] 删除尾端元素并将其弹出(也可根据下标进行删除):last = list.pop() 根据列表中的值删除元素:list.remove('A') 按首字母排序(永久):list.sort() 按首字母排序(临时):list.sorted() 反向打印:list.reverse() 列表长度:len(list) 生成数值:range(1,5)并不包含5 range(6)是0~5 提取字典中的一个键值对:favorite_languages.items() 输入函数:input('请输入: ') 索引加遍历:enumerate(list) 将python对象编码成Json字符串:json.dumps(py对象, indent=4) 将Json字符串接吗成python对象:json.loads(contents)
-
在字符串中使用变量
last_name = shi first_name = zhaoyu full_name = f"{first_name} {last_name}" print(f"Hello, {full_name}")
-
索引
索引为-1时是提取列表中的最后一个元素
list = ['1', '2', '3'] list[-1]的值是3
-
For循环
magicians = ['alice', 'david', 'carolina'] for magician in magicians:print (f"I cant wait to see you next trick, {magician.title()}")
- 不要忘记给需要循环的代码语句进行缩进
- 不要忘记加后面的冒号
-
使用range()函数创建数值列表
可以使用 list() 函数将 range() 函数的结果直接转换为列表。如果将 range() 作为 list() 的参数,输出的将会是一个数值列表
print(list(range(6)))
list = [] for value in range(1, 11):l = value ** 2#两个星号表示乘方list.append(l) print(list)
第二个程序是创建一个列表,其中包含前十个证书的平方
-
列表推导式
squares = [value ** 2 for value in range(1,11)] print(squares)
跟5中的range()函数例子类似
-
切片
players = ['charles', 'martina', 'michael', 'florence', 'eli'] print(players[0:3])
- players[0:3]输出的是下标为0、1、2的三个元素
- 如果冒号左边没有数字,会从列表的第一位开始输出,同理右边
- players[-3 : ]是打印最后三个元素的意思
切片遍历
players = ['charles', 'martina', 'michael', 'florence', 'eli'] for player in players[:3]:print(player.title())
复制列表
my_food = ['pizza', 'falafel', 'carrot cake'] friend_food = my_food[:] print(my_food) print(friend_food)
-
If语句
cars = ['audi', 'bmw', 'subaru', 'toyota'] for car in cars:if car =='bmw':print(car.upper())else:print(car.lower())
- 不要忘了冒号
-
检查特定的值是否在列表中
requested_toppings = ['mushrooms', 'green peppers', 'extra cheese'] print('mushrooms' in requested_toppings)
- 用关键词 in
- 反之如果想要确定一个元素是否不在列表中用关键词 not in
-
字典
字典是一系列键值对。每个键都与一个值关联,可以使用键来访问预支有关的值。与键有关的值可以是数、字符串、列表乃至字典。事实上,可将python中的任意对象用作字典中的值。
alien_0 = {'color': 'green', 'point': 5} print(alien_0['color']) print(alien_0['point'])
添加键值对
alien_0 = {'color': 'green', 'point': 5} print(alien_0) alien_0['x_position'] = 0 alien_0['y_position'] = 25 print(alien_0)
修改键值对中的值
alien_0 = {'color': 'green', 'point': 5} alien_0['color'] = 'yellow' print(alien_0['color'])
删除键值对
alien_0 = {'color': 'green', 'point': 5} del alien_0['point']
- del 语句,彻底删除。
- 使用del语句时必须指定字典名和需要删除的键
遍历键值对
user_0 = {'username': 'efermi','first': 'enrico','last': 'fermi', }for key, value in user_0.items():print(f"\nKey: {key}")print(f"Value: {value}") for key in user_0.keys():print(f"\nKey: {key}")
- item()方法是返回一个键值对列表
- keys()方法是返回键值对中的键(key)
顺序遍历
favorite_languages = {'jen': 'python','zhao': 'c','yu': 'ruby','shi': 'java', } for name in sorted(favorite_languages.keys()):#反过来,如果想只遍历值的话就把keys改成values就可以print(f"{name.title()}, thanks for taking the poll")
- value可以用[]来存储多个元素,然后在遍历到value对应的key时使用for循环进行遍历多元素的value值
遍历去重
favorite_languages = {'jen': 'python','zhao': 'c','yu': 'java','shi': 'java', } for language in set(favorite_languages.values()):print(language.title())
- 这里用set()函数来进行提取元素
字典列表
aliens = [] for alien in range(30):new_alien = {'color': 'green','point': 5,'speed': 'slow',}aliens.append(new_alien) for alien in aliens[:20]:print(alien)
- range(30)函数返回一个数字序列,告诉py需要循环多少次
-
输入 input
message = input("请输入一段话:") print(message)age = input("请输入年龄:") age = int(age) print(age) print(age>18)
- input()函数可以在括号中输入提示语句,让用户知道自己需要输入什么
- 函数在接受一个参数后可以直接向message进行赋值
- 返回的结果一般为字符串
- 如果需要int类型的数字,需要int()函数进行转换
-
while
num = 1 while num <= 100:print(num)num += 1
-
python的底层逻辑决定了其自身不具有自增 ‘i++’ 这中操作
-
break是结束while这个大循环
-
continue是结束while中的小循环,然后返回查看是否符合条件
-
num = 0 while num < 10:num += 1if num % 2 == 0:continueprint(num)
-
-
函数定义
def greet_user(user_name):"""显示简单的问候语"""print(f"Hello!{user_name}")greet_user('zhaoysuhi')
-
禁止函数修改列表
函数中可以对主程序中传过来的列表进行永久性修改,但可以用传递副本的方法对主程序中的列表进行修改保护
function_name(list_name[:])
- 要将列表的副本传递给函数,可像上述代码一样
- 虽然可以使用副本,但除非必做,否则还是应该将原始列表传递给函数。因为让函数使用现成的列表可以节省时间和内存创建副本,从而提高效率
-
传递任意数量的实参
def make_pizza(size, *toppings):"""打印顾客点的所有配料"""print(f"Make a {size}-inch pizza with the following toppings")make_pizza(16, 'pepperoni') make_pizza(12, 'mushrooms','green peppers','extra cheese')
- 形参名*toppings中的星号是让py创建一个名位toppings的元组,该元祖包含函数收到的所有值
- 如果要让函数接受不同类型的实参,必须在函数定义中将接受任意数量的实参的形参(*toppings)放在最后面
接受任意数量的关键字实参
def build_profile(first, last, **user_info):"""创建一个字典,其中包含我们知道的有关用户的一切"""user_info['first_name'] = firstuser_info['last_name'] = lastreturn user_infouser_profile = build_profile('albert', 'einstein',location='princeton',field='physics')
- 形参**user_info中的两个星号是让python创建一个名为user_info的字典,该字典包含了函数收到的所有的键值对
-
用as给导入的函数指定别名
from pizza import make_pizza as mp mp(16, 'pepperoni') mp(20, 'mushrooms', 'green peppers', 'extra cheese')
- 不仅可以给导入的函数进行别名,如果导入的是模块也可以用as取别名
-
__init__(self, ...)
方法class Dog:"""一次模拟小狗的简单尝试"""def __int__(self, name, age):"""初始化属性name和age"""self.name = nameself.age = agedef sit(self):"""模拟小猴收到命令时坐下"""print(f"{self.name} is now sitting")def roll_over(self):"""模拟小狗收到命令时打滚"""print(f"{self.name} rolled over!")# 创建一个Person对象,并为该对象添加一个名字属性 person = Person("John Doe") print(person.name) # 输出: John Doe
此方法是python中的一类特殊方法,也成构造函数,Java中同样有此类函数。当创建一个类的实例时,此方法会自动调用。
它的主要作用还初始化实例中的属性,如上述代码中的name和age两个属性,在主程序对Dog这个类进行实例时就可以直接将参数传过来进行初始化
初始化语句可以在创建对象时为对象的属性设置初始值,从而使得代码更加简洁,方便维护。
其中self参数是必须的,它代表了创建的对象本身,在方法内部可以通过self来引用对象的属性和方法。
__init__
方法的多态特性class Person:def __init__(self, name, age):self.name = nameself.age = ageclass Student(Person):def __init__(self, name, age, major):Person.__init__(self, name, age)self.major = major
此方法也支持多态的特性,即子类可以通过重写此方法来覆盖父类的方法,以实现不同的初始化行为。
super
super是python中的内置函数,可以在继承关系中访问父类的属性。
class ParentClass:def __init__(self, value1, value2):self.value1 = value1self.value2 = value2class ChildClass(ParentClass):def __init__(self, value1, value2, value3):super().__init__(value1, value2)self.value3 = value3
- 这个super跟上述的多态举例不太一样,这个在调用父类的init方法时不需要再写self
init注意⚠️
- 方法在对象创建时自动调用,无需手动调用
- 方法可以接收任意数量的参数,但需要遵循特定的参数签名
- 在方法中必须给对象的每个属性进行赋值,否则该对象将不完整,不能正常工作
- 尽量避免在初始化过程中产生太多计算,会影响程序性能
-
导入
-
在进行跨文件导入时,如果导入的是一个类,即使文件中只有一个类也可以用
from 文件名 import 类
这样的方式进行导入 -
也可以将整个文件进行导入,但需要在后续使用过程中进行
文件名.类
的方式进行使用 -
如果导入的文件中只有方法也可以直接用
import 文件名
这样的方式进行简单导入
-
相关文章:

python自学笔记
python部分总结 主要记录的是python与之前学的语言的不同之处 函数总结 首字母大写: name.title() 删除右边空格(暂时):name.rstrip() 删除左边空格(暂时):name.lstrip() 删除前缀(暂时):name.removeprefi…...

Ubuntu磁盘不足扩容
1.问题 Ubuntu磁盘不足扩容 2.解决方法 安装一下 sudo apt-get install gpartedsudo gparted...

【ROS2】spin、spinOnce、spin_some、spin_until_future_complete
1、简述 spinOnce仅处理一个回调函数(ROS1); spin_some类似于ROS1的spinOnce,但处理多个任务,然后返回(ROS2); spin会持续处理回调函数直到无任务,然后阻塞(ROS1、ROS2); 注意: 只有消息推送(publisher)功能的程序,不需要使用spin_some(),因为它不执行任何回…...

化繁为简:中介者模式如何管理复杂对象交互
化繁为简:中介者模式如何管理复杂对象交互 中介者模式 是一种行为型设计模式,定义了一个中介者对象,来封装一组对象之间的交互。中介者模式通过将对象之间的交互行为从多个对象中抽离出来,集中封装在一个中介者对象中,…...

控制STM32蜂鸣器示例代码(江科大)
以下代码来源于本人学习江科大的课程,这是一个简单的STM32微控制器程序,用于控制连接到GPIOB第12号引脚的蜂鸣器。程序通过GPIOB的第12号引脚输出PWM波形来控制蜂鸣器的频率,从而产生声音。 #include "stm32f10x.h" …...

Java基础知识扫盲
目录 Arrays.sort的底层实现 BigDecimal(double)和BigDecimal(String)有什么区别 Char可以存储一个汉字吗 Java中的Timer定时调度任务是咋实现的 Java中的序列化机制是咋实现的 Java中的注解是干嘛的 Arrays.sort的底层实现 Arrays.sort是Java中提供的对数组进行排序的…...

ZLMediaKit Windows编译以及使用
1.运行ZLMediaKit 2.通过ffmpeg把视频源推流给ZLMediaKit 执行以下命令,将本地视频通过RTSP协议推流给ZLMediaKit。 ffmpeg -re -stream_loop -1 -i "D:\workplace\armgb\public\1.fileh264" -vcodec h264 -f rtsp rtsp://127.0.0.1/live/test 若想将本…...

基于YOLOv5s的无人机航拍输电线瓷瓶检测(附数据集与操作步骤)
本文主要内容:详细介绍了无人机航拍输电线瓷瓶检测的整个过程,从创建数据集到训练模型再到预测结果全部可视化操作与分析。 文末有数据集获取方式,请先看检测效果 现状 输电线路绝缘瓷瓶的检测主要依赖人工巡检。巡检人员需携带专业设备,攀…...

【Python百日进阶-Web开发-FastAPI】Day805 - FastAPI的请求体
文章目录 一、导入 Pydantic 的 BaseModel二、创建数据模型三、声明为参数四、结果五、自动化文档六、编辑器支持七、使用模型八、请求体 + 路径参数九、请求体 + 路径参数 + 查询参数十、不使用 Pydantichttps://fastapi.tiangolo.com/zh/tutorial/body/ 当你需要将数据从客户…...

【Kubernetes】常见面试题汇总(二十八)
目录 79.您如何看待公司从单一服务转向微服务并部署其服务容器? 80.什么是 Headless Service? 特别说明: 题目 1-68 属于【Kubernetes】的常规概念题。 题目 69-113 属于【Kubernetes】的生产应用题。 79.您如何看待公司从单一服务转…...

单ISP与双ISP的区别是什么
单ISP(单一互联网服务提供商)与双ISP(双重互联网服务提供商)主要在以下几个方面有区别: 服务冗余: 单ISP:只有一个互联网服务提供商提供的网络连接。如果该ISP发生故障,整个网络连接…...

【linux】gcc makefile
🔥个人主页:Quitecoder 🔥专栏:linux笔记仓 目录 01.gcc如何完成02.gcc选项03.函数库与动静态链接静态链接动态链接库文件特点和用途动态链接版本和兼容性 04.makefile自动推导 01.gcc如何完成 预处理(进行宏替换) 预处理功能主要…...

12.Java基础概念-面向对象-static
欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 Facts speak louder than words! 一、static关键字的含义…...

移动开发(三):使用.NET MAUI打包第一个安卓APK完整过程
目录 一、修改AndroidManifest.xml 配置APP基本信息权限 二、修改项目属性调整输出Android包格式为APK 三、项目发布 四、APP分发 五、总结 之前给大家介绍过使用使用.NET MAUI开发第一个安卓APP,今天给大家介绍如何打包成APK,然后安装到安卓手机正常运行。这里还是沿用…...

数据库中的DUAL表
在日常的数据库操作中,DUAL表是一个特殊的存在。它是一个伪表,用于在不需要实际数据表的情况下进行简单的查询。特别是在执行一些无关联的数据计算时,DUAL表经常派上用场。 什么是DUAL表? DUAL表最早出现在Oracle数据库中&#…...

寄宿制学校自闭症教育:为每个孩子创造奇迹
寄宿制学校自闭症教育:星贝育园——为每个孩子创造奇迹 在自闭症儿童教育的广阔领域中,寄宿制学校以其独特的教育模式和全方位的关怀体系,正逐步成为推动这些特殊孩子成长与发展的重要力量。广州的星贝育园自闭症儿童寄宿制学校,…...

Vue前端无法接收到后端返回的数据以及全局CSS样式影响(已解决)
Vue前端无法接收到后端返回的数据 前提:把很久以前的项目,翻出来重新优化一下,做一下前端的美化(以前都是用的element的UI,现在想自己写)。 由于是自己利用简单的html语句,主要面向各个按钮控…...

力扣234 回文链表 Java版本
文章目录 题目描述代码 题目描述 给你一个单链表的头节点 head ,请你判断该链表是否为 回文链表 。如果是,返回 true ;否则,返回 false 。 示例 1: 输入:head [1,2,2,1] 输出:true 示例 2&…...

银行性能测试怎么做?来认识下这4个性能测试工具!
一、银行项目性能测试是什么? 银行项目性能测试是一种软件测试形式,用于评估银行应用程序的性能和负载能力。 它的主要目标是确保银行系统能够在不同负载水平下提供稳定、高效的服务。 性能测试涵盖了多个方面,包括响应时间、吞吐量、并发用…...

FME学习笔记
读取数据 方法一:add reader 通过读模块来进行数据的读取 方法二:FeatureReader Parameters 通过转换器来进行数据的读取 可以通过空间范围进行筛选 在FME中,所有数据处理都要用到的,绝对的重点:转换器ÿ…...

机器翻译之创建Seq2Seq的编码器、解码器
1.创建编码器、解码器的基类 1.1创建编码器的基类 from torch import nn#构建编码器的基类 class Encoder(nn.Module): #继承父类nn.Moduledef __init__(self, **kwargs): #**kwargs:不定常的关键字参数super().__init__(**kwargs)def forward(self, X, *args…...

锤炼核心技能以应对编程革命
一、引言 随着人工智能的快速发展,尤其是AIGC等大语言模型的涌现,AI辅助编程工具逐渐成为程序员的新伙伴。这一变革不仅引发了关于AI是否能取代部分编程工作的讨论,也促使程序员重新思考自己的职业发展和技能提升路径。在AI时代࿰…...

2024 go-zero社交项目实战
背景 一位商业大亨,他非常看好国内的社交产品赛道,想要造一款属于的社交产品,于是他找到了负责软件研发的小明。 小明跟张三一拍即合,小明决定跟张三大干一番。 社交产品MVP版本需求 MVP指:Minimum Viable Product&…...

js跑马灯效果、横向、纵向滚动效果
比如横向滚动,则在li标签里设置 display: table-cell;滚动效果 transform: translateX(-200px); <div id"div1" ><ul><li><img src"imgs/Snipaste_2022-11-22_18-13-13.png"></li><li><img src"i…...

C#基础(14)冒泡排序
前言 其实到上一节结构体我们就已经将c#的基础知识点大概讲完,接下来我们会讲解一些关于算法相关的东西。 我们一样来问一下gpt吧: Q:解释算法 A: 算法是一组有序的逻辑步骤,用于解决特定问题或执行特定任务。它可以是一个计算过程、一个…...

喜报 | 众数信科荣获2024年“火炬瞪羚企业”称号
近日,厦门火炬高新区公布2024年“火炬瞪羚企业”名单,众数(厦门)信息科技有限公司凭借在AI领域的综合实力、技术创新及典型场景应用等方面的卓越表现,成功入选。 瞪羚企业 一般指高成长性科技型企业,是跨过…...

中央企业数智化薪酬信息系统建设如何实现穿透式监管?
近年来,深化国有企业改革成为推动高质量发展的重要抓手,薪酬管理作为其中的关键领域,备受关注。国资委于近日发布了《关于加强中央企业薪酬管理信息系统建设的通知》,并召开了中央企业薪酬管理信息系统建设工作部署会议࿰…...

110Redis 简明教程--Redis 数据类型
Redis strings 字符串是一种最基本、最常用的 Redis 值类型。 Redis 字符串是二进制安全的,这意味着一个 Redis 字符串能包含任意类型的数据,例如: 一张经过 base64 编码的图片或者一个序列化的 Ruby 对象。通过这样的方式,Redis …...

Spring Data Rest 远程命令执行命令(CVE-2017-8046)
(1)访问 http://your-ip:8080/customers/1,然后抓取数据包,使用PATCH请求来修改 PATCH /customers/1 HTTP/1.1 Host: Accept-Encoding: gzip, deflate Accept: */* Accept-Language: en User-Agent: Mozilla/5.0 (compatible; MS…...

计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-18
计算机前沿技术-人工智能算法-大语言模型-最新论文阅读-2024-09-18 1. The Application of Large Language Models in Primary Healthcare Services and the Challenges W YAN, J HU, H ZENG, M LIU, W LIANG - Chinese General Practice, 2024 人工智能大语言模型在基层医疗…...