后端学习笔记:Python基础

news2024/12/21 19:59:51

后端学习笔记: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"))
	# 只读Key
	for key in namebook:
	    print(key, namebook[key])
	# 同时读KV
	for 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 += 1
    print("repeat..."+ str(b))

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

for a in range(0,5):
    if (a == 3): continue
    print(a)

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

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

函数定义&调用

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

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

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

def sayHello():
    print("hello python")

def mutiReturnType(clazz):
    match(clazz):
        case "String": return "string"
        case "Number": return 1
        case "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 *= 2
    elif (int != 0):  int *= 2
    elif (len(list) > 0):  list *= 2
    elif (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 = number
    return biggest

bigNumber = biggestNumber(-1,5,6,10,-9,105)
print("biggest", bigNumber)

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

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

相关文章

24年计算机等级考试22个常见问题解答❗

24年9月计算机等级考试即将开始&#xff0c;整理了报名中容易遇到的22个问题&#xff0c;大家对照入座&#xff0c;避免遇到了不知道怎么办&#xff1f; 1、报名条件 2、报名入口 3、考生报名之后后悔了&#xff0c;不想考了&#xff0c;能否退费&#xff1f; 4、最多能够报多少…

【MySQL】(基础篇十五) —— 增删改数据

增删改数据 本文介绍如何利用SQL的INSERT语句将数据插入表中。以及如何利用UPDATE和DELETE语句进一步操纵表数据。 数据插入 INSERT是用来插入&#xff08;或添加&#xff09;行到数据库表的。插入可以用几种方式使用 插入完整的行&#xff1b;插入行的一部分&#xff1b;插…

目标检测技术学习

最近公司做一个目标检测相关的项目&#xff0c;对目标检测以及相关的深度学习知识有一些了解。这里整理一下。 一、目标检测定义 什么是目标检测&#xff1f;最近还碰到一个朋友做的项目&#xff0c;是无人机目标检测的&#xff0c;很有意思&#xff08;据说还是军事用途&…

SpringBoot的冬奥会科普平台 LW +PPT+源码

3 平台分析 3.1 平台可行性分析 3.1.1 经济可行性 由于本平台是作为毕业设计平台&#xff0c;且平台本身存在一些技术层面的缺陷&#xff0c;并不能直接用于商业用途&#xff0c;只想要通过该平台的开发提高自身学术水平&#xff0c;不需要特定服务器等额外花费。所有创造及工…

python离线安装第三方库、及其依赖库(单个安装,非批量移植)

文章目录 1.外网下载第三方库、依赖库2.内网安装第三方库3.补充附录内网中离线安装python第三方库,这时候只能去外网手动下载第三方库,再传回内网进行安装。 问题是python第三方库往往有其前置依赖包,你很难清楚某个第三方库依赖的是哪些依赖包,更难受的是依赖包可能还有其…

谷歌个人号14天封闭测试,又添新要求?怎么提高封测通过率?

相信不少在Google Play上架应用的开发者们&#xff0c;对谷歌个人号的20人连续14天的封闭测试感到头疼。谷歌对个人号提出周期长达14天的封测要求&#xff0c;主要是希望开发者们能上架质量更好、体验感更好的app到谷歌商店。 而随着谷歌行业的发展&#xff0c;这项政策要求的执…

双网卡设置路由网络不通原因之一:静态ip设置失败

1.主要现象&#xff1a; 外网通&#xff0c;内网不通 外网IP设置 内网IP设置 路由表设置 内网不通 2.主要原因&#xff1a;在适配器中设置的内网静态IP没有成功 设置静态IP失败 在命令行使用ipconfig命令看到内网适配器的静态IP为192.168.0.55&#xff0c;并不是我们设置的1…

密码学及其应用——GMP库在密码学中的应用

GMP&#xff08;GNU Multiple Precision arithmetic library&#xff0c;GNU多精度算术库&#xff09;是一个针对大整数运算的库。这个库提供了许多针对多种多精度类型的计算函数&#xff1a; - 大整数&#xff1a;Z - 大有理数&#xff1a;Q - 大浮点数&#xff1a;R 1. 密码学…

Unity URP简单烘焙场景步骤

Unity URP简单烘焙场景步骤 前言项目场景布置灯光模型Lighting设置环境设置烘焙前烘焙后增加角色 前言 项目中要烘焙一个3D场景&#xff0c;用的URP渲染管线&#xff0c;简单记录一下。 项目 场景布置 灯光 因为场景中有能动的东西&#xff0c;需要一部分实时光照&#xf…

vuejs3+elementPlus后台管理系统,左侧菜单栏制作,跳转、默认激活菜单

默认激活菜单,效果&#xff1a; 默认激活菜单&#xff0c;效果1&#xff1a; 默认激活菜单&#xff0c;效果2&#xff1a; 跳转链接效果&#xff1a; 制作&#xff1a; <script setup> import {useUserStore} from "/stores/userStore.js"; import {ref} fr…

FKA总结

问题点&#xff1a; 原因分析: 工作状态下进入充电模式&#xff0c;程序检测到的电压会降低&#xff0c;比如8.07V的电池电压&#xff0c;它处于充满的临界状态&#xff0c;开机情况下程序检测的电压会降到7.98V&#xff0c;然后进入充电模式显示红灯 关机状态下进入充电模式…

volatile关键字(juc编程)

volatile关键字 3.1 看程序说结果 分析如下程序&#xff0c;说出在控制台的输出结果。 Thread的子类 public class VolatileThread extends Thread {// 定义成员变量private boolean flag false ;public boolean isFlag() { return flag;}Overridepublic void run() {// 线…

数据结构与算法3---栈与队

一、栈 1、顺序栈 #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> #include <stdlib.h> //开辟空间#define MAXSIZE 50//顺序栈的基本算法 typedef struct {int stack[MAXSIZE];int top; }SqStack;//初始化 void InitStack(SqStack* S) {S->top …

[BUUCTF从零单排] Web方向 01.Web入门篇之粗心的小李解题思路

这是作者新开的一个专栏《BUUCTF从零单排》&#xff0c;旨在从零学习CTF知识&#xff0c;方便更多初学者了解各种类型的安全题目&#xff0c;后续分享一定程度会对不同类型的题目进行总结&#xff0c;并结合CTF书籍和真实案例实践&#xff0c;希望对您有所帮助。当然&#xff0…

JEnv-for-Windows 详细使用

管理员执行jenv.bat文件 执行正常, 接下来就是按照官网的命令就行了 文件下载地址 https://download.csdn.net/download/qq_43071699/89462664 JEnv 是一个强大的Java版本管理工具&#xff0c;允许开发者在多个Java版本之间轻松切换。以下是一些常用的JEnv命令&#xff0c;这…

【网络安全产品】---网闸

了解了不少安全产品&#xff0c;但是对网闸的理解一直比较模糊&#xff0c;今天 what 网闸是安全隔离与信息交换系统的简称&#xff0c;使得在不影响数据正常通信的前提下&#xff0c;让络在不连通的情况下数据的安全交换和资源共享&#xff0c;对不同安全域/网络之间实现真正…

vue项目——前端CryptoJS加密、解密

1、vue项目需要安装CryptoJS安装包 npm install crypto-js 2、在项目中引入CryptoJS import CryptoJS from crypto-js 3、使用&#xff0c;代码如下 // 此处key为16进制let key jiajiajiajiajiajiajiajia;console.log(密钥&#xff1a;, key);// key格式化处理key Crypt…

web中间件漏洞-weblogic漏洞-弱口令war包上传

web中间件漏洞-weblogic漏洞-弱口令war包上传 弱口令war包上传 制作war包 jar cvf ma.war.(最后的.代表打包当前目录) 弱口令weblogic/weblogic123 点击部署后、一直点击下一步 访问webshell

网络基础篇:网络模型

目录 一、初识网络 二、网络的分层 OSI七层模型 TCP/IP四层模型 网络与系统的关系 网络传输基本流程 数据包封装和分用 三、IP地址与MAC地址 认识IP地址 认识MAC地址 IP与MAC的关系 一、初识网络 同一台设备上的进程间通信有很多种方式 &#xff1a; 管道&#xff08…

Java基础 - 练习(四)打印九九乘法表

Java基础练习 打印九九乘法表&#xff0c;先上代码&#xff1a; public static void multiplicationTable() {for (int i 1; i < 9; i) {for (int j 1; j < i; j) {// \t 跳到下一个TAB位置System.out.print(j "" i "" i * j "\t"…