Python语言基础知识(一)

文章目录

      • 1、Python内置对象介绍
      • 2、标识符与变量
      • 3、数据类型—数字
      • 4、数据类型—字符串与字节串
      • 5、数据类型—列表、元组、字典、集合
      • 6、运算符和表达式
      • 7、运算符和表达式—算术运算符
      • 8、运算符和表达式—关系运算符
        • 9.1、运算符和表达式— 成员测试运算符in
        • 9.2、运算符和表达式—同一性测试运算符is
        • 9.3、运算符和表达式— 位运算符
        • 9.4、运算符和表达式— 集合运算符
        • 9.5、运算符和表达式— 逻辑运算符
        • 9.6、运算符和表达式—复合赋值运算符
        • 9.7、运算符和表达式— ++、--
        • 9.8、运算符和表达式— Python关键字简要说明

1、Python内置对象介绍

对象是python语言中最基本的概念,在python中处理的一切都是对象。
python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表等。
非内置对象需要导入模块才能使用,如正弦函数sin(x),随机数产生函数random( )等。
在这里插入图片描述
在这里插入图片描述

2、标识符与变量

在Python中,不需要事先声明变量名及其类型,直接赋值即可创建各种类型的对象变量。这一点适用于Python任意类型的对象。
在这里插入图片描述
赋值语句的执行过程是:首先把等号右侧表达式的值计算出来,然后在内存中寻找一个位置把值存放进去,最后创建变量并指向这个内存地址。
在这里插入图片描述
Python中的变量并不直接存储值,而是存储了值的内存地址或者引用,这也是变量类型随时可以改变的原因。

在Python中,允许多个变量指向同一个值,例如:
>>> x = 3
>>> id(x)
1786684560
>>> y = x
>>> id(y)
1786684560>>> x += 6
>>> id(x)
1786684752
>>> y
3
>>> id(y)
1786684560

Python采用的是基于值的内存管理方式,如果为不同变量赋值为相同值(仅适用于-5至256的整数和短字符串),这个值在内存中只有一份,多个变量指向同一块内存地址。

>>> x = 3
>>> id(x)
10417624
>>> y = 3
>>> id(y)
10417624
>>> x = [1, 1, 1, 1]
>>> id(x[0]) == id(x[1])
True

Python属于强类型编程语言,Python解释器会根据赋值或运算来自动推断变量类型。Python还是一种动态类型语言,变量的类型也是可以随时变化的

>>> x = 3
>>> print(type(x))
<class 'int'>
>>> x = 'Hello world.'
>>> print(type(x))                 #查看变量类型
<class 'str'>
>>> x = [1,2,3]
>>> print(type(x))
<class 'list'>
>>> isinstance(3, int)             #测试对象是否是某个类型的实例
True
>>> isinstance('Hello world', str)
True
  • 变量名必须以字母或下划线开头,但以下划线开头的变量在Python中有特殊含义;
  • 变量名中不能有空格以及标点符号(括号、引号、逗号、斜线、反斜线、冒号、句号、问号等等);
  • 不能使用关键字作变量名,可以导入keyword模块后使用print(keyword.kwlist)查看所有Python关键字;
  • 变量名对英文字母的大小写敏感,例如student和Student是不同的变量。
  • 不建议使用系统内置的模块名、类型名或函数名以及已导入的模块名及其成员名作变量名,这将会改变其类型和含义,可以通过dir(builtins)查看所有内置模块、类型和函数;

3、数据类型—数字

Python支持任意大的数字,具体可以大到什么程度仅受内存大小的限制
由于精度的问题,对于实数运算可能会有一定的误差,应尽量避免在实数之间直接进行相等性测试,而是应该以二者之差的绝对值是否足够小作为两个实数是否相等的依据。
在数字的算术运算表达式求值时会进行隐式的类型转换,如果存在复数则都变成复数,如果没有复数但是有实数就都变成实数,如果都是整数则不进行类型转换。

>>> 9999 ** 99                   #这里**是幂乘运算符,等价于内置函数pow()
990148353526723487602263124753282625570559528895791057324326529121794837894053513464422176826916433932586924386677766244032001623756821400432975051208820204980098735552703841362304669970510691243800218202840374329378800694920309791954185117798434329591212159106298699938669908067573374724331208942425544893910910073205049031656789220889560732962926226305865706593594917896276756396848514900989999
>>> 0.3 + 0.2                    #实数相加
0.5
>>> 0.4 - 0.1                    #实数相减,结果稍微有点偏差
0.30000000000000004
>>> 0.4 - 0.1 == 0.3             #应尽量避免直接比较两个实数是否相等
False
>>> abs(0.4-0.1 - 0.3) < 1e-6    #这里1e-6表示10的-6次方
True
>>> import math
>>> math.isclose(0.4-0.1,0.3)
True

Python内置支持复数类型及其运算,并且形式与数学上的复数完全一致

>>> x = 3 + 4j                 #使用j或J表示复数虚部
>>> y = 5 + 6j
>>> x + y                      #支持复数之间的加、减、乘、除以及幂乘等运算
(8+10j)
>>> x * y
(-9+38j)
>>> abs(x)                     #内置函数abs()可用来计算复数的模
5.0
>>> x.imag                     #虚部
4.0
>>> x.real                     #实部
3.0
>>> x.conjugate()              #共轭复数
(3-4j)

Python 3.6.x支持在数字中间位置使用单个下划线作为分隔来提高数字的可读性,类似于数学上使用逗号作为千位分隔符。
在Python数字中单个下划线可以出现在中间任意位置,但不能出现开头和结尾位置,也不能使用多个连续的下划线。

>>> 1_000_000
1000000
>>> 1_2_3_4
1234
>>> 1_2 + 3_4j
(12+34j)
>>> 1_2.3_45
12.345

4、数据类型—字符串与字节串

在Python中,没有字符常量和变量的概念,只有字符串类型的常量和变量,单个字符也是字符串。使用==单引号、双引号、三单引号、三双引号作为定界符(delimiter)==来表示字符串,并且不同的定界符之间可以互相嵌套。

Python 3.x全面支持中文,中文和英文字母都作为一个字符对待,甚至可以使用中文作为变量名。

>>> x = 'Hello world.'                  #使用单引号作为定界符
>>> x = "Python is a great language."   #使用双引号作为定界符
>>> x = '''Tom said, "Let's go."'''     #不同定界符之间可以互相嵌套
>>> print(x)
Tom said, "Let's go."
>>> x = 'good ' + 'morning'             #连接字符串
>>> x
'good morning'
>>> x = 'good ''morning'                #连接字符串,仅适用于字符串常量
>>> x
'good morning'

对str类型的字符串调用其encode()方法进行编码得到bytes字节串,对bytes字节串调用其decode()方法并指定正确的编码格式则得到str字符串。

>>> type('Hello world')                  #默认字符串类型为str
<class 'str'>
>>> type(b'Hello world')                 #在定界符前加上字母b表示字节串
<class 'bytes'>
>>> 'Hello world'.encode('utf8')         #使用utf8编码格式进行编码
b'Hello world'
>>> 'Hello world'.encode('gbk')          #使用gbk编码格式进行编码
b'Hello world'
>>> '烟台'.encode('utf8')               #对中文进行编码
b'\xe7\x83\x9f\xe5\x8f\xb0\xe5\xa4\xa7\xe5\xad\xa6'
>>> _.decode('utf8')                     #一个下划线表示最后一次正确输出结果
'烟台'
>>> '烟台'.encode('gbk')
b'\xd1\xcc\xcc\xa8\xb4\xf3\xd1\xa7'
>>> _.decode('gbk')                      #对bytes字节串进行解码
'烟台'

5、数据类型—列表、元组、字典、集合

在这里插入图片描述

>>> x_list = [1, 2, 3]                 #创建列表对象
>>> x_tuple = (1, 2, 3)                #创建元组对象
>>> x_dict = {'a':97, 'b':98, 'c':99}  #创建字典对象
>>> x_set = {1, 2, 3}                  #创建集合对象
>>> print(x_list[1])                   #使用下标访问指定位置的元素
2
>>> print(x_tuple[1])                  #元组也支持使用序号作为下标
2
>>> print(x_dict['a'])                 #字典对象的下标是“键”
97
>>> 3 in x_set                         #成员测试
True

6、运算符和表达式

在Python中,单个常量或变量可以看作最简单的表达式,使用除赋值运算符之外的其他任意运算符和函数调用连接的式子也属于表达式
在这里插入图片描述

7、运算符和表达式—算术运算符

(1)+运算符除了用于算术加法以外,还可以用于列表、元组、字符串的连接,但不支持不同类型的对象之间相加或连接。

>>> [1, 2, 3] + [4, 5, 6]          #连接两个列表
[1, 2, 3, 4, 5, 6]
>>> (1, 2, 3) + (4,)               #连接两个元组
(1, 2, 3, 4)
>>> 'abcd' + '1234'                #连接两个字符串
'abcd1234'
>>> 'A' + 1                        #不支持字符与数字相加,抛出异常
TypeError: Can't convert 'int' object to str implicitly
>>> True + 3                       #Python内部把True当作1处理
4
>>> False + 3                      #把False当作0处理
3

(2)*运算符除了表示算术乘法,还可用于列表、元组、字符串这几个序列类型与整数的乘法,表示序列元素的重复,生成新的序列对象。字典和集合不支持与整数的相乘,因为其中的元素是不允许重复的。

>>> [1, 2, 3] * 3
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> (1, 2, 3) * 3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> 'abc' * 3
'abcabcabc'

3)运算符/和//在Python中分别表示算术除法算术求整商(floor division)。

>>> 3 / 2                    #数学意义上的除法
1.5
>>> 15 // 4                  #如果两个操作数都是整数,结果为整数
3
>>> 15.0 // 4                #如果操作数中有实数,结果为实数形式的整数值
3.0
>>> -15//4                   #向下取整
-4

4)%运算符可以用于整数或实数的求余数运算,还可以用于字符串格式化,但是这种用法并不推荐。

>>> 789 % 23                       #余数
7
>>> 123.45 % 3.2                 #可以对实数进行余数运算,注意精度问题
1.849999999999996
>>> '%c, %d' % (65, 65)       #把65分别格式化为字符和整数
'A, 65'
>>> '%f,%s' % (65, 65)         #把65分别格式化为实数和字符串
'65.000000,65'

5)** 运算符表示幂乘

>>> 3 ** 2                    #3的2次方,等价于pow(3, 2)
9
>>> pow(3, 2, 8)              #等价于(3**2) % 8
1
>>> 9 ** 0.5                  #9的0.5次方,平方根
3.0
>>> (-9) ** 0.5               #可以计算负数的平方根
(1.8369701987210297e-16+3j)

8、运算符和表达式—关系运算符

Python关系运算符最大的特点是可以连用,其含义与我们日常的理解完全一致。使用关系运算符的一个最重要的前提是,操作数之间必须可比较大小。例如把一个字符串和一个数字进行大小比较是毫无意义的,所以Python也不支持这样的运算。

>>> 1 < 3 < 5                    #等价于1 < 3 and 3 < 5
True
>>> import math
>>> math.isclose(0.4-0.1,0.3)
True
>>> 'Hello' > 'world'              #比较字符串大小
False
>>> [1, 2, 3] < [1, 2, 4]          #比较列表大小
True
>>> {1, 2, 3} < {1, 2, 3, 4}       #测试是否子集
True
>>> {1, 2, 3} == {3, 2, 1}         #测试两个集合是否相等
True
>>> {1, 2, 4} > {1, 2, 3}          #集合之间的包含测试
False
9.1、运算符和表达式— 成员测试运算符in

成员测试运算符in用于成员测试,即测试一个对象是否为另一个对象的元素

>>> 3 in [1, 2, 3]                #测试3是否存在于列表[1, 2, 3]中
True
>>> 5 in range(1, 10, 1)          #range()是用来生成指定范围数字的内置函数
True
>>> 'abc' in 'abcdefg'            #子字符串测试
True
>>> for i in (3, 5, 7):           #循环,成员遍历print(i, end='\t')
3	5	7	
9.2、运算符和表达式—同一性测试运算符is

同一性测试运算符is用来测试两个对象是否是同一个,如果是则返回True,否则返回False。如果两个对象是同一个,二者具有相同的内存地址。

>>> 3 is 3
True
>>> x = [300, 300, 300]
>>> x[0] is x[1]                #基于值的内存管理,同一个值在内存中只有一份
True
>>> x = [1, 2, 3]
>>> y = [1, 2, 3]
>>> x[0] is y[0]
True
9.3、运算符和表达式— 位运算符

位运算符只能用于整数,其内部执行过程为:首先将整数转换为二进制数,然后右对齐,必要的时候左侧补0,按位进行运算,最后再把计算结果转换为十进制数字返回。
位与运算规则为1&1=1、1&0=0&1=0&0=0,位或运算规则为1|1=1|0=0|1=1、0|0=0,位异或运算规则为11=00=0、10=01=1。

左移位时右侧补0,每左移一位相当于乘以2;右移位时左侧补0,每右移一位相当于整除以2

>>> 3 << 2                   #把3左移2位
12
>>> 3 & 7                    #位与运算
3
>>> 3 | 8                    #位或运算
11
>>> 3 ^ 5                    #位异或运算
9.4、运算符和表达式— 集合运算符

集合的交集、并集、对称差集等运算借助于位运算符来实现,而差集则使用减号运算符实现(注意,并集运算符不是加号)。

>>> {1, 2, 3} | {3, 4, 5}          #并集,自动去除重复元素
{1, 2, 3, 4, 5}
>>> {1, 2, 3} & {3, 4, 5}          #交集
{3}
>>> {1, 2, 3} ^ {3, 4, 5}          #对称差集
{1, 2, 4, 5}
>>> {1, 2, 3} - {3, 4, 5}          #差集
{1, 2}
9.5、运算符和表达式— 逻辑运算符

逻辑运算符and、or、not常用来连接条件表达式构成更加复杂的条件表达式,并且and和or具有惰性求值或逻辑短路的特点,当连接多个表达式时只计算必须要计算的值。
另外要注意的是,运算符and和or并不一定会返回True或False,而是得到最后一个被计算的表达式的值,但是运算符not一定会返回True或False。

>>> 3>5 and a>3              #注意,此时并没有定义变量a
False
>>> 3>5 or a>3               #3>5的值为False,所以需要计算后面表达式
NameError: name 'a' is not defined
>>> 3<5 or a>3               #3<5的值为True,不需要计算后面表达式
True
>>> 3 and 5                  #最后一个计算的表达式的值作为整个表达式的值
5
>>> 3 and 5>2
True
>>> 3 not in [1, 2, 3]       #逻辑非运算not
False
>>> 3 is not 5               #not的计算结果只能是True或False之一
True
>>> not 3
False
>>> not 0
True
9.6、运算符和表达式—复合赋值运算符

Python还有赋值运算符=和+=、-=、*=、/=、//=、**=、|=、^=等大量复合赋值运算符。例如,x += 3在语法上等价(注意,在功能的细节上可能会稍有区别)于x = x + 3。

9.7、运算符和表达式— ++、–

Python不支持++和–运算符,虽然在形式上有时候似乎可以这样用,但实际上是另外的含义,要注意和其他语言的区别。

>>> i = 3
>>> ++i                            #正正得正
3
>>> +(+3)                          #与++i等价
3
>>> i++                            #Python不支持++运算符,语法错误
SyntaxError: invalid syntax
>>> --i                            #负负得正,等价于-(-i)
3
>>> ---i                           #等价于-(-(-i))
-3
>>> i--                            #Python不支持--运算符,语法错误
SyntaxError: invalid syntax
9.8、运算符和表达式— Python关键字简要说明

Python关键字只允许用来表达特定的语义,不允许通过任何方式改变它们的含义,也不能用来做变量名、函数名或类名等标识符。

在Python开发环境中导入模块keyword之后,可以使用print(keyword.kwlist)查看所有关键字
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

C++中单引号‘‘和双引号““的区别

操作系统&#xff1a;Windows 10 IDE&#xff1a;CLion 单引号&#xff1a;表示一个字符&#xff0c;例如 a 双引号""&#xff1a;表示一个字符串&#xff0c;例如 "a" 在C中&#xff0c;使用双引号可以方便地创建字符串&#xff0c;而使用单引号可以方便…

使用PCSS实现的实时阴影效果

PCSS的技术可以使得阴影呈现出近硬远软的效果&#xff0c;并且能够实时实现。 其核心理念是通过模拟光源的面积来产生更自然、更柔和的阴影边缘。 具体步骤&#xff1a; 1、生成shadowmap 2、在进行阴影的比较时候进行平均&#xff0c;并非之前的shadow map 或者之后完全的阴影…

python pytorch实现RNN,LSTM,GRU,文本情感分类

python pytorch实现RNN,LSTM&#xff0c;GRU&#xff0c;文本情感分类 数据集格式&#xff1a; 有需要的可以联系我 实现步骤就是&#xff1a; 1.先对句子进行分词并构建词表 2.生成word2id 3.构建模型 4.训练模型 5.测试模型 代码如下&#xff1a; import pandas as pd im…

各大期刊网址

1.NeurIPS&#xff0c;全称Annual Conference on Neural Information Processing Systems&#xff0c; 是机器学习领域的顶级会议&#xff0c;与ICML&#xff0c;ICLR并称为机器学习领域难度最大&#xff0c;水平最高&#xff0c;影响力最强的会议&#xff01; NeurIPS是CCF 推…

List系列集合

List系列集合特点&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 ArrayList&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 LinkedList&#xff1a;有序&#xff0c;可重复&#xff0c;有索引 &#xff08;底层实现不同&#xff01;适合的场景不同&#xff01;…

keepalive路由缓存实现前进刷新后退缓存

1.在app.vue中配置全局的keepalive并用includes指定要缓存的组件路由name名字数组 <keep-alive :include"keepCachedViews"><router-view /></keep-alive>computed: {keepCachedViews() {console.log(this.$store.getters.keepCachedViews, this.…

常见动物经济手术3d模拟交互演示教学实现了教育资源的共享

动物常见病防治是兽医必备的技能&#xff0c;为了让实习兽医在上岗作业前拥有丰富的常见病防治经验。借助动物常见病防治VR虚拟仿真技术开展动物常见病防治VR模拟实操培训&#xff0c;能极大方便院校实训。 提高教学质量 传统的动物医学教学往往依赖于理论知识和实验室实践&…

C语言实现植物大战僵尸(完整版)

实现这个游戏需要Easy_X 这个在我前面一篇C之番外篇爱心代码有程序教你怎么下载&#xff0c;大家可自行查看 然后就是需要植物大战僵尸的素材和音乐&#xff0c;需要的可以在评论区 首先是main.cpp //开发日志 //1导入素材 //2实现最开始的游戏场景 //3实现游戏顶部的工具栏…

《Java 并发编程艺术》笔记(上)

如何减少上下文切换 减少上下文切换的方法有无锁并发编程、CAS算法、使用最少线程和使用协程。 无锁并发编程&#xff1a;多线程竞争锁时&#xff0c;会引起上下文切换&#xff0c;所以多线程处理数据时&#xff0c;可以用一些办法来避免使用锁。如将数据的 ID 按照 Hash 算法…

Dockerfile与Docker网络

一、Dockerfile 1、概念&#xff1a; Dockerfile是用来构建docker镜像的文本文件&#xff0c;是由构建镜像所需要的指令和参数构建的脚本。 2、构建步骤&#xff1a; ① 编写Dockerfile文件 ② docker build命令构建镜像 ③ docker run依据镜像运行容器实例 Dockerfile …

探索低代码之路——JNPF

目录 一、低代码行业现状 二、产品分析 1.可视化应用开发 2.流程管理 3.整个平台源码合作 三、架构和技术 技术栈 四、规划和展望 低代码平台&#xff08;Low-code Development Platform&#xff09;是一种让开发者通过拖拽和配置&#xff0c;而非传统的手动编写大量代…

外包干了8个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

java单人聊天

服务端 package 单人聊天;import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import…

Ubuntu22.04 使用Docker部署Neo4j出错 Exited(70)

项目场景&#xff1a; 最近需要使用Neo4j图数据库&#xff0c;因此打算使用docker部署 环境使用WSL Ubuntu22.04 问题描述 拉下最新Neo4j镜像&#xff0c;执行命令部署 启动容器脚本 docker run -d -p 7474:7474 -p 7687:7687 \ --name neo4j \ --env "NEO4J_AUTHneo…

洗鞋机行业分析:2023年市场发展前景及消费现状

随着消费主力的转移&#xff0c;年轻群体在消费中的话语权和影响力越来越大&#xff0c;“精致懒”正在成为潮流。洗鞋机作为消费升级时代的产物&#xff0c;自诞生以来&#xff0c;经过十几年的发展&#xff0c;逐渐被年轻消费者熟知&#xff0c;洗鞋机品牌阵营和产品种类也变…

任课老师和班主任的区别

任课老师和班主任都是学校中非常重要的角色&#xff0c;他们的工作性质和职责略有不同。作为一位老师&#xff0c;我来说说任课老师和班主任的区别。 任课老师的主要职责是教授学科知识&#xff0c;并负责解答学生在学习过程中遇到的问题。他们的工作涉及到备课、讲课、布置作业…

Qt之基于QMediaPlayer的音视频播放器(支持常见音视频格式)

Qt自带了一个Media Player的例子,如下图所示: 但是运行这个例子机会发现,连最基本的MP4格式视频都播放不了。因为QMediaPlayer是个壳(也可以叫框架),依赖本地解码器,视频这块默认基本上就播放个MP4,甚至连MP4都不能播放,如果要支持其他格式需要下载k-lite或者LAVFilte…

Java 并发编程面试题——Java 线程间通信方式

目录 1.✨Java 线程间有哪些通信方式&#xff1f;1.1.volatile 和 synchronized 关键字1.2.等待/通知机制1.2.1.概述1.2.2.经典范式 1.3.管道输入/输出流1.4.信号量 2.Thread.join() 有什么作用&#xff1f;它的使用场景是什么&#xff1f;3.Java 中需要主线程等待子线程执行完…

mac M系列芯片安装chatGLM3-6b模型

1 环境安装 1.1 mac安装conda. 下载miniconda&#xff0c;并安装 curl -O https://repo.anaconda.com/miniconda/Miniconda3-latest-MacOSX-arm64.sh sh Miniconda3-latest-MacOSX-arm64.sh1.2 创建虚拟环境并激活 创建名为chatglm3的虚拟环境&#xff0c;python版本为3.10…

js vue 输入正确手机号/邮箱后,激活“发送验证码”按钮

按钮禁止点击状态&#xff1a; 按钮能够点击状态&#xff1a; 我采用的方式是监听手机号/邮箱输入框的输入事件&#xff0c;即实判断用户输入的数据是否满足规则&#xff0c;如果满足手机号/邮箱规则&#xff0c;则激活“获取验证码”按钮。 话不多说&#xff0c;上代码 样式…