02. Python基础知识

一、注释

  在开发程序过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当添加注释,以辅助自己或其他开发人员解读代码。注释是给程序员看的,为了让程序员方便阅读代码,解释器会忽略注释。在 Pyton 中,注释分为单行注释和多行注释。

  • 单行注释:在 Python 中,使用 “#” 作为单行注释,从符号 “#” 开始直到换行为止
  • 多行注释:在 Python 中,以一对三个引号(单引号和双引号都行)引起来的内容为多行注释
# 这是一个单行注释
print("Hello world!")   # print()函数可以向终端打印一段话'''这是一个多行注释
'''"""这同样也是一个多行注释
"""

“#” 与注释的内容建议以一个空格隔开

二、关键字

关键字描述
and逻辑运算符,与
as创建别名
assert用于调试
break跳出循环
class定义类
continue继续循环的下一个迭代
def定义函数
del删除对象
elif在条件语句中使用
else用于条件语句,表示当前条件不成立时的分支
except处理异常,发生异常时如何执行
False布尔值,表示假值
finally处理异常,无论是否存在异常,都将执行这一段代码
for创建 for 循环
from导入模块的特定部分
global声明全局变量
ifif 条件语句
import导入模块
in检查列表、元组等集合中是否存在某个值
is测试两个变量是否相等
lanbda创建匿名函数
None表示 null 值
nonlocal声明非局部变量
not逻辑运算符,非
or逻辑运算符,或
passnull 语句,一条什么都不做的语句
raise产生异常
return退出函数并返回值
True布尔值,表示真值
try编写 try…except 语句,执行可能出现异常的语句
while创建 while 循环
with用于简化异常处理
yield结束函数,返回生成器

三、变量

  变量(variable),就是可以变量的量,它可以用来保存字面量,并且变量中保存的字面量是不定的。变量本身没有任何意思,它会根据不同的字面值表示不同的意思。

  在 Python 中使用变量,不需要声明,直接为变量赋值即可。

变量名 = 变量值
a = 10
print(a)

  但是不能使用没有赋值的变量,如果使用没有赋值过的变化,会报错;

b
print(b)

  这段代码在执行后,会报如下的错误:

Traceback (most recent call last):File "e:/Source/Software/python/template.py", line 1, in <module>b
NameError: name 'b' is not defined

  Python 是一个动态类型的语言,可以为变量赋任何类型的值,也可以任意修改变量的值;在 Python 中,使用内置函数 type() 可以返回变量的类型。

a = 10
print(a)
# 使用type()函数可以查看变量的类型
print(type(a))a = "hello"
print(a)
print(type(a))

  在 Python 中允许多个变量指向同一个值,可以使用 id() 函数返回变量所指向的内存地址。

a = b = 123
print(a)
print(id(a))print(b)
print(id(b))

Python 中变量的使用原则是先定义在使用;

在 Python 中,使用内置函数 type() 可以返回变量类型,使用内置函数 id() 可以返回变量所指的内存地址;

四、常量

  常量 就是程序运行过程中,值不能改变的量。在 Python 中,并没有提供定义常量的保留字,不过在 PEP 8 规范中规定了常量由大写字母和下划线组成,但是在实际项目中,常量首次赋值后,还是可以被其它代码修改的。

USER_ID = 1001
print(USER_ID)USER_ID = 1002
print(USER_ID)

五、标识符

  标识符 可以简单的理解为一个名字,它主要用来标识变量、函数、类、模块 和 其它对象的名称。

5.1、标识符的命名规则

  • 标识符中可以包含字母、数字、_,但是不能使用数字开头
  • 标识符不能是 Python 中的关键字和保留字
  • 标识符区分大小写

如果使用不符合标准的标识符,将会报错:SyntaxError: invalid syntax

5.2、标识符的命名规范

  在 Python 中主要遵循两种命名规范:

  • 下划线命名法
    • 所有单词小写,单词之间使用 _ 分隔
  • 帕斯卡命名法(大驼峰命名法)
    • 每个单词的首字母大写,其余字母小写

不建议使用 Python 中的函数名作为标识符;

六、数据类型

  数据类型 指的是变量值的类型,也就是可以为变量赋哪些值。我们可以通过 type(变量) 的方式查看变量存储的数据类型。在 Python 中,变量是没有类型的,但是它存储的数据有类型。

6.1、数值类型

  数值类型 是不可变类型,如果修改数值类型变量的值,那么会先把该值存放在新开辟的内容中,然后修改变量让其指向新的内存地址。在 Python 语言中,数值类型主要包括 整数浮点数复数

6.1.1、整数类型

  整数 用来表示整数值,即没有小数部分的数值。在 Python 语言中,整数 包括 正整数负整数0,并且它的位数是任意的。整数类型包括 十进制整数、八进制整数、十六进制整数 和 二进制整数。

a = 10
print(a)                # 整数
# 使用type()函数可以查看变量的类型
print(type(a))
print(id(a))a = 0b10                # 二进制的10  
print(a)
print(id(a))a = 0o10                # 八进制的10
print(a)
print(id(a))a = 0x10                # 十六进制的10
print(a)
print(id(a))

  在书写很大的数时,可以使用下划线将其中的位分组,使其更加清晰易读。当我们打印这种使用下划线的数时,Python 不会打印其中的下划线。这时因为在存储这种数时,Python 会忽略其中的下划线。在对数字位分组时,即使不是将每个三位分成一组,也不会影响最终的值。

num = 100_000_000
print(num)
print(type(num))num = 1_0000_0000
print(num)

Python 中的整数大小没有限制,可以是一个无限大的整数;

如果数字过大,可以使用下划线作为分隔符;

其它进制的整数,默认是以是十进制的形式打印的;

十进制整数的不能以 0 开头;

6.1.2、浮点类型

  浮点数整数部分小数部分 组成,主要用于处理包括小数的数。浮点数可以使用科学计数法表示。

a = 3.14            # 浮点数
print(a)
print(type(a))

6.1.3、复数类型

  Python 中的 复数 与数学中的复数形式一致,都是由 实部 和 虚部 组成,并且使用 j 或 J 表示虚部。当表示一个复数时,可以将其实部和虚部相加。

a = 3 + 1j            # 复数
print(a)
print(type(a))

6.2、布尔类型

  布尔类型 主要用于表示 真值假值。在 Python 中,标识符 TrueFalse 被解释为 布尔值。另外,Python 中的布尔值可以转化为整数值,True 表示 1,False 表示 0

  在 Python 中,所有的对象都可以进行真值测试,其中只有下面列出的几种情况得到的值为假。

  • False 或 None
  • 数值中的零,包括 0、0.0、虚数0
  • 空序列,包括 字符串、空元组、空列表、空字典
  • 自定义对象的实例,该对象的 __bool__ 方法返回 False 或者 __len__ 方法返回 0
a = True
print(a)
print(type(a))a = False
print(a)
print(type(a))

6.3、序列

  Python 序列(Sequence)是指按特定顺序依次排列的一组数据,它们可以占用一块连续的内存,也可以分散到多块内存中。Python 中的序列类型包括 字符串(str)、列表(list)、元组(tuple)、字典(dict)和 集合(set)。

6.3.1、字符串类型

  字符串 就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在 Python 中,字符串属于不可变序列,通常使用 单引号(‘’)、双引号(“”) 或 三引号(‘’‘’‘’ 或 “”“”“”)括起来。这三种引号形式在语义上没有差别,只是在形式上有些差别。其中 单引号双引号 中的字符必须在同一行上,而 三引号 内的字符序列可以分步在连续的多行上。

a = 'hello world!'
print(a)
print(type(a))a = "Sakura"
print(a)a = """hello
my name is Sakura"""
print(a)a = '''
hello world
你好,世界!
'''
print(a)

  Python 中的字符串还支持转义字符。转义字符 是使用 反斜杠(\)对一些特殊字符进行转义。常见的转义字符如下:

转义字符说明
\续行符
\b退格,将当前位置移到前一列
\f换页
\n换行符
\r回车,将当前位置移到本行开头
\t水平制表符,用于横向跳到下一个制表位
\0
\"双引号
\’单引号
\\一个反斜杠
\0dd八进制数,dd 范围为 0~7
\xhh十六进制数,hh 范围为 0~f
print("hello \world!")
print("\thello")
print("鲁迅说:\"这句话我从未说过\"")
print("子曰:\'学而时习之,不亦说乎!\'")
print("御坂美琴 夏娜\r木之本樱")
print("\\")
print("你好,\n世界")
print("Sakura \bKinomoto")

6.3.2、列表类型

  Python 中列表是由一系列按特定顺序排列的元素组成的,它是 Python 中内置的可变序列。在形式上,列表的所有元素都放在一对中括号 “[]” 中,两个相邻元素间使用逗号 “,” 分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放入到列表中,并且同一个列表中,元素的类型可以不同,因为它们之间没有任何关系。

# 列表中可以保存任意的对象
my_list = [10,"hello",True,None,[1,2,3]]
print(my_list)
print(type(my_list))

  列表中的对象都会按照插入的顺序存储到列表中,第一个插入的对象保存到第一个位置,第二个保存在第二个位置。我们也可以通过 索引 的方式获取指定的元素。索引 是元素在列表中的位置,列表中的每一个元素都有一个索引。索引是 0 开始的整数,列表第一个位置索引为 0,第二个位置索引为 1,依次类推。

names = ["Sakura","Mikoto","Shana"]
print(names[0])
print(names[1])
print(names[2])

  在 Python 中索引可以是 负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引是 -1,倒数第二个第二个元素的索引值为 -2,以此类推。

names = ["Sakura","Mikoto","Shana"]
print(names[-1])
print(names[-2])
print(names[-3])

6.3.3、元组类型

  元组(tuple)是 Python 中的一种序列结构,和列表类似,也是由一系列按特定顺序排列的元素组成,但它是不可变序列。因此,元组也可以称为不可变的列表。在形式上,元素的所有元素都放在一对 “()” 中,两个相邻元素间使用 “,” 分隔。在内容上,可以将整数、实数、字符串、列表、元组等任何类型的内容放在元组中,并且在同一个元素中,元素的类型可以不同。

# 元组中可以保存任意的对象
my_tuple = (10,"hello",True,None,[1,2,3])
print(my_tuple)
print(type(my_tuple))

  元组中的对象都会按照插入的顺序存储到元组中,第一个插入的对象保存到第一个位置,第二个保存在第二个位置。我们也可以通过 索引 的方式获取指定的元素。索引 是元素在元组中的位置,元组中的每一个元素都有一个索引。索引是 0 开始的整数,元组第一个位置索引为 0,第二个位置索引为 1,依次类推。

names = ("Sakura","Mikoto","Shana")
print(names[0])
print(names[1])
print(names[2])

  在 Python 中索引可以是 负数。这个索引从右向左计数,也就是从最后的一个元素开始计数,即最后一个元素的索引是 -1,倒数第二个第二个元素的索引值为 -2,以此类推。

names = ("Sakura","Mikoto","Shana")
print(names[-1])
print(names[-2])
print(names[-3])

从元素和列表的定义上看,这两种结构比较相似,两者之间的主要区别为:元组是不可变序列,列表是可变序列。即元组的元素不可以单独修改,而列表可以任意修改。

6.3.4、字典类型

  在 Python 中,字典(dictionary)是一系列 键值对。每个键都与一个值关联,可以使用键来访问与之关联的值。字典中的 元键 只能是 不可变类型 的数据类型,也就是可哈希类型。与键相关的值可以是数字、字符串、列表 乃至字典等。事实上,可将任意的 Python 对象用作字典的值。

person = {"name":"Sakura","age":10}
print(person)
print(type(person))

  在 Python 中,我们可以通过 key 来获取它所对应的 value 值。

person = {"name":"Sakura","age":10}
print(person["name"])
print(person["age"])

如果使用的字典中不存在键会报以下错误:KeyError: 'gender'

字典不支持索引取值!

6.3.5、集合类型

  在 Python 中,集合与列表类似,集合它是无序(不是按照元素的插入顺序保存)的可变序列。在集合中不能出现重复的元素。在形式上,集合的所有元素都放在一对 “{}” 中,两个相邻元素间使用 “,” 分隔。集合中的元素只能是不可变类型的数据类型,也就是可哈希类型。

names= {"Sakura","Mikoto","Shana","Sakura"}
print(names)
print(type(names))

6.4、数据类型转换

  在 Python 中,提供了如下的函数用来进行数据类型的转化。

int(x, base=10)             # 将x转换为以base为进制的整数类型
float(x=0.0)                # 将x转换为浮点数类型
complex(real=0, imag=0)     # 创建一个复数
str(object='')              # 将x转换为字符串
chr(i)                      # 将整数x转换为一个字符
ord(c)                      # 将一个字符x转换为它对应的整数值
bin(x)                      # 将一个整数x转换为一个二进制的字符串
oct(x)                      # 将一个整数x转换为一个八进制的字符串
hex(x)                      # 将一个整数x转换为一个十六进制字符串
a = "3"
b = int(a)
print(b)
print(type(b))a = "3.14"
b = float(a)
print(b)
print(type(b))a = complex(1,2)
print(a)
print(type(a))a = 3.14
b = str(a)
print(b)
print(type(b))
print(chr(97))                      # 将整数转换为字符
print(ord("a"))                     # 将字符转换为整数
print(int("15"))                    # 默认以十进制的形式读取字符串
print(bin(15))                      # 将十进制整数转换为二进制整数
print(int("0b1111",base=2))         # 以二进制的形式读取字符串
print(oct(15))                      # 将十进制整数转换为八进制整数
print(int("0o17",base=8))           # 以八进制的形式读取字符串
print(hex(15))                      # 将十进制整数转换为十六进制整数

类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新的对象;

以上的转换函数不会原有的变量产生影响,它是将对象转换位指定的类型并将其作为返回值返回,如果需要修改原来的变量,则需要对变量进行重新赋值;

七、基本输入输出

  默认情况下,在 Python 中,使用内置的 print() 函数将结果输出到控制台上,其基本语法格式如下:

print(输出内容)

  其中,输出内容可以是数字和字符串(字符串需要使用引号括起来),此类内容将直接输出,也可以是包含运算符的表达式,此类内容将计算结果输出。

  在 Python 中,默认情况下,一条 print() 语句输出后会自动换行,如果想要一次输出多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。在输出时,也可以把结果输出到指定文件。

  在 Python 中,使用内置函数 input() 可以接收用户的接盘输入。input() 函数的基本用法如下:

变量名 = input("提示文本")

  其中,变量名 为保存用户输入结果的变量,引号内的内容用于提示要输入的内容。

  在 Python 3 中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。

name = input("请输入你的姓名:")
age = int(input("请输入你的年龄:"))print("name: ",name,", age: ",age)
print(type(name))
print(type(age))

八、编程规范

  Python 中采用 PEP 8 作为代码规范,其中 PEP 是 Python Enhancement Proposal 的缩写,翻译过来是 Python 增加建议书,而 “PEP 8” 的 8 是版本号。

  1. 每个 import 语句应仅导入一个模块,避免依次导入多个模块;
  2. 不要在行尾添加分号 “;”,也不要使用分号将两条命令放在同一行;
  3. 建议每行不要超过 80 个字符,如果超过,建议使用小括号 “()” 将多行内容隐式的连接起来,而不推荐使用反斜杠反斜杠 “\” 进行连接;
  4. 使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或类的定义)之间使用两行,而方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行;
  5. 通常情况下,运算符两侧、函数参数之间、逗号“,”两侧仅以使用空格进行分隔;
  6. 应该避免在循环中使用 “+” 和 “+=” 运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用 join() 方法连接列表;
  7. 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当显示的判断还是必要的;

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

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

相关文章

NVR管理平台EasyNVR多品牌NVR管理工具的流媒体视频融合与汇聚管理方案

随着信息技术的飞速发展&#xff0c;视频监控已经成为现代社会安全管理和业务运营不可或缺的一部分。无论是智慧城市、智能交通、还是大型企业、校园安防&#xff0c;视频监控系统的应用都日益广泛。NVR管理平台EasyNVR&#xff0c;作为功能强大的流媒体服务器软件&#xff0c;…

fastadmin实现站内通知功能

实现效果如下 application/admin/view/common/header.html <style>#notificationMenu {display: none;position: absolute;top: 40px;right: 0;background: #fff;border-radius: 6px;padding: 10px 0;width: 300px;box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);z-inde…

大语言模型---LoRA中损失值的计算

文章目录 概要损失计算流程小结 概要 Llama-7B模型的LoRA微调训练中&#xff0c;通过使用Cross-Entropy Loss来度量模型输出的预测分布和真实标签分布之间的距离&#xff0c;来衡量模型的准确性。 本文主要介绍LoRA中损失值的计算流程。 Cross-Entropy Loss作用&#xff1a;是…

【Vue】指令扩充(指令修饰符、样式绑定)

目录 指令修饰符 按键修饰符 事件修饰符 双向绑定指令修饰符 输入框 表单域 下拉框 单选按钮 复选框 样式绑定 分类 绑定class 绑定style tab页切换示例 指令修饰符 作用 借助指令修饰符&#xff0c;可以让指令的功能更强大 分类 按键修饰符&#xff1a;用来…

集成金蝶云星空数据至MySQL的完整案例解析

金蝶云星空数据集成到MySQL的技术案例分享 在企业信息化系统中&#xff0c;数据的高效流动和准确同步是确保业务连续性和决策支持的重要环节。本文将聚焦于一个具体的系统对接集成案例——金蝶云星空的数据集成到MySQL&#xff0c;方案名称为“2金蝶物料同步到商城中间表”。 …

为什么transformer的时间复杂度是N的平方,具体是里面的哪一个计算流程最占用时间

Transformer的时间复杂度为 O(N2)&#xff0c;其中 NN 是输入序列的长度。这一复杂度主要来源于自注意力机制&#xff08;self-attention mechanism&#xff09;的计算过程。 在Transformer模型中&#xff0c;自注意力机制的核心步骤是计算查询&#xff08;Query&#xff09;、…

如何在Linux上安装Canal同步工具

1. 下载安装包 所用到的安装包 canal.admin-1.1.4.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1B1LxZUZsKVaHvoSx6VV3sA 提取码&#xff1a;v7ta canal.deployer-1.1.4.tar.gz 链接&#xff1a;https://pan.baidu.com/s/13RSqPinzgaaYQUyo9D8ZCQ 提取码&#xff1a;…

操作系统大会2024 | 麒麟信安根植openEuler社区,持续技术创新 共拓新应用 探索新机遇

[中国&#xff0c;北京&#xff0c;2024年11月15日] 以“以智能&#xff0c;致世界”为主题的操作系统大会2024在北京中关村国际创新中心召开&#xff0c;本次大会由openEuler社区和全球计算联盟主办&#xff0c;旨在汇聚全球产业界力量&#xff0c;推动基础软件根技术持续创新…

Wallpaper壁纸制作学习记录03

添加用户属性 Wallpaper Engine 允许用户在用户属性的帮助下进一步自定义您的壁纸。用户属性允许您为用户提供进一步调整和自定义壁纸各个方面的选项&#xff0c;包括完全隐藏壁纸中的对象。 创建可见性属性 每个元素在右上角都有一个 visibility 属性&#xff08;由眼睛图标…

杰理-gpadc

gpadc API是系统提供的用于adc采集的接口 void adc_init(); //adc功能初始化&#xff0c;一般在板级配置.c文件已经默认调用&#xff0c;用户无需再重复调用。 示例&#xff1a; static void WANG_printf(void *_arg) {//adc_init(); //板级配置中默认会调用&#xff0c;实际…

如何使用Jmeter做性能测试?

&#x1f345; 点击文末小卡片 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 今天我们来说说jmeter如何进行性能测试&#xff0c;我们都知道jmeter工具除了可以进行接口功能测试外&#xff0c;还可以进行性能测试。当项目趋于稳定&#xf…

【CSP CCF记录】201903-1第16次认证 小中大

题目 样例1输入 3 -1 2 4 样例1输出 4 2 -1 样例1解释 4 为最大值&#xff0c;2 为中位数&#xff0c;−1 为最小值。 样例2输入 4 -2 -1 3 4 样例2输出 4 1 -2 样例2解释 4 为最大值&#xff0c;(−13)21为中位数&#xff0c;−2为最小值。 思路 本题两个注意点&#xff0…

windows下,用CMake编译qt项目,出现错误By not providing “FindQt5.cmake“...

开发环境&#xff1a;windows10 qt5.14&#xff0c; 编译器msvc2017x64&#xff0c;CMake3.30&#xff1b; 现象&#xff1a; CMakeList文件里&#xff0c;如有find_package(Qt5 COMPONENTS Widgets REQUIRED) target_link_libraries(dis_lib PRIVATE Qt5::Widgets) 用CMak…

自由学习记录(23)

Lua的学习 table.concat(tb,";") 如果表里带表&#xff0c;则不能拼接&#xff0c;表里带nil也不能&#xff0c;都会报错 true和false也不可以&#xff0c;数字和字符串可以 if要和一个end配对&#xff0c;所以 if a>b then return true end end 两个end …

JavaWeb-表格标签-06

表格标签 table code: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>表格标签</title><…

【Stable Diffusion】 超大尺寸绘制、分区控制,详解Tiled Diffusion VAE插件功能

今天&#xff0c;我们将向您介绍一款令人兴奋的AI工具——Tiled Diffusion & VAE插件。这是一款基于Stable Diffusion技术的创新应用&#xff0c;旨在为您提供超大尺寸绘制和分区控制的便捷体验。无论您是AI绘画的新手还是专业人士&#xff0c;这个工具都能为您带来极大的便…

【大数据分析机器学习】分布式机器学习

【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈智能大数据分析 ⌋ ⌋ ⌋ 智能大数据分析是指利用先进的技术和算法对大规模数据进行深入分析和挖掘&#xff0c;以提取有价值的信息和洞察。它结合了大数据技术、人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&a…

染色质重塑与心衰中的细胞间通讯机制:解读一篇Nature力作

染色质重塑与心衰中的细胞间通讯机制&#xff1a;解读一篇Nature力作 一、文献的主要行文思路与观点 在这篇发表在 Nature 的文章中&#xff0c;作者聚焦于心脏衰竭中的慢性炎症与纤维化问题&#xff0c;试图揭示免疫细胞与成纤维细胞之间的通讯机制。研究围绕以下几个核心问题…

WordPress添加类似说说、微博的时间轴微语页面

这个版本的WordPress可以直接使用&#xff0c;CSS样式可以完美兼容。效果如图 使用方法&#xff1a; 一、后台配置 新建微语功能 将下面的代码复制粘贴到主题的functions.php函数文件中&#xff0c;为WordPress添加微语功能。添加完成后&#xff0c;可以在WordPress后台菜单…

解决IDEA报包不存在,但实际存在的问题

前言 最近在把一个亿老项目交割给同事&#xff0c;同事在导入项目运行时遇到IDEA报包不存在&#xff0c;但实际存在的问题&#xff0c;最终通过以下方式解决 现象 在IDEA里启动运行项目&#xff0c;报某个类有问题&#xff0c;引入的包不存在。 点击这个引入的包&#xff0c;可…