Python 基础 (1)
Python 基础 (1)
· 简介
Python 是一种解释型、面向对象的语言。由吉多·范罗苏姆(Guido van Rossum)于
1989 年发明,1991 年正式公布。官网:www.python.org
Python 单词是"大蟒蛇"的意思。作者因为正在追剧<<蒙提·派森.....>>遂起名python.
Python特点
- 可读性强
可读性远比听上去重要的多得多。一个程序会被反复的修改,可读性强意味着让你可以在更短时间内学习和记忆,直接提高生产率。
- 简洁,简洁,简洁
研究证明,程序员每天可编写的有效代码数是有限的。完成同样功能只用一半的代码,其实就是提高了一倍的生产率。
Python 是由 C 语言开发,但是不再有 C 语言中指针等复杂数据类型,Python 的简洁性让开发难度和代码幅度大幅降低,开发任务大大简化。程序员再也不需要关注复杂的语法,而是关注任务本身.
使用python输入以下代码:(查看绘图效果)
import turtle
t = turtle.Pen()
for x in range(360):
t.forward(x)
t.left(59)
同时python的特点还有:
面向对象
免费和开源
可移植性和跨平台
Python 会被编译成与操作系统相关的二进制代码,然后再解释执行。这种方式和 java 类似,大大提高了执行速度,也实现了跨平台。
丰富的库(丰富的标准库, 多种多样的扩展库)
可扩展性。 可嵌入到 C 和 C++语言。 胶水式语言
python应用范围:
- 科学计算
- 人工智能
-
WEB 服务端和大型网站后端。
YouTube、gmail 等应用基于 python 开发。
- GUI 开发(图形用户界面开发)
- 游戏开发
- 移动设备
- 嵌入式设备
- 系统运维
- 大数据
- 云计算
python解释器:
Python 程序的执行依赖于 Python 解释器。常用的 Python 解释器有:
-
CPython
使用 c 语言实现的解释器,最常用的解释器。通常说的解释器指的就是它。
- Jython
使用 java 语言实现的解释器。Jython 可以直接调用 java 类库,适合在 java 平台上开发
-
IronPython
.NET 平台上使用的解释器。可直接调用.NET 平台的类,适合.NET 平台上开发
-
PyPy
使用 Python 语言实现的解释器
python下载安装:
后期工作开发代码较多时,使用编辑工具pycharm.进行书写代码事半功倍.
下载及激活请自行百度(自己激活较麻烦,很多方法也是随时失效...)
可以使用python下载自带的开发环境:IDLE:
IDLE 是 Python 的官方标准开发环境,Python 安装完后同时就安装了 IDLE。
IDLE常用快捷键:
快捷键 |
说明 |
|
Alt+N |
Alt+P |
查看历史命令上一条、下一条 |
Ctrl+F6 |
重启 shell,以前定义的变量全部失效 |
|
F1 |
打开帮助文档 |
|
Alt+/ |
自动补全前面曾经出现过的单词 |
|
Ctrl + [ |
Ctrl + ] |
缩进代码和取消缩进 |
Alt+M |
打开模块代码,先选中模块,然后按下此快捷键,会帮你打开改模块的 py 源码供浏览 |
|
Alt+C |
打开类浏览器,方便在源码文件中的各个方法体之间切换 |
|
F5 |
运行程序 |
python基本格式:
-
恰当的空格,缩进问题
- 逻辑行首的空白(空格和制表符)用来决定逻辑行的缩进层次,从而用来决定语句的分组。
- 语句从新行的第一列开始。
- 缩进风格统一:每个缩进层次使用 单个制表符 或四个空格(IDE 会自动将制表符设置成 4 个空格Python 用缩进而不是{}表示程序块
- Python 区分大小写
-
注释
-
行注释
每行注释前加#号。当解释器看到#,则忽略这一行#后面的内容
- 段注释
使用三个连续单引号(''')。当解释看到''',则会扫描到下一个''',然后忽略他们之间的内容。
python程序组成:
- Python 程序由模块组成。一个模块对应 python 源文件,一般后缀名是:.py。
- 模块由语句组成。运行 Python 程序时,按照模块中语句的顺序依次执行。
- 语句是 Python 程序的构造单元,用于创建对象、变量赋值、调用函数、控制语句等。
-
在 IDLE 环境中,我们可以通过 File-->new 创建 Python 文件,并可以编辑该文件内容。我们也可以通过 File-->save/save as 保存文件。一般保存成扩展名为 py 的文件。
需要执行编辑好的文件,可以用快捷键 F5 或者点击 Run-->Run module。
注: 很多编程语言通过字符(例如:花括号{})、关键字(例如:begain/end)来划分代码块。同时,在配合代码的缩进增加可读性。"龟叔"设计 Python 语言时,直接通过缩进来组织代码块。"缩进"成为了 Python 语法强制的规定。缩进时,几个空格都是允许的,但是数目必须统一。我们通常采用"四个空格"表示一个缩进。
同时,也要避免将"tab 制表符"或者 tab 与空格混合的缩进风格。目前,常用的编辑器一般设置成:tab 制表符就是 4 个空格。
Python 中,一切皆对象。每个对象由:标识(identity)、类型(type)、value(值)组成。
- 标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数 id(obj) 可返回对象 obj 的标识。
- 类型用于表示对象存储的"数据"的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用 type(obj)获得对象的所属类型。
- 值表示对象所存储的数据的信息。使用 print(obj)可以直接打印出值。对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。
变量不需要显式声明类型。根据变量引用的对象,Python 解释器自动确定数据类型。
每个对象都有数据类型,只支持该类型支持的操作。
标识符:用于变量、函数、类、模块等的名称。标识符有如下特定的规则:
- 区分大小写。如:sxt 和 SXT 是不同的
- 第一个字符必须是字母、下划线。其后的字符是:字母、数字、下划线
- 不能使用关键字。比如:if、or、while 等。
- 以双下划线开头和结尾的名称通常有特殊含义,尽量避免这种写法。比如:__init__是类的构造函数。
可以通过 del 语句删除不在使用的变量
赋值:用于同一个对象赋值给多个变量。
x=y=123 相当于:x=123; y=123
或者a,b,c=4,5,6 相当于:a=4;b=5;c=6
Python 不支持常量,即没有语法规则限制改变一个常量的值。我们只能约定常量的命名规则,以及在程序的逻辑上不对常量的值作出修改
每个对象都有类型,python 中最基本的内置数据类型:
-
整型
整数,2345,10,50
-
浮点型
小数,3.14 或者科学计数法 314e-2
-
布尔型
表示真假,仅包含:True、False
- 字符串型
由字符组成的序列:'abc23',"博客园"
运算符 |
说明 |
示例 |
结果 |
+ |
加法 |
3+2 |
5 |
- |
减法 |
30-5 |
25 |
* |
乘法 |
3*6 |
18 |
/ |
浮点数除法 |
8/2 |
4.0 |
// |
整数除法 |
7//2 |
3 |
% |
模(取余) |
7%4 |
3 |
** |
幂 |
2**3 |
8 |
使用 int()实现类型转换:
- 浮点数直接舍去小数部分。如:int(9.9)结果是:9
- 布尔值 True 转为 1,False 转为 0。 如:int(True)结果是 1
- 字符串符合整数格式(浮点数格式不行)则直接转成对应整数,否则报错。
自动转型:
整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
Python2 中,int 是 32 位,可以存储从-2147483648 到 2147483647 的整数
(约±21 亿)。Long 类型是 64 位,可以存储:-2^63--2^63-1 之间的数值。
Python3 中,int 可以存储任意大小的整数,long 被取消。
- 类似于 int(),我们也可以使用 float()将其他类型转化成浮点数。
- 整数和浮点数混合运算时,表达式结果自动转型成浮点数。比如:2+8.0 的结果是 10.0
-
round(value)可以返回四舍五入的值
注:但不会改变原有值,而是产生新的值
时间计算:
计算机中时间的表示是从"1970 年 1 月 1 日 00:00:00"开始,以毫秒(1/1000 秒)进行计算。我们也把 1970 年这个时刻成为"unix 时间点"。
这样,我们就把时间全部用数字来表示了。
Python2 中没有布尔值,直接用数字 0 表示 False,用数字 1 表示 True。
Python3 中,把 True 和 False 定义成了关键字,但他们的本质还是 1 和 0,甚至可以和数字相加。
同一运算符:
运算符 |
描述 |
is |
is 是判断两个标识符是不是引用同一个对象 |
is not |
is not 是判断两个标识符是不是引用不同对象 |
- is 比较两个对象的 id 值是否相等,是否指向同一个内存地址;
- == 比较的是两个对象的内容是否相等,值是否相等;
- 小整数对象[-5,256]在全局解释器范围内被放入缓存供重复使用;
- is 运算符比 == 效率高,在变量和 None 进行比较时,应该使用 is。
字符串: python3 直接支持 Unicode,可以表示世界上任何书面语言的字符。Python3 的字符默认就是 16 位 Unicode 编码,ASCII 码是 Unicode 编码的子集。
使用内置函数 ord()可以把字符转换成对应的 Unicode 码;使用内置函数 chr()可以把十进制数字转换成对应的字符
可以通过单引号或双引号创建字符串。例如:a='abc'; b="sxt"
使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。连续三个单引号或三个双引号,可以帮助我们创建多行字符串
Python 允许空字符串的存在,不包含任何字符且长度为 0
转义字符:
我们可以使用"\+特殊字符",实现某些难以用字符表示的效果。比如:换行等。常见的转义字符有这些:
转义字符 |
描述 |
||
|
|
||
\\ |
反斜杠符号 |
||
\' |
单引号 |
||
\" |
双引号 |
||
\b |
退格(Backspace) |
||
\n |
换行 |
||
\t |
横向制表符 |
||
\r |
回车 |
字符串拼接:
-
可以使用+将多个字符串拼接起来。例如:'aa'+ 'bb' ==>'aabb'。
- 如果+两边都是字符串,则拼接。
- 如果+两边都是数字,则加法运算。
- 如果+两边类型不同,则抛出异常。
- 可以将多个字面字符串直接放到一起实现拼接。例如:'aa''bb'==>'aabb'
使用*可以实现字符串复制。
我们前面调用 print 时,会自动打印一个换行符。有时,我们不想换行,不想自动添加换行
符。我们可以自己通过参数 end = "任意字符串"。实现末尾添加任何内容
print("sxt",end=' ')
print("sxt",end='##')
print("sxt")
运行结果:
sxt sxt##sxt
我们可以使用 input()从控制台读取键盘输入的内容:
myname = input("请输入名字:")
str()可以帮助我们将其他数据类型转换为字符串。例如:
str(5.20) ==> '5.20' str(3.14e2)==>'314.0' str(True) ==> 'True'
字符串的本质就是字符序列,我们可以通过在字符串后面添加[],在[]里面指定偏移量,可以提取该位置的单个字符。
正向搜索:
最左侧第一个字符,偏移量是 0,第二个偏移量是 1,以此类推。直到 len(str)-1为止。
反向搜索:
最右侧第一个字符,偏移量是-1,倒数第二个偏移量是-2,以此类推,直到-len(str)为止
字符串是"不可改变"的,我们通过[]可以获取字符串指定位置的字符,但是我们不能改变字符串。
可以通过replace()实现替换指定字符
切片 slice 操作可以让我们快速的提取子字符串。标准格式为:
[起始偏移量 start:终止偏移量 end:步长 step]
典型操作(三个量为正数的情况)如下:
操作和说明 |
示例 |
结果 |
[:] 提取整个字符串 |
"abcdef"[:] |
"abcdef" |
[start:]从 start 索引开始到结尾 |
"abcdef"[2:] |
"cdef" |
[:end]从头开始知道 end-1 |
"abcdef"[:2] |
"ab" |
[start:end]从 start 到 end-1 |
"abcdef"[2:4] |
"cd" |
[start:end:step]从 start 提取到 end-1,步长是 step |
"abcdef"[1:5:3] |
"bd" |
split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。如果不指定分隔符,则默认使用空白字符(换行符/空格/制表符)。
>>>a = "to be or not to be"
>>>a.split()
['to', 'be', 'or', 'not', 'to', 'be']
join()的作用和 split()作用刚好相反,用于将一系列子字符串连接起来
>>> a = ['sxt','sxt100','sxt200']
>>> '*'.join(a)
'sxt*sxt100*sxt200'
可以通过 strip()去除字符串首尾指定信息。通过 lstrip()去除字符串左边指定信息, rstrip()去除字符串右边指定信息。
关于字符串大小写转换的情况:
示例 |
说明 |
结果 |
||
a.capitalize() |
产生新的字符串,首字母大写 |
'Gaoqi love programming, love sxt' |
||
a.title() |
产生新的字符串,每个单词都首字母大写 |
'Gaoqi Love Programming, Love Sxt' |
||
a.upper() |
产生新的字符串,所有字符全转成大写 |
'GAOQI LOVE PROGRAMMING, LOVE SXT' |
||
a.lower() |
产生新的字符串,所有字符全转成小写 |
'gaoqi love programming, love sxt' |
||
a.swapcase() |
产生新的,所有字母大小写转换 |
'GAOQI sxt' |
LOVE |
PROGRAMMING, LOVE |
center()、ljust()、rjust()这三个函数用于对字符串实现排版。示例如下:
>>> a="SXT"
>>> a.center(10,"*")
'***SXT****'
>>> a.center(10)
' SXT '
>>> a.ljust(10,"*") 'SXT*******'
其他方法:
1. isalnum() 是否为字母或数字
2. isalpha() 检测字符串是否只由字母组成(含汉字)。
- isdigit() 检测字符串是否只由数字组成。
- isspace() 检测是否为空白符
- isupper() 是否为大写字母
- islower() 是否为小写字母
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
基本语法是通过 {} 和 : 来代替以前的 % 。
format 函数可以接受不限个参数,位置可以不按顺序。
我们通过示例进行格式化的学习。
>>> a = "名字是:{0},年龄是:{1}"
>>> a.format("高淇",18)
'名字是:高淇,年龄是:18'
>>> a.format("高希希",6)
'名字是:高希希,年龄是:6'
>>> b = "名字是:{0},年龄是{1}。{0}是个好小伙"
>>> b.format("高淇",18)
'名字是:高淇,年龄是 18。高淇是个好小伙'
>>> c = "名字是{name},年龄是{age}"
>>> c.format(age=19,name='高淇')
'名字是高淇,年龄是 19'
我们可以通过{索引}/{参数名},直接映射参数值,实现对字符串的格式化,非常方便。
填充常跟对齐一起使用
^、<、>分别是居中、左对齐、右对齐,后面带宽度
:号后面带填充的字符,只能是一个字符,不指定的话默认是用空格填充
>>> "{:*>8}".format("245")
'*****245'
>>> "我是{0},我喜欢数字{1:*^8}".format("高淇","666")
'我是高淇,我喜欢数字**666***'
浮点数通过 f,整数通过 d 进行需要的格式化:
数字 |
格式 |
输出 |
描述 |
3.1415926 |
{:.2f} |
3.14 |
保留小数点后两位 |
3.1415926 |
{:+.2f} |
3.14 |
带符号保留小数点后两位 |
2.71828 |
{:.0f} |
3 |
不带小数 |
5 |
{:0>2d} |
05 |
数字补零 (填充左边, 宽度为 2) |
5 |
{:x<4d} |
5xxx |
数字补 x (填充右边, 宽度为 4) |
10 |
{:x<4d} |
10xx |
数字补 x (填充右边, 宽度为 4) |
1000000 |
{:,} |
1,000,000 |
以逗号分隔的数字格式 |
0.25 |
{:.2%} |
25.00% |
百分比格式 |
1000000000 |
{:.2e} |
1.00E+09 |
指数记法 |
13 |
{:10d} |
13 |
右对齐 (默认, 宽度为 10) |
13 |
{:<10d} |
13 |
左对齐 (宽度为 10) |
13 |
{:^10d} |
13 |
中间对齐 (宽度为 10) |
在 Python 中,字符串属于不可变对象,不支持原地修改,如果需要修改其中的值,智能创建新的字符串对象。但是,经常我们确实需要原地修改字符串,可以使用 io.StringIO 对象或 array 模块。
>>> import io
>>> s = "hello, sxt"
>>> sio = io.StringIO(s)
>>> sio
<_io.StringIO object at 0x02F462B0>
>>> sio.getvalue()
'hello, sxt'
>>> sio.seek(7)
7
>>> sio.write("g")
1
>>> sio.getvalue()
'hello, gxt'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具