后端学习笔记:Python基础

后端学习笔记:Python基础

数据类型:

Python中主要有以下几种常用的基本数据类型:

  • String 字符串类型,用单引号或者双引号引用
  • Number 数字类型,包括浮点数,整数,长整数和复数
  • List 列表项,类似于数组
  • Dictionary 字典,一个可变数据类型,加强版的Map,存储键值对类型
  • Tuple 元组,相当于一个不可变的列表项

访问列表(元组)和字符串:

Python的列表访问和字符串访问很相似,均可以通过下标的形式访问,且支持前向访问和逆向访问,确定访问步长的特性。

Python中的列表项用[]确定,例如:

	hello = "Hello,Python!"helloList = []for char in hello:helloList.append(char)print(hello)print(helloList)

这里声明的helloList变量就通过[]来确定其类型是List,不同于Java和Python中的列表,Python中的列表可以存储不同类型的数据变量,比如:

mutiList = ["name", "age", 18]
print(mutiList)

在访问列表时,可以通过前向和后向访问:
选自菜鸟教程
如图所示,前向访问和其他语言一致,从下标0开始递增;后向访问则从下标-1开始,依次递减。

我们还可以访问特定范围的元素,通过[起始范围:结束范围:步长(可选)]来访问(实际上是创建一个全新的列表)特定的范围:

hello = "Hello,Python!"
helloList = []
for char in hello:helloList.append(char)
# [起始下标:结束下表]
print(helloList[0:5])
# [起始下标:结束下表:步长]
print(helloList[0:11:2])
# [起始下标:结束下标(反向访问)]
print(helloList[-8:-1])
print(helloList[0:-2])

输出结果为:
在这里插入图片描述

拓展列表

除此之外,我们还可以通过 *+ 操作符来拓展列表,*代表的是原序列的重复,+来拼接新的内容,比如说:

hello = "Hello,Python!"
helloList = []
for char in hello:helloList.append(char)
print(helloList * 2)
print(helloList + ["!", "!"])

输出结果为:
在这里插入图片描述

字符串的访问

实际上来说对于字符串的访问和列表的访问基本上是一致的,我们可以通过列表项的访问方式来访问字符串。

helloList = "Hello,Python!"
# helloList = []
# for char in hello:
#     helloList.append(char)
# [起始下标:结束下表]
print(helloList[0:5])
# [起始下标:结束下表:步长]
print(helloList[0:11:2])
# [起始下标:结束下标(反向访问)]
print(helloList[-8:-1])
print(helloList[0:-2])
print(helloList * 2)
print(helloList + "!!")

结果:
在这里插入图片描述

元组的访问

元组用()标识。
元组的访问也是一致,但是由于元组不可变,所以拓展语句对其无效:

tuple = ("a","b","c","d","e")
print(tuple[0:6])
print(tuple[0:6:2])
print(tuple[0:-1])

结果:
在这里插入图片描述

访问字典

字典通过{}来表示。

对于字典的访问和Kotlin中的Map的访问类似,都是通过get方法来访问,get方法重载符是[]比如说dic.get(key) 就可以写成 dic[key];典型例子:

	namebook = { "Name" : "Alex", "Age" : 18 , "Class" : "First" }print(namebook.get("Name"))# 只读Keyfor key in namebook:print(key, namebook[key])# 同时读KVfor key,value in namebook.items():print(key, value)

条件控制语句

条件语句

首先是if条件语句,由if语句,elif语句,else语句组成,就相当于其它语言中的if,else if,else语句一样:

	str = ""str += input()if str == "a":print("A")elif str == "b":print("B")elif str == "c":print("C")else:print("not match")

需要说明的是,Python没有原生的switch case语句,不过Python3.1中引入了match语句,类似于switch case语句,不同的是其用case _代表任何项都不匹配的情况:

str = ""
str += input()
match(str):case "a": print("match a")case "b": print("match b")case "c": print("match c")case _: print("not match")

循环语句

循环语句分为for循环和 while循环,for循环可以遵循类似Kotlin中的for循环,创建一个范围类为循环的范围:

for a in range(0,5):print(a)

while循环就如下:

b = 0
while b < 5:b += 1print("repeat..."+ str(b))

同时我们可以用break关键字和continue关键字来控制循环,他们的作用和其他语言是一致的:

for a in range(0,5):if (a == 3): continueprint(a)b = 0
while b < 5:b += 1if (b == 3): breakprint("repeat..."+ str(b))

结果如下:
在这里插入图片描述

函数定义&调用

Python中用def来声明一个函数。

Python中的函数定义比较简单(因为它是脚本语言),只要确定函数名和参数列表即可,Python 采用鸭子类型哲学,即只要一个对象具有所需的方法或属性,就可以使用它,而不关心对象的具体类型。这种方式让代码更加灵活和通用。

同时,这种特性可以让我们实现曾经的非脚本语言无法做到的事情:“一个函数可以返回多种数据类型”:

def sayHello():print("hello python")def mutiReturnType(clazz):match(clazz):case "String": return "string"case "Number": return 1case "List": return [1,2,3,4,5]case _: print("not match")sayHello()
clazz = input()
result = mutiReturnType(clazz)
print(result)

在上述片段中,mutiReturnType函数就可以返回四种类型的参数。

默认参数值

和Kotlin一样,Python中的函数也可以使用默认参数值:

def defaultParaMethod(a = 10, b = 11, c = 12, d = 13):print(a,b,c,d)

这样我们在调用时就可以避免传入一些我们不关心的参数,我们可以这样调用:

defaultParaMethod(d = 16)

函数的参数传递

关于Python的参数传递大致遵循C语言的原理,对于不可变参数,采取值传递;对于可变参数则是采取引用传递,比如可以通过下边的示例来理解:

def passingParam(str = "", int = 0, list = [], dic = {}):if (len(str) > 0):  str *= 2elif (int != 0):  int *= 2elif (len(list) > 0):  list *= 2elif (len(dic) > 0): dic["sp"] = 22# string
print("===================string=====================")
para = "abc"
result = passingParam(str = para)
print(para)# int
print("===================int=====================")
para = 11
result = passingParam(int = para)
print(para)
# list
print("===================list=====================")
para = [1,2,3]
result = passingParam(list = para)
print(para)
# dic
print("===================dic=====================")
para = {"gender":"man", "age":16}
result = passingParam(dic = para)
print(para)

结果如下:
在这里插入图片描述

不定长参数

在Python中,我们可以通过在参数名前加上*来声明一个不定长参数,访问参数的手段也和其他语言大同小异,采取列表的访问形式即可:

def biggestNumber(*numbers):biggest = numbers[0]for number in numbers[1:]:if number > biggest:biggest = numberreturn biggestbigNumber = biggestNumber(-1,5,6,10,-9,105)
print("biggest", bigNumber)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/856430.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

界面构件开发之RC文件

代码; #include <gtk-2.0/gtk/gtk.h> #include <gtk-2.0/gdk/gdkkeysyms.h> #include <glib-2.0/glib.h> #include <stdio.h>int main(int argc, char *argv[]) {gtk_init(&argc, &argv);gtk_rc_parse("./mainrc");GtkWidget *winN…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 连续字母长度(100分) - 三语言AC题解(Python/Java/Cpp)

&#x1f36d; 大家好这里是清隆学长 &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f497; &#x1f…

某棋牌渗透测试

前言 由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;文章作者不为此承担任何责任。 一、信息收集 这里通过fofa进行收集&#xff0c;语法为&#xff1a;body某棋牌 && titlexxx 图1-1 fofa资产收集 …

Human4DiT:使用 4D Diffusion Transformer 生成自由视角人物视频。

Human4DiT&#xff0c;使用 4D Diffusion Transformer 生成自由视角人物视频。又一个根据一张图&#xff0c;生成人物动画视频的项目&#xff0c;效果如下视频所示。 给定参考图像、SMPL序列和摄像机参数&#xff0c;Human4DiT能够生成自由视图动态人体视频。 相关链接 项目地…

神经网络模型---LeNet-5

一、LeNet-5 1.定义LeNet-5模型 model models.Sequential([1.1添加一个二维卷积层&#xff0c;有6个过滤器&#xff0c;每个过滤器的尺寸是5x5。输入图像尺寸是28x28像素&#xff0c;具有1个颜色通道,激活函数是relu layers.Conv2D(6, (5, 5), activationrelu, input_shape…

【Codesys】-计算开机通电运行时间,累计正常使用时间,故障停机时间

应客户要求&#xff0c;在程序添加了这个用来计算开机运行时间&#xff0c;原理就是取当前时间减去一开始记录的时间&#xff0c;没什么特别要求&#xff0c;记录一下使用的变量类型和数据写法&#xff0c;防止忘记了。 下文只写了一个开机通电运行时间的写法&#xff0c;累计…

ROS操作过程中的报错

文章目录 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-full报错问题报错原因解决方法 错误2&#xff1a;ERROR: cannot download default source list from:报错问题错误原因解决办法 错误&#xff1a;E: Unable to locate package ros-noetic-desktop-fu…

养殖自动化温控系统:现代养殖场的智能守护神

现代农业养殖业中&#xff0c;养殖自动化温控系统已经成为提高生产效率和保障动物福利的关键技术之一。本篇文章将深入介绍养殖自动化温控系统的原理、组成、优势及其在不同类型养殖场中的应用实例&#xff0c;并展望该技术的未来发展。 一、养殖自动化温控系统概述 养殖自动…

智能制造 v3.13.12 发布,ERP、在线课堂、表白墙更新

智能制造一体化管理系统 [SpringBoot2 - 快速开发平台]&#xff0c;适用于制造业、建筑业、汽车行业、互联网、教育、政府机关等机构的管理。包含文件在线操作、工作日志、多班次考勤、CRM、ERP 进销存、项目管理、EHR、拖拽式生成问卷、日程、笔记、工作计划、行政办公、薪资模…

Hive笔记-3

3.2.2 查看表 1) 展示所有表 (1) 语法: 语法: SHOW TABLES [IN database_name] LIKE [identifier_with_wildcards]; In database_name 写的是查哪个数据库,一般不写默认是当前数据库 Like 后面跟通配符表达式 (2) 案例: 查看在 db_hive1 数据库里有没有以 stu 开头的表 …

C++第二学期期末考试选择题题库(qlu题库,自用)

又到了期末周&#xff0c;突击一下c吧— 第一次实验 1、已知学生记录的定义为&#xff1a; struct student { int no; char name[20]; char sex; struct 注意年月日都是结构体&#xff0c;不是student里面的 { int year; int month; …

如何在springboot项目中引入knife4j接口文档

开发框架&#xff0c;帮助后端开发人员做后端接口测试 knife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案 引入依赖 <dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId>&…

模电电流源相关知识总结

模电书版本为第五版&#xff1a; 一、基本电流源 1、镜像电流源 电路图&#xff1a; 电路图很好理解&#xff0c;T0和T1两个晶体管参数相近&#xff0c;即当施加相同的Ube时&#xff0c;对应的Ic也相同。 可用图中的电阻R来控制电流源的电流。 计算公式&#xff1a;Ic&…

C# WPF入门学习番外篇——C#使用WPF连接MySQL数据库

在 C# 中使用 WPF 连接 MySQL 数据库涉及几个步骤&#xff0c;包括安装必要的库&#xff0c;配置连接字符串&#xff0c;编写代码以执行数据库操作等。下面是一个详细的入门教程&#xff0c;帮助你理解如何在 WPF 应用程序中使用 MySQL 数据库。 1. 安装 MySQL 数据库连接器 …

来都来了,8个JavaScript技巧奉上

吆喝一声&#xff0c;如果你计算机、软件工程、电子等相关专业本科及以上学历&#xff0c;欢迎来共事。前后端/测试可投&#xff0c;技术大厂。 JavaScript 作为最流行的语言之一&#xff0c;其语法灵活且每年都在不断吸纳新特性&#xff0c;即使是一个从业多年的老手&#xff…

el-table表格变更前后根据数据值改变背景颜色

需求&#xff1a; 1.左侧变更前表格数据不可以编辑&#xff0c;并且背景色加灰 2.右侧变更后表格数据可被编辑&#xff0c;编辑后变更前与变更后行数据不一致&#xff0c;添加背景色区分 3.点击删除的时候&#xff0c;给变更后表格当前行&#xff0c;添加背景色和删除的中横…

【UML用户指南】-15-对高级结构建模-对象图

目录 1、对象图的组成 2、 对象图和类图关系 3、对对象结构建模 4、逆向工程 5、对象图构建要求 对象图对包含在类图中的事物的实例建模。 对象图显示了在某一时间点上一组对象以及它们之间的关系。 对象图用于对系统的静态设计视图或静态交互视图建模。 对某一时刻的系统…

计算机网络知识点汇总(二)

计算机网络知识点汇总 第1章计算机网络体系结构 1.1 计算机网络概述 1.1.1 计算机网络的概念 ​ 计算机网络是由若干个结点(node)和连接这些结点的链路(link)组成。网络中的结点可以是就三级、集线器、交换机、或者路由器等&#xff0c;网络之间通过路由器进行互联&#xf…

记一次某单位的内网渗透测试

0x01 web打点 访问漏洞url:http://www.xx.xx.com进入某医疗系统 使用越权加文件上传拿到shell 0x02 内网渗透 192.168.xx.x 管理员 通过哥斯拉上线msf 上线后进行信息收集: 网卡信息、补丁信息、杀毒进程、用户在线情况、是否存在域、翻文件查找数据库密码、浏览器保存密码…

119.网络游戏逆向分析与漏洞攻防-邮件系统数据分析-邮件读取与删除功能的封装

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 如果看不懂、不知道现在做的什么&#xff0c;那就跟着做完看效果&#xff0c;代码看不懂是正常的&#xff0c;只要会抄就行&#xff0c;抄着抄着就能懂了 内容…