python学习-基础学习1
本文介绍 python 的基础学习,包括起源发展、应用场景、安装运行、语法变量、运算符、数据类型、输入输出和文件读写等部分。
供自己以后查漏补缺,也欢迎同道朋友交流学习。
引言
大家好,终于顶不住别人的劝说来学 python
了,之前其实我学过一点 python,但基本上忘记的差不多了,这次打算系统性的学习下,也为了以后做独立开发做准备。
本章主要介绍 python
的基础学习,包括起源发展、应用场景、安装运行、语法变量、运算符、数据类型、输入输出和文件读写等部分。
Python简介
Python
是一种直译式、面向对象的程序语言,拥有完整的函数库,轻松胜任多种工作。直译语言指的是不需要经过编译(compile
)动作,将语言先转成机器码,再执行。
Python 的设计哲学强调代码的简洁性和可维护性,其核心思想是优雅
、明确
和简单
。Python 支持多种编程范式
,包括面向对象、命令式、函数式和过程式编程。
主要特点包括:
- 易于学习和使用:语法简洁明了,非常适合初学者作为入门语言。
- 可移植性:可以在多种操作系统上运行,如
Windows
、Mac OS X
、Linux
等。 - 解释型语言:代码在运行时会被解释器逐行执行,
无需编译成机器码
。 - 动态类型系统:在
运行时
确定变量类型,提供了更大的灵活性。 - 自动内存管理:具有
自动内存管理
和垃圾回收
功能,简化了内存管理。 - 面向对象:支持
面向对象
编程,允许定义类和对象。 - 丰富的标准库:拥有庞大的
标准库
,提供了许多用于处理文件、系统调用、网络通信等的模块。 - 开源:Python 是
开源
的,拥有活跃的社区,不断有新的库和框架被开发出来。
起源和发展历史
Python 由荷兰程序员 Guido van Rossum
(吉多·范罗苏姆)于 1989
年圣诞节期间开始开发,最初是作为 ABC
语言的一种继承。
发展历史
- 1991年:发布了 Python 第一个公开版本
0.9.0
,包含了模块、异常处理、函数以及核心数据类型等基本语言特性。 - 1994年:发布了
Python 1.0
,引入了 lambda、map、filter和reduce等特性,形成了相对完整的语言结构。 - 2000年:发布了
Python 2.0
,引入了垃圾回收机制和Unicode支持,使得 Python 逐渐成为适用于多种领域的编程语言。 - 2008年:发布了
Python 3.0
,旨在解决 Python 2 中的一些设计缺陷和不一致性,引入了不兼容的语法和库变化,提高了语言的一致性和清晰度。 - 社区和框架的兴起:Python 社区逐渐壮大,涌现出大量优秀的第三方库和框架,如 NumPy、Django、Flask 等,为Python 在数据科学、Web开发等领域的应用提供了强大的支持。
应用场景
Python 从最初的一个简单的脚本解释器
发展成为今天全球最受欢迎的编程语言之一,广泛应用于网络爬虫
、游戏开发
、图像处理
、数据分析
、人工智能
、机器学习
、Web开发
、自动化测试
等多个领域。
安装和运行
我的电脑是 mac,系统自带了 python3
,如果需要额外安装的话,可以用 homebrew。
homebrew 安装 Python:
brew install python
运行 Python 脚本:
python hello.py
# or
python3 hello.py
如果是 windows 电脑可以访问官网去下载安装,按照安装提示,确保勾选 “Add Python to PATH” 选项,这样可以在命令行中直接运行 Python。
如果是 linux 系统也自带了 python3
,或者用 apt 命令安装
变量及命名规则
Python 是动态类型语言,变量在声明时不必指定类型。同时变量的命名有一些规则:
- 必须由英文字母、_(下划线)或中文字开头,建议使用英文字母。
- 变量名称只能由英文字母、数字、_(下划线)或中文字所组成,但不建议使用中文字。
- 英文字母大小写是敏感的,Name和name是不同变量。
- 不能使用系统保留字(或关键字)或内置函数名称作变量名称。
- 变量名应该既简洁又具有描述性,以便于理解变量的用途。
变量使用:
# 变量的使用
x = 100
y = x * 2
print('@@@ y:', y) # @@@ y: 200
基本运算符
运算符是语言中最基础的,常用的包括算术运算符、比较运算符、逻辑运算符、赋值运算符和一些其他特殊运算符。
算数运算符
Python 中的算术运算符用于执行基本的数学运算。以下是 Python 支持的算术运算符:
a = 30
b = 4
print('@@@ 加法 a+b:', a+b) # @@@ 加法 a+b: 34
print('@@@ 减法 a-b:', a-b) # @@@ 减法 a-b: 26
print('@@@ 乘法 a*b:', a*b) # @@@ 乘法 a*b: 120
print('@@@ 除法 a/b:', a/b) # @@@ 除法 a/b: 7.5
print('@@@ 整除 a//b:', a//b) # @@@ 整除 a//b: 7
print('@@@ 取余 a%b:', a%b) # @@@ 取余 a%b: 2
print('@@@ 指数运算 a**b:', a**b) # @@@ 指数运算 a**b: 810000
比较运算符
比较运算符用于比较两个值,并根据比较结果返回布尔值( True 或 False)。以下是 Python 中常用的比较运算符:
c = 6
d = 8
print('@@@ 等于 c==d:', c==d) # @@@ 等于 c==d: False
print('@@@ 不等于 c!=d:', c!=d) # @@@ 不等于 c!=d: True
print('@@@ 大于 c>d:', c>d) # @@@ 大于 c>d: False
print('@@@ 小于 c<d:', c<d) # @@@ 小于 c<d: True
print('@@@ 大于等于 c>=d:', c>=d) # @@@ 大于等于 c>=d: False
print('@@@ 小于等于 c<=d:', c<=d) # @@@ 小于等于 c<=d: True
逻辑运算符
在 Python 中,逻辑非(not)、逻辑与(and)和逻辑或(or)是三个基本的逻辑运算符,用于执行布尔逻辑操作。
e = True
f = False
print('@@@ 逻辑非 not e:', not e) # @@@ 逻辑非 not e: False
print('@@@ 逻辑与 e and f:', e and f) # @@@ 逻辑与 e and f: False
print('@@@ 逻辑或 e or f:', e or f) # @@@ 逻辑或 e or f: True
赋值运算符
赋值运算符用于给变量赋值或修改变量的值。以下是 Python 中常用的赋值运算符:
g = 10
g += 3
print('@@@ g += :', g) # @@@ g += : 13
g -= 3
print('@@@ g -= :', g) # @@@ g -= : 10
g *= 3
print('@@@ g *= :', g) # @@@ g *= : 30
g /= 3
print('@@@ g /= :', g) # @@@ g /= : 10.0
g %= 4
print('@@@ g %= :', g) # @@@ g %= : 2.0
g **= 3
print('@@@ g **= :', g) # @@@ g **= : 8.0
g //= 5
print('@@@ g //= :', g) # @@@ g //= : 1.0
成员运算符
成员运算符用于检查某个值是否存在于某个序列(如列表、元组、字符串)或某个集合(如集合或字典)中。
in
运算符用于检查左侧的值是否是右侧序列或集合的成员。如果值存在于序列或集合中,返回 True;否则,返回 False。
not in
和上面逻辑相反。
# 检查元素是否在列表中
my_list = [1, 2, 3, 4, 5]
print(3 in my_list) # 输出 True
# 检查元素是否在元组中
my_tuple = (1, 2, 3)
print(2 in my_tuple) # 输出 True
# 检查字符是否在字符串中
my_string = "hello"
print('e' in my_string) # 输出 True
# 检查键是否在字典中
my_dict = {'a': 1, 'b': 2}
print('a' in my_dict) # 输出 True
# 检查元素是否在集合中
my_set = {1, 2, 3}
print(2 in my_set) # 输出 True
身份运算符
身份运算符用于比较两个对象的内存身份,即它们是否为同一个对象。
is
运算符用于检查两个变量是否引用同一个对象。如果两个变量引用的是同一个对象,则返回 True;否则,返回 False。
is not
运算符用于检查两个变量是否不引用同一个对象。
arr1 = [1, 2, 3]
arr2 = [1, 2, 3]
# 比较两个列表的内容是否相等
print(arr1 == arr2) # 输出 True,因为它们包含相同的元素
# 比较两个列表是否是同一个对象
print(arr1 is arr2) # 输出 False,因为 arr1 和 arr2 是两个不同的列表对象
arr3 = arr1
print(arr1 is arr3) # 输出 True,因为 arr3 和 arr1 引用同一个列表对象
Python 中的运算符优先级如下(从高到低
):
- 指数运算符:**
- 负号:-(注意:正号+没有优先级,因为它没有实际效果)
- 乘法、除法、模运算符:* / %
- 加法、减法运算符:+ -
- 比较运算符:> < >= <= != ==
- 身份运算符:is、is not(用于比较两个对象的id)
- 成员运算符:in、not in(用于检查成员资格)
- 逻辑非运算符:not
- 逻辑与运算符:and
- 逻辑或运算符:or
基本数据类型
Python 的基本数据类型有下列几种:数值数据类型(整数 int
和 浮点型 float
)、布尔值(Boolean
)、字符串(string
)数据类型。对于如何判断类型,Python 内置了 type()
函数。
x = 10
y = x / 3
print('@@@ x 的类型:', type(x)) # @@@ x 的类型: <class 'int'>
print('@@@ y 的类型:', type(y)) # @@@ y 的类型: <class 'float'>
数值数据类型
- 整数:整数是没有小数部分的数,可以是正数、负数或零。
- 浮点数:浮点数是有小数点的数,可以表示更广泛的数值范围,但可能会有精度限制。
a = 20
b = a + 1.2
print('@@@ 整数 a:', a) # @@@ 整数 a: 20
print('@@@ 浮点数 b:', b) # @@@ 浮点数 b: 21.2
2、8、16 进制换算:
# 十进制转二进制
print(bin(10)) # 输出: 0b1010
# 十进制转八进制
print(oct(10)) # 输出: 0o12
# 十进制转十六进制
print(hex(10)) # 输出: 0xa
强制类型转换:
int()
: 强制转换为整数。float()
: 强制转换为浮点数。
print('@@@ 10.5 转换为整型:', int(10.5)) # @@@ 10.5 转换为整型: 10
print('@@@ 20 转换为浮点型:', float(20)) # @@@ 20 转换为浮点型: 20.0
数值运算常用的函数:
abs(x)
: 绝对值函数。pow(x,y)
: 幂运算函数。round(x)
: 五舍六入函数。(注意:不是四舍五入
)
print('@@@ 绝对值函数:', abs(-3.14)) # @@@ 绝对值函数: 3.14
print('@@@ 幂运算函数:', pow(2,3)) # @@@ 幂运算函数: 8
print('@@@ 五舍六入函数:', round(4.5)) # @@@ 五舍六入函数: 4
布尔值数据类型
布尔值数据类型有俩种,True
(真值)和 False
(假值),数据类型是 bool。如果将 True
转换为整数得到 1,将 False
转换为整数得到 0。
y = True
n = False
print('@@@ True转换为整型:', int(y)) # @@@ True转换为整型: 1
print('@@@ True的类型:', type(y)) # @@@ True的类型: <class 'bool'>
print('@@@ False转换为整型:', int(n)) # @@@ False转换为整型: 0
print('@@@ False的类型:', type(n)) # @@@ False的类型: <class 'bool'>
字符串数据类型
字符串数据类型(str)是一种用于存储文本的序列类型。字符串可以包含字母
、数字
、符号
和空格
,它们被单引号
(')、双引号
(")或三引号
(''' 或 """)包围。
字符串操作方法:
- 索引和切片: 使用
[x,y]
字符串可以被索引和切片,索引从0开始,负索引表示从字符串的末尾开始计数。 - 连接: 使用
+
操作符连接字符串。 - 重复: 使用
*
操作符重复字符串。 - 长度: 使用
len()
函数获取字符串长度。 - 大小写转换: 使用
.upper()
转换为大写,使用.lower()
转换为小写。 - 查找: 使用
.find(sub)
查找子串 sub,如果找到返回索引,否则返回-1。 - 替换: 使用
.replace(old, new)
替换子串 old 为 new。 - 去除空白: 使用
.strip()
去除字符串两端的空白字符,.rstrip()
去除字符串右端的空白字符,.lstrip()
去除字符串左端的空白字符。 - 分割和合并: 使用
.split(sep=None)
按照分隔符sep分割字符串,返回一个列表。.join(iterable)
将序列中的元素以指定的字符连接成新的字符串。 - 格式化: 使用
%
操作符或str.format()
方法进行字符串格式化。 - 编码和解码: 使用
.encode()
将字符串编码为指定的格式。.decode()
将编码的字符串解码为普通字符串。
s = "Hello, World!" # 创建字符串
print('@@@ 索引:', s[0]) # @@@ 索引: H
print('@@@ 切片:', s[0:5]) # @@@ 切片: Hello
print('@@@ 连接:', 'niu' + 'nai') # @@@ 连接: niunai
print('@@@ 重复:', 'niu' * 3) # @@@ 重复: niuniuniu
print('@@@ 长度:', len(s)) # @@@ 长度: 13
print('@@@ 转换为大写:', s.upper()) # @@@ 转换为大写: HELLO, WORLD!
print('@@@ 转换为小写:', s.lower()) # @@@ 转换为大写: hello, world!
print('@@@ 查找子串:', s.find("World")) # @@@ 查找子串: 7
print('@@@ 去除空白:', s.strip()) # @@@ 去除空白: Hello, World!
words = s.split(", ")
print('@@@ 分割:', words) # @@@ 分割: ["Hello", "World!"]
print('@@@ 合并:', "-".join(words)) # @@@ 合并: Hello-World!
print("@@@ 使用百分号格式化: Name: %s, Age: %d" % ("niunai", 30)) # @@@ 使用百分号格式化: Name: niunai, Age: 30
print("@@@ 使用 format 格式化 Name: {name}, Age: {age}".format(name="niunai", age=30)) # @@@ 使用 format 格式化: Name: niunai, Age: 30
print('@@@ 编码:', s.encode()) # @@@ 编码: b'Hello, World!'
print('@@@ 解码:', b"Hello, World!".decode()) # @@@ 解码: Hello, World!
注释
- 单行注释: 单行注释使用井号(
#
)开始。#后面的所有内容都会被Python解释器忽略,直到该行结束。 - 多行注释: Python 没有专门的语法来创建多行注释,但可以使用多行字符串(使用三引号
"""
或'''
)来实现类似的功能。虽然这些多行字符串实际上是字符串类型,但它们经常被用作多行注释。
输入和输出
输出print()
print()
函数用于将信息输出到控制台。你可以使用它来打印文本、变量值、表达式结果等。
print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)
- objects:可以是一个或多个对象,它们将被转换为字符串然后打印。
- sep:对象之间的分隔符,默认为空格。
- end:打印结束后的字符串,默认为换行符 \n。
- file:指定输出的目标文件,默认为 sys.stdout(标准输出)。
- flush:是否强制刷新输出缓冲区,默认为 False。
输入input()
input()
函数用于从控制台读取用户输入。它会暂停程序执行,直到用户输入一些内容并按下回车键。
input(prompt="", /)
- prompt:提示信息,它会在用户输入之前显示在控制台上。
name = input("请输入你的名字: ")
print("Hello,", name)
文件读写
在 Python 中,open()
函数是用来打开一个文件,并返回一个文件对象。通过这个文件对象,你可以读取或写入文件。
基本语法
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, close=True)
file
:文件路径。mode
:文件打开模式,常用的有:'r'
:只读模式(默认)。'w'
:写入模式,如果文件存在会被覆盖,如果文件不存在会被创建。'a'
:追加模式,写入内容会被追加到文件末尾,如果文件不存在会被创建。'b'
:二进制模式。't'
:文本模式(默认)。'+'
:更新模式,可以读写文件。
buffering
:设置缓冲,0
表示无缓冲,1
表示行缓冲,大于1表示缓冲大小。encoding
:设置文件编码,默认为None
。errors
:设置编码错误处理方案,默认为None
。newline
:设置换行符,默认为None
。closefd
:是否关闭文件描述符,默认为True
。close
:是否在文件操作完成后关闭文件,默认为True
。
写入文件
# 打开文件并写入内容
with open('example.txt', 'w') as file:
file.write("Hello, World!")
追加内容到文件
# 打开文件并追加内容
with open('example.txt', 'a') as file:
file.write("\nThis is a new line.")
读取文件
# 打开文件并读取内容
with open('example.txt', 'r') as file:
content = file.read()
print(content)
使用with
语句可以确保文件在使用后正确关闭,即使在读取文件时发生异常也是如此。
读取二进制文件
# 打开二进制文件并读取内容
with open('example.bin', 'rb') as file:
binary_content = file.read()
print(binary_content)
写入二进制文件
# 打开二进制文件并写入内容
with open('example.bin', 'wb') as file:
file.write(b"Hello, World!")
python学习专栏系列
- python学习-基础学习1
- python学习-基础学习2
- python学习-基础学习3
- python学习-面向对象编程1
- python学习-面向对象编程2
- python学习-文件读写
- python学习-程序异常处理
- python学习-正则
- python学习-处理word文档
- python学习-处理pdf文档
- python学习-处理excel文档
- python学习-处理csv文档
- python学习-使用matplotlib绘制图表
- python学习-处理JSON数据
- python学习-SQLite数据库
- python学习-多线程处理
- python学习-网络爬虫