零基础学Python之核心基础知识

news2024/12/25 13:38:13

1.Python入门简介

(1)什么是Python

  • Life is short, you need Python!
  • 人生苦短,我用Python

Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

在这里插入图片描述

从排行榜中可以看出,近两年Python的编程热度提升迅猛,目前已经在第一位的位置。

(2)Python的特点

  • 易于学习: Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
  • 易于阅读: Python代码定义的更清晰。
  • 易于维护: Python的成功在于它的源代码是相当容易维护的。
  • 一个广泛的标准库: Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
  • 互动模式: 互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
  • 可移植: 基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
  • 可扩展: 如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
  • 数据库: Python提供所有主要的商业数据库的接口。
  • GUI编程: Python支持GUI可以创建和移植到许多系统调用。
  • 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

(3)Python的应用领域

  • 人工智能: Python是学习人工智能的重要基础语言之一,许多开源机器学习项目都基于Python编写,例如人脸识别系统。
  • 云计算: Python服务于云计算行业,许多主流云计算框架,如OpenStack,都采用Python开发。
  • Web开发: Python拥有多种免费的Web函数库和网页模板系统,能够快速搭建Web框架,实现Web开发。
  • 爬虫技术: Python在网络爬虫领域占据主导地位,能够自动化地进行数据采集和分析。
  • 网络游戏开发: Python可以用来编写游戏逻辑,尤其是2D游戏,例如阴阳师就是使用Python编写的。
  • 数据分析: Python在金融分析、量化交易等领域得到广泛应用,可以进行复杂的数据处理和报表生成。
  • 自动化和脚本编程: Python是一种强大的脚本语言,适用于自动化任务和批量处理。
  • 科学计算和数学: Python包含许多科学计算库,如Numpy、Pandas和Matplotlib,以及用于数值计算和符号计算的SciPy和SymPy。
  • 教育: Python因其易学易用的特性,被许多学校和大学用作编程入门语言。
  • 系统运维: Python在自动化运维中有很大的优势,因为它有许多第三方程序库,如Ansible,适合于系统和网络的维护和管理。

2.Python环境的搭建

(1)下载Python安装包

首先,进入Python的官网https://www.Python.org/,根据自己的系统选择对应的版本。

在这里插入图片描述

在这里插入图片描述

找到对应的版本下载安装即可。安装之后在命令行输入python,出现python版本后证明安装成功。

在这里插入图片描述

(2)集成开发环境之PyCharm的安装

进入pycharm的官网 https://www.jetbrains.com/pycharm/,点击下载。默认是给30天免费使用,具体怎么长时间使用,大家自己去搞定哈!嘿嘿。

选择专业版,点击download,耐心等待下载完成。

在这里插入图片描述

(3)编写第一个Python程序hello word

下载完成编辑器以及安装好python环境,我们来写第一个python程序hello word,打开编辑器,创建python file。

在这里插入图片描述

输入一行代码:print("hello word"),右键运行。

在这里插入图片描述

在这里插入图片描述

在控制台打印出hello word,ok,就这么简单,那么接下来,我会带你们一点一点揭开Python的神秘面纱。

3.Python基础数据类型

(1)Python中数字类型

  • 整型:可正可负,不带小数点。在Python3中,整型没有大小限制,所以也可以存储长整型。
  • 浮点型:可正可负,带小数点,可以使用科学计数法表示 1.1e2 = 110。
  • 复数:复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型。

注意:数字类型这种类型是不可变的,如果改变数字数据类型的值,将重新分配内存空间。

a = 1
b = 1
print(id(a))
print(id(b))
print("--------")
b = 2
print(id(a))
print(id(b))

打印结果:

4537968432
4537968432
--------
4537968432
4537968464

发现当a和b都是1的时候打印的数字是一样的,当b改变成另外一个值时,a b打印的数字就不一致了。

Id()函数用于返回一个对象的唯一身份标识。

(2)Python中布尔类型

对与错、是与非、0和1、正与反,都是传统意义上的布尔类型,在Python中,统一使用True和False来表示布尔类型。

在布尔类型一般用于表示条件是否成立,成立用True,不成立用False。

在Python中可以通过bool函数来测试一个表达式的布尔类型的结果 。

print("数字1:", bool(1))
print("数字0:", bool(0))
print("空字符:", bool(""))
print("字符1:", bool("1"))

打印结果:

数字1: True
数字0: False
空字符: False
字符1: True

(3)Python中字符类型

**字符串的定义:**字符串是由数字、字母、符号组成的一串字符。它是编程语言中表示文本的数据类型。

在Python中,使用双引号、单引号、三引号括起来的一系列字符就是字符串,无论是使用单引号还是双引号,都必须成对出现。

注意:字符一旦赋值不可变,如果改变字符串的值,相当于重新分配了空间。

在Python中,如果某些字符本身有特殊含义或无法使用ASCII码进行表示的时候,需要对其进行转义操作,一般用单一反斜杠 \ 进行转义。

常见的转义字符:

转义字符含义
\a发出系统铃声
\’单引号
\n换行
\\反斜杠
\"双引号
\b退格
\t纵向制表符
\v横向制表符
\r回车
\f换页

字符串的常见操作:

  • 字符串替换:replace()
str1 = "Hello World"
str2 = str1.replace("World", "LiXiang")
print(str2)

# 输出:Hello LiXiang
  • 字符串切割:split()
str1 = "Hello,World,LiXiang"
list = str1.split(",")
print(list)

# 输出:['Hello', 'LiXiang', 'World']
  • 字符串格式化:format()
result = "My name is {}, and I am {} years old."
print(result.format("lixiang", "18"))

# 输出:My name is lixiang, and I am 18 years old.
  • 字符串查找:find()、index()
data = "Hello world."
# 使用find()方法查找指定子字符串的位置,找不到返回-1
result = data.find("World")
# 使用index()方法查找指定子字符串的位置,找不到会抛出异常
result = data.index("World")
  • 字符串大小写转换:upper()、lower()
str1 = "Hello World"
# 转换为大写
print(str1.upper())
# 转换为小写
print(str1.lower())

# 输出:
# HELLO WORLD
# hello world

4.Python运算符

(1)算数运算符

算术运算符的作用:用于支持日常一些普通的算术运算。

算数运算符作用
+
-
*
/
%求模
//取整除
**n次幂
# 加(+)、减(-)、乘(*)、除(/)、%(%)、取整数(//)、n次幂(**)
print(1+2)
print(1-2)
print(1*2)
print(1/2)
print(1%2)
print(3//2)
print(2**2)

(2)比较运算符

比较运算符的作用:用于支持日常一些常用的比较运算。

比较运算符作用
>大于
<小于
==等于
!=不等于
>=大于等于
<=小于等于
<>不等于
# 大于(>)、小于(<)、等于(==)、不等于(!=)、大于等于(>=)、小于等于(<=)、不等于(<>,3.7版本已废弃)
print(1 > 2)
print(1 < 2)
print(1 == 1)
print(1 != 2)
print(1 >= 2)
print(1 <= 2)

(3)赋值运算符

赋值运算符的作用:用于设置值。

赋值运算符作用
=直接赋值
+=将加后的结果赋值到自身
-=将减后的结果赋值到自身
*=将乘后的结果赋值到自身
/=将除后的结果赋值到自身
//=将取整除后的结果赋值到自身
%=将取模后的结果赋值到自身
**=将幂运算后的结果赋值到自身
a = 1
print(a)
a += 10
print(a)
a -= 3
print(a)
a *= 8
print(a)
a /= 2
print(a)
a //= 2
print(a)
a %= 4
print(a)
a **= 2
print(a)

(4)位运算符

程序中的所有数在计算机内存中都是以二进制的形式储存的。

位运算就是直接对整数在内存中的二进制位进行操作。

位运算符作用
&按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。
|按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。
<<左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>>右移动运算符:把">>“左边的运算数的各二进位全部右移若干位,”>>"右边的数指定移动的位数。
~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1。
^按位异或运算符:当两对应的二进位相异时,结果为1。
print(1 & 0)
print(1 & 1)
print(1 | 0)
print(0 | 0)
print(2 << 2)
print(2 >> 2)
print(~1)
print(1 ^ 1)

(5)逻辑运算符

逻辑运算符作用
and表示与关系,前后均成立为真。对于x and y,如果 x 为 False,x and y 返回 x,否则它返回 y 的计算值。
or表示或关系,前后只要一个为真即为真。对于 x or y ,x如果 x 是非,它返回 x 的值,否则它返回 y 的计算值。
not表示非关系,后面条件不成立时为真。对于not x,如果 x 为 True,返回 False 。如果x 为 False,它返回 True。
print(True and False)
print(True or False)
print(not True)

(6)成员运算符

成员运算符作用
in表示在xxx里面
not in表示不在xxx范围内
is是xxx
is not不是xxx
a = "abc"
b = "ab"
print(b in a)
print(b not in a)
print(b is "ab")
print(b is not "ab")

**is 与 == 区别:**is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

(7)运算符优先级

# 索引运算符 (x[index] 或 x[index:index2[:index3]])
# 属性访问 (x.attrbute)
# 乘方 (**)
# 按位取反 (~)
# 符号运算符 (+(正号)或 -(负号))
# 乘、除(*、/、//、%)
# 加、减 (+、- )
# 位移 (>>、<<)
# 按位与 (&)
# 按位异或 (^)
# 按位或 (|)
# 比较运算符 (==、!=、>、>=、<、<=)
# is 运算符 (is、is not)
# in 运算符 (in、not in)
# 逻辑非 (not)
# 逻辑与 (and)
# 逻辑或 (or)

5.Python流程控制语句

(1)条件控制语句

条件语句是用来判断给定的条件是否满足(表达式值是否为0),并根据判断的结果(真或假)决定执行的语句,选择结构就是用条件语句来实现的。

语法:

if 条件:
   结果
elif 条件:
   结果
else
   结果
# 假如判断成绩评级,如果为90 分以上则为A,80以上为B,否则为C
score = 89
if score >= 90:
    print("A")
elif score >= 80:
    print("B")
else:
    print("C")
    
# 输出:B

(2)三元表达式

条件为真时的结果 if 条件判断 else 条件为假的结果,转换为表达式如下:x if x > y else y

a = 3
b = 4
print(a if a > b else b)

# 输出:4

(3)for循环语句

Python中for循环语句的基本语法如下:

for var in eles:
    do something
else:
    do something

var 表示每个元素,eles表示元素的集合,else表示循环执行完成后的操作。

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]
for var in arr:
    print(var)
else:
    print("循环执行完成")

(4)while循环语句

while语句跟for循环语句类似,均是在需要循环执行某些语句时使用,while循环语句的具体语法:

while condition:
    do something
result = 0
while result < 10:
    result += 1
else:
    print("循环执行完成")

while循环与else,表示当while后面的条件不成立时,执行else里的代码块。

(5)循环退出语句及其作用

在循环中,当碰到某些特定的条件时要退出整个循环的时候,可以使用break关键字退出循环。

for i in range(10):
    if i == 5:
        break
    else:
        print(i, end=" ")

在循环中,当碰到某个特定条件时,想跳过当次循环,可以使用continue关键字。

for i in range(10):
    if i == 5:
        continue
    else:
        print(i, end=" ")

(6)嵌套循环

在Python中,与其他大多数语言一样,是允许循环之间嵌套。

for var in eles:
  for var in eles:
    do something
do something
# 打印9x9乘方表
for i in range(1, 10):
    for j in range(1, i+1):
        print(i, "*", j, "=", i*j, end=" ")
    print("")

在这里插入图片描述

6.Python核心数据结构

(1)列表(list)

列表是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除。

在Python中,使用方括号[ ]表示列表:[item,item,item,item,item,item,item]。

操作说明
list.append(obj)在列表后面新增元素
del list[i]删除元素
len(list)求列表长度
list[i]读取第i个元素
list[-i]读取倒数第i个元素
list[i,j]从第i个元素截取
list.index(objc)从列表中找出某个值第一次出现的地方
list.insert(i,obj)从第i个元素的位置插入元素
list.pop(i)移除第i个元素,并返回其值
eles = [1, 2, 3, 4, 5, 6, 7, 8, 9]
eles.append(10)
print(eles)
del eles[0]
print(eles)
print(len(eles))
print(eles[5])
print(eles.index(5))
eles.insert(19, 2)
print(eles)
print(eles.pop(5))

(2)集合(set)

在Python中,使用大括号{ }或set()函数创建集合,如下:{item,item…}

注意:当我们要创建一个空集合的时候,只能用set()进行创建,因为{ }表示的是空的字典。

操作说明
set.add(item)往集合里添加一个元素
set.update(item)往集合中添加元素,item是可迭代对象如:列表、元组、字典
set.remove(item)将元素item从集合set中移除,如果元素不存在,则发生错误
set.discard(item)将元素item从集合set中移除,如果元素不存在,不会发生错误
set.pop()随机取出并删除一个元素
set.len()计算集合个数
set.clear()清空集合
union()取两个集合并集
eles = {1, 2, 3}
print(eles)
eles = set()
print(eles)
eles.add(10)
print(eles)
eles.update([1, 2, 3, 4])
print(eles)
eles.discard(3)
print(eles)
print(len(eles))
eles.pop()
print(eles)
eles.clear()
print(eles)

(3)元组(tuple)

Python 的元组与列表非常相似,不同之处在于元组的元素不能修改、整个元组也不能变动。

在Python中,元组使用小括号( ),创建元组的时候,只要在括号中添加相应的元素,并使用逗号分隔即可,如下:

tup = (1, 2, 3)

注意:当我们要创建一个只有一个元素的元组的时候,在元素后面要加一个逗号,如:tup = (1,)而不能使用(1)。

操作说明
tup[i]获取第i个元素
tup[-i]获取倒数第i个元素
tup[i:j]从第i个元素起到第j个元素
tup = (1, 2, 3)
print(tup[1])
for i in tup:
    print(i)
print(tup[-1])

(4)字典(dict)

在Python中,字典类型可存储任意类型对象,它用于存放具有映射关系的数据。其映射关系通过key value的形式体现。在Python中使用,key,value通过key:value的形式存在,同样通过大括号{ }包裹,每个键值对通过逗号分隔,形式如下:

{key1 : value1, key2 : value2 }

在字典中,key不能重复,如果放入相同的key,后者的值会覆盖前者 。

操作说明
update({1,2})新增元素
dict[‘key’]通过key获取对应的值,如果没有对应的key会报错
dict[‘key’] = 123修改key的值
del dict[‘key’]删除一个key及其对应的value
del dict清空整个字典
len(dict)字典元素个数
dict1 = {"name": "lixiang", "age": 18, "sex": 1}
dict2 = {"address": "天津"}
print(dict1)
print(dict1["name"])
dict1["age"] = 20
print(dict1)
del dict1["sex"]
print(dict1)
dict1.update(dict2)
print(len(dict1))

(5)range

range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。

range函数的基本语法:

range(start,stop,step)
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5;
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
print(list(range(6)))
# 输出: [0, 1, 2, 3, 4, 5]
print(list(range(1,6)))
# 输出: [ 1, 2, 3, 4, 5]
print(list(range(1, 6, 2)))
# 输出: [ 1, 3, 5]
print(list(range(-11, -6)))
# 输出: [-11, -10, -9, -8, -7]
print(list(range(1, -6, -1)))
# 输出: [1, 0, -1, -2, -3, -4, -5]

(6)可变对象与不可变对象

这里的可变与不可变是相对于内存里的那块地方是否可以改变,通俗点讲,就是内存中对应的地址在值。

发生变动的时候会不会变。地址不变时,为可变对象,变动时,为不可变对象。

可变类型:列表、字典

不可变类型:数字、字符串、元组

a = 1
print(id(a))
a = a + 1
print(id(a))

# 输出:
# 140734638482064
# 140734638482045

a = [1, 2, 3]
print(id(a))
a.append(4)
print(id(a))

# 输出:
# 2935304900885
# 2935304900885

ok,关于Python的核心基础知识我们就介绍到这里啦,记得给博主三连哦!!!
在这里插入图片描述

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

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

相关文章

【数据库】创建索引的注意事项

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;数据库 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言 正文 结语 我的其他博客 前言 在数据库设计和优化中&#xff0c;索引的合理使用是提高查询性能和加速数据检索的关键因素之一。通过选…

Facebook未来展望:社交媒体的下一个篇章

社交媒体一直是连接人与人之间的纽带&#xff0c;而Facebook则一直在推动这一领域的发展。随着科技不断演进和社会需求的不断变迁&#xff0c;Facebook正积极筹谋社交媒体的下一个篇章。本文将深入剖析Facebook的未来展望&#xff0c;探讨其在社交媒体领域所迎接的新时代。 1. …

数字化管理成为了企业数字化转型的重要支撑

随着科技的不断发展&#xff0c;数字化转型已经成为企业发展的重要趋势。数字化转型是指企业利用数字化技术&#xff0c;如云计算、大数据、人工智能等&#xff0c;来提升自身业务水平、提高效率、降低成本&#xff0c;从而实现可持续发展。在这个过程中&#xff0c;数字化管理…

Linux笔记之bash和expect脚本中的$和$argv参数匹配

Linux笔记之bash和expect脚本中的 和 和 和argv参数匹配 —— 杭州 2024-02-03 code review! 文章目录 Linux笔记之bash和expect脚本中的 和 和 和argv参数匹配1.bash脚本2.expect脚本 1.bash脚本 在Linux的bash脚本中&#xff0c;参数和脚本文件名的变量使用方式与你提供的稍…

2024美赛B题详细技术文档22页+配套每小问代码+数据集汇总去+参考论文

2024美赛B题 &#xff08;完整版在文末&#xff09; Maritime Cruises Mini-Submarines (MCMS)是一家总部位于希腊的公司&#xff0c;专门制造能够携 带人类到达海洋最深处的潜水艇。潜水艇是由一艘主船运输和支持的&#xff0c;可以在水下自由 活动。MCMS 现在希望利用他们的潜…

【Vue3实战】TypeScript前端实战基础

【Vue3实战】TypeScript前端实战基础 前言一、TypeScript的由来二、什么是TypeScript?三、静态类型检查四、类型注解和类型推导五、可选参数和默认参数六、接口和类型别名接口接口的可选设置类型 七、类和继承接口的继承交叉类型模拟继承 八、泛型什么是泛型泛型接口泛型函数泛…

使用MATLAB驱动USRP-N320实现OFDM自收自发

文章目录 前言一、收发代码二、截取一帧 OFDM三、执行主函数四、运行结果五、资源自取 前言 本文作为实验结果记录及测试&#xff0c;方便后面回顾所做的工作。本文基于一台电脑和一台 USRP 设备实现了 OFDM 自发和自收功能 一、收发代码 ofdm_tx_rx_test.m 核心代码&#x…

使用 IDEA 开发一个简单易用的 SDK

目录 一、什么是 SDK 二、为什么要开发 SDK 三、开发 SDK 的详细步骤 四、导入 SDK 进行测试 附&#xff1a;ConfigurationProperties 注解的介绍及使用 一、什么是 SDK 1. 定义&#xff1a;软件开发工具包 Software Development Kit 2. 用于开发特定软件或应用程序的工…

大数据应用开发3-Scala笔记1

一、编程框架 Scala语言是在JVM上运行的&#xff0c;兼容Java语法 区分大小写 - Scala是大小写敏感的&#xff0c;这意味着标识Hello 和 hello在Scala中会有不同的含义。 类名 - 对于所有的类名的第一个字母要大写。 如果需要使用几个单词来构成一个类的名称&#xff0c;每个…

单片机学习笔记---定时器/计数器(简述版!)

目录 定时器的介绍 定时计数器的定时原理 定时计数器的内部结构 两种控制寄存器 &#xff08;1&#xff09;工作方式寄存器TMOD &#xff08;2&#xff09;控制寄存器TCON 定时计数器的工作方式 方式0 方式1 方式2 方式3 定时器的配置步骤 第一步&#xff0c;对…

嵌入式软件中常见的 8 种数据结构

数据结构是一种特殊的组织和存储数据的方式&#xff0c;可以使我们可以更高效地对存储的数据执行操作。数据结构在计算机科学和软件工程领域具有广泛而多样的用途。 几乎所有已开发的程序或软件系统都使用数据结构。此外&#xff0c;数据结构属于计算机科学和软件工程的基础。当…

el-table点击某一行选中改变背景色且执行方法

elementUI table表格点击某一行选中并且改变背景色 使用:row-style"rowStyle"及row-click“selectRow”&#xff1a; 其中 selectRow 方法中&#xff1a; row 输出&#xff1a;当前行的内容 column 输出&#xff1a;当前列的信息 event 输出&#xff1a;当前事件 …

四、Redis之配置文件

redis配置文件的名称 redis.conf 通过命令 find / -name redis.confvim redis.conf通过 : set nu 设置行号: set nonu 取消行号/关键字 搜索关键字: set noh 取消高亮选择4.1 Units 配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持 bytes&#…

springBoot静态资源文件夹以及文件夹之间的优先级

1、springBoot静态资源文件夹&#xff0c;系统默认路径&#xff0c;优先级由大到小 classpath:/META-INF/resources/ classpath:/resources/ classpath:/static/ classpath:/public/ 比如当static文件夹中和public文件夹中都存在a.html 浏览器访问localhost:8080/a.html将访问…

JS高级(二)-深入对象、内置构造函数、综合案例

文章目录 1.深入对象1.1创建对象的三种方式1.2构造函数1.3实例成员1.4静态成员 2.内置构造函数2.1 Object2.2 Array2.3显示赠品案例2.4包装类型2.4.1 String2.4.2 Number 3.综合案例——购物车展示 1.深入对象 了解面向对象的基础概念&#xff0c;能够利用构造函数创建对象。 1…

【TCP】四次挥手(终止连接)

前言 TCP&#xff08;传输控制协议&#xff09;是互联网协议&#xff08;IP&#xff09;中的一种重要传输层协议&#xff0c;用于在通信的计算机之间建立可靠的、有序的和错误校验的数据传输。在TCP连接中&#xff0c;数据传输是双向的&#xff0c;因此需要一种机制来开始和结…

2024美赛数学建模A题思路分析 - 资源可用性和性别比例(2)

# 1 赛题 问题A&#xff1a;资源可用性和性别比例 虽然一些动物物种存在于通常的雄性或雌性性别之外&#xff0c;但大多数物种实质上是雄性或雌性。虽然许多物种在出生时的性别比例为1&#xff1a;1&#xff0c;但其他物种的性别比例并不均匀。这被称为适应性性别比例的变化。…

基于SSM的健身房会员管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的健身房会员管理系统(有报告)。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring SpringMvc Mybatis J…

网络原理TCP/IP(1)

文章目录 端口号UDP协议 在网络通信中&#xff0c;协议非常重要 协议进行了分层 应用层就是对应着应用程序&#xff0c;是程序员打交道最多的这一层&#xff0c;调用系统提供的网络api写出来的代码都是属于应用层的 应用层有很多现成的协议&#xff0c;但是更多的还是程序员需要…

【Spark系列6】如何做SQL查询优化和执行计划分析

Apache Spark SQL 使用 Catalyst 优化器来生成逻辑执行计划和物理执行计划。逻辑执行计划描述了逻辑上如何执行查询&#xff0c;而物理执行计划则是 Spark 实际执行的步骤。 一、查询优化 示例 1&#xff1a;过滤提前 未优化的查询 val salesData spark.read.parquet(&quo…