Python基础概念
Python的特点
-
- 简单易学
-
- 面向对象
-
- 跨平台性
-
- 开放源代码
-
- 丰富的库和框架
-
- 可扩展性和嵌入性
Python的编码规范
1、缩进:
在 Python 中,缩进是一种非常重要的语法规则,Python 使用缩进来确定代码的层次结构和执行顺序。
- 建议使用
Tab
键实现缩进 - 同一级别的代码块的缩进量必须相同
2、注释:
- 单行注释 在 Python 中,使用
#
作为单行注释的符号。注释从符号#
开始直到换行为止,其后面所有的内容都作为注释的内容而被 Python 解释器忽略。
#我是一段注释
- 多行注释 在 Python 中,并没有一个单独的多行注释标记,而是将注释内容包含在一对三引号之间,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也可以作为多行注释。
‘’’
可以使用
三单引号
实现
多行注释
‘’’“”"
可以使用
三双引号
实现
多行注释
“”"
- 文档注释 文档注释实际是多行注释的一种特殊使用形式,为 Python 文件、模块、类或者函数等添加版权、功能,说明等信息,例如,下面的代码将使用多行注释为程序添加功能、开发者、版权、开发日期等信息,也经常用来解释代码中重要的函数、参数等信息,利于后续开发者维护代码
3、命名规范
- 包名尽量短小,全小写字母,不推荐使用下划线
- 模块名尽量短小,全小写字母,可以使用下划线分隔多个字母
- 类名采用单词首字母大写形式,即 Pascal 风格。
- 常量命名时全部采用大写字母,可以使用下划线
- 变量、函数名也是全小写字母,多个字母间用下划线
_
进行分隔 - 使用单下划线
_
开头的模块变量或者函数是受保护的 - 使用双下划线
__
开头的实例变量或方法是类私有的
Python基础语法
输入和输出
1、输入函数
在 Python 中,使用 input()
函数从键盘获取输入的数据。输入的任何数据,都以字符串形式保存到程序中。
name = int(input(“请输入您的姓名:”))
print(“您好,” + name + “!”)
2、输出函数
在 Python 中,可以使用 print() 函数输出文本和变量。
格式:print(values, sep=" ", end="\n")
-
values
: 需要输出的数据 -
sep=" "
: 多个数据之间的分隔符,默认为一个空格 -
end="\n"
: 一次输出后的结束符,默认为换行符
#输出一个数据
print(“Hello World”)
#输出多个数据
print(“Hello”, “Python”, 20, True)
3、指定分隔符
在输出多个数据时,如果不想使用默认的空格做为分隔符,可以通过 sep
参数指定分隔符
print(“Hello”, “Python”, 20, True, sep=‘—’)
4、指定结束符
print
函数默认一次输出后,都会以换行符结束,下一次输出会重启一个新行输出。 如果在多次输出时,实现在一行输出显示,需要指定结束符。
print(“Hello”, end=“”)
print(“World”)
print(“Python”, end=“—”)
print(“Java”)
函数的定义与调用
1、什么是函数
函数是一段可重复使用的代码块,它执行特定的任务并返回一个结果。
在编程中,函数用于将一段代码逻辑封装起来,以便在需要时可以方便地调用。
函数的主要目的是提高代码的重用性和可维护性。
2、函数的组成部分
- 函数名:函数名用于标识函数,以便在代码中调用它时使用。
- 参数:参数是函数在执行时所需的数据。
- 函数体:函数体是函数的实际代码逻辑,由若干语句组成。
- 返回值:返回值是函数体代码执行过后的运行结果。
3、内置函数
内置函数是指开发语言中预先定义好的实现特定功能的函数,可以直接使用。
比如: 输入函数
input()
, 输出函数print()
等
4、函数的语法格式
def function_name([parameter_list]):
[‘’‘注释信息’‘’]
[function_body]
return [result]
说明: * def
: 自定义函数的关键字。
-
function_name
: 函数名称,在调用函数时使用,命名需要符合标识符命名规则。 -
()
: 函数的特征,用来书写参数列表。 -
parameter_list
: 用来接收函数运行时所需的外部数据(此章节不讲解)。 -
:
:Python 固定语法。 -
注释信息
:非必须部分,函数的注释内容,通常是说明该函数的功能、要传递的参数的作用等。 -
function_body
:函数体,用来实现函数功能的逻辑代码。 -
return [result]
: 用来结束函数或将函数运行结果返回。
注意 :函数定义完成之后直接运行程序,将不显示任何内容。
5、函数调用
调用函数也就是执行函数。如果把创建函数理解为理解为创建一个具有某种功能的工具,那么调用函数就相当于使用该工具。
语法格式:
function_name([parameters_value])
说明:
-
function_name
:函数名称,要调用的函数名称,必须是已经创建好的(包括内建的和自定义的)。 -
parameters_value
:参数列表,用来提供函数运行时使用的数据,可省略。 -
()
: 函数的特征,参数列表可省略,但圆括号不能省略。
注意:
- 程序在执行到函数调用时,会跳转到函数定义位置执行函数体中的代码。
- 函数体执行结束后,将返回到函数调用处继续向后执行其它代码。
标识符
命名规范
- 见名知意
例如:
get_name
、is_select
、name
、age
等都是符合规则的标识符命名。
- 不能使用关键字
例如: 例如
if
、else
、for
、def
等。
- 标识符由英文字母、下划线
_
和数字组成,但不能以数字开头
例如:
hogwarts666
是合法的标识符,而666hogwarts
则是非法的标识符。
- 区分大小写
hogwarts
和Hogwarts
是两个不同的标识符。
关键字
- 查看关键字
#导入内置关键字模块
import keyword
#打印所有的关键字
print(keyword.kwlist)
变量
变量的定义
Python 中定义变量非常简单,只需将数据通过等号(=)赋值给一个符合命名规范的标识符即可。
name = "张三"
变量的使用
print(name)
变量的地址
内置函数
id()
可以获取变量的内存地址,也就是这个变量在计算机内存中的唯一标识,通常是用一串数字表示。
print(id("张三"))
或
name = "张三"
print(id(name))
Python数据类型
标准数据类型
Python3 中标准数据类型有:
- 基本数据类型
- Number(数字)
- String(字符串)
- bool(布尔类型)
- 复合数据类型(容器类型)
- List(列表)
- Tuple(元组)
- Dictionary(字典)
- Set(集合)
- 空类型
- None
Python3 根据数据的特性可分为:
- 不可变数据(3 个):Number(数字)、bool(布尔)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
类型查看:
#数字类型
num = 666
print(type(num))
#布尔类型
b = True
print(type(b))
#字符串类型
s = "学测试开发升职加薪,就来霍格沃兹测试学社"
print(type(s))
#空类型
x = None
print(type(x))
数字类型
整数
用来表示整数数值,即没有小数部分的数值,在 Python 中,没有
Long
类型,统一使用int
类型表示。
n=10
print(n)
print(type(n))
浮点数
浮点类型:用来表示带小数点的数值,在 Python 中,没有
Double
类型,统一使用float
类型表示。
pi=3.14
print(pi)
print(type(pi))
复数
浮点类型:用来表示带小数点的数值,在 Python 中,没有
Double
类型,统一使用float
类型表示。
n=4+3j
print(n)
print(type(n))
布尔类型
Python 中的布尔类型(bool)是 整数类型(int)的一个子类,用来描述逻辑关系的正确与否。
布尔类型只有两个值,即
True
和False
表示真和假,在 Python 中,布尔类型通常用于判断逻辑关系和状态标记。
条件判断
x = 5
y = 10
print(x < y)
#输出True
print(x > y)
#输出False
状态标记
程序开发过程中,经常需要标记一些状态,比如是否选中,是否点击等,都可以使用记录布尔值的变量记录状态。
isSelect = False
isExist = True
假值状态
在 Python 中,所有的对象都可以判断是否为真。其中,只有下面列出的几种情况得到的值为假,其他对象在 if 或者 while 语句中都表现为真
常见的假值类型:
- False
- None
- 数值中的零,包括 0、0.0、虚数 0。
- 空序列,包括字符串、空元组、空列表、空字典。
类型转换
Python 是动态类型的语言(也称为弱类型语言),不需要像 Java 或者 C 语言一样必须在使 用变量前声明变量的类型。虽然 Python 不需要先声明变量的类型,但有时仍然需要用到类型转换。
自动转换
自动转换也称为隐式类型转换,程序在执行过程中自动完成,将数据精度低转换为数据精度高的类型。
有些时候,在对不同类型的数据进行运算时,Python 会自动将它们转成同样的类型,然后再计算结果。
n = 10+3.14
print(n,type(n))
#输出13.14,float
n = False + 1
print(n)
print(n,type(n))
#输出1,int
强制转换
强制转换也称为显式类型转换,需要在代码中使用类型函数来转换。
比如通过 input() 函数获取的数字,实际为一个数字字符串,如果需要进行计算,需要将其转换成真正的数字才能进行数据计算。
#此代码在执行时会报类型错误
title = "霍格沃兹" + 666
print(title, type(title))
title = "霍格沃兹" + str(666)
print(title, type(title))
注意
x = int("霍格沃兹")
提示:ValueError: invalid literal for int() with base 10: ‘霍格沃兹’。
Python运算符
Python 语言常用运算符如下:
- 算术运算符
- 比较(关系)运算符
- 赋值运算符
- 逻辑运算符
- 成员运算符
- 身份运算符
- 运算符优先级
根据使用操作数的不同,可分为:
- 单目运算符
- 双目运算符
- 三目运算符
算数运算符
Python 中的算术运算符包括加法、减法、乘法、除法、取模和幂运算
赋值运算符
赋值运算符是使用
=
做为运算符号,将运算符左侧的数据或表达式的结果,保存到运算符左侧的标识符中。
在使用赋值运算符时,运算符右侧可以是任意类型的数据,但左侧必须是一个变量,否则会报错。
除普通的赋值运算符外,赋值运算符还可以和算术运算符组合成为复合赋值运算符
关系运算符
关系运算符也称为比较运算符,用来对参与运算的两个操作数进行比较,确认两个操作数之间的关系,运算结果会返回一个布尔值
逻辑运算符
逻辑运算符一般用来解决当有多个关系条件需要判断时使用,用来确定这些条件组合的方式,运算结果为布尔类型值。
成员运算符
Python 提供了成员运算符,用于判断实例中是否包含了一系列的成员,包括字符串,列表或元组。
身份运算符
Python 中的身份运算符用来判断两个对象的引用是否为同一个,换言之,就是用来比较两个对象的内存地址是否相同。
身份运算符如下表所示:
三目运算符
语法格式: [on_true] if [expression] else [on_false]
-
on_true
: 条件为真时的结果 -
on_false
: 条件为假时的结果 -
expression
: 判断条件
运算符优先级
Python 数据结构
字符串
在 Python 中,字符串是由引号包裹的任意字符组成的不可变序列,用于表示文本类型数据。
字符串可以通过使用
单引号
或双引号
或三引号
来定义,用于表示文本信息,如姓名、消息等。
#使用单引号定义字符串:
name = 'Alice'
#使用双引号定义字符串:
message = "Hello, world!"
#使用三引号定义字符串
sql_string = """select * from user where name='tom';"""
转义字符
转义字符在字符串中用于表示一些特殊字符或序列,以及插入难以直接输入的字符。
常见的转义字符包括:
\n
表示换行符,\t
表示制表符,\"
表示双引号,\'
表示单引号,\\
表示反斜杠。
字符串下标
下标是指从
0
开始的数字编号,也称为索引。
在字符串中,每一个字符都会对应一个下标,通过下标可以获取字符串中该下标对应的字符
字符串操作
所有的字符串操作,都不会影响原字符串本身,每次操作后都会得到一个操作后的新字符串对象
统计查找替换类
len()
用来获取参数字符串的字符个数,该函数并不是字符串类型特有的,而是一个通用函数 格式:len(obj)
length = len("Hello")
print(length)
count()
返回 str
在 string
里面出现的次数,如果 start
或者 end
指定则返回指定范围内 str
出现的次数 格式:count(str, start, end)
s = "hello world hello Python"
n = s.count("o")
print(n)
n = s.count("o",10,30)
print(n)
index()
检测 sub
是否包含在 string
中,如果 start
和 end
指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则抛出一个异常 格式:index(sub, start, end)
s = "Hello"
print(s.rindex("l"))
#返回2
print(s.rindex("l",0,3))
#返回2
print(s.rindex("k"))
#报错
rindex()
作用同 index()
,查找子串时从右侧查找,若找不到会抛出一个异常 格式:rindex(sub, start, end)
s = "Hello"
print(s.rindex("l"))
print(s.rindex("l",0,3))
print(s.rindex("k"))
find()
检测 sub
是否包含在 string
中,如果 start
和 end
指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 格式:find(sub, start, end)
s = "Hello"
print(s.find("l"))
#返回2
print(s.find("l",0,3))
#返回2
print(s.find("k"))
#返回-1
rfind()
作用同 find()
,查找子串时从右侧查找,若找不到会抛出一个异常 格式:rfind(sub, start, end)
s = "Hello"
print(s.rfind("l"))
print(s.rfind("l",0,3))
print(s.rfind("k"))
replace()
把 string 中的 old 替换成 new,如果 max 指定,则替换不超过 max 次. 格式:replace(old, new, max)
s = "Hello Hello Hello"
print(s.replace("ll","LL"))
print(s.replace("l","L",4))
字符串判断类
startwith()
检查字符串是否是以 prefix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:startwith(prefix, start, end)
url = "https://www.ceshiren.com"
print(url.startswith("https://"))
print(url.startswith("https://", 0, 3))
print(url.startswith("https://", 5, 30))
endswith()
检查字符串是否是以 suffix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:endwith(suffix, start, end)
url = "https://www.ceshiren.com"
print(url.endswith(".com"))
print(url.endswith(".com", 0, 20))
print(url.endswith(".com", 5, 30))
isalpha()
如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False 格式:isalpha()
print("abc".isalpha())
#True
print("123".isalpha())
#False
print("abc123".isalpha())
#False
print("a@".isalpha())
#False
isdigit()
如果 string 只包含数字则返回 True 否则返回 False. 格式:isdigit()
print("123".isdigit())
#True
print("123abc".isdigit())
#False
print("abc123".isdigit())
#False
print("".isdigit())
#False
isalnum()
如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False 格式:isalnum()
print("abc".isalnum())
#True
print("123".isalnum())
#True
print("abc123".isalnum())
#True
print("a b".isalnum())
#False
print("a@".isalnum())
#False
print("".isalnum())
#False
isspace()
如果 string 中只包含空格,则返回 True,否则返回 False. 格式:isspace()
print(" ".isspace())
#True
print(" ".isspace())
#True
print("\t".isspace())
#True
print("\n".isspace())
#True
print("\r".isspace())
#True
print("".isspace())
#False
print(" a".isspace())
#False
print("1 ".isspace())
#False
isupper()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False 格式:isupper()
print("ABC".isupper())
#True
print("ABC123".isupper())
#True
print("123ABC".isupper())
#True
print("A!@#B".isupper())
#True
print("abc".isupper())
#False
print("abC".isupper())
#False
print("abc123".isupper())
#False
print("Abc!@#".isupper())
#False
print("123".isupper())
#False
print("".isupper())
#False
print(" ".isupper())
#False
islower()
如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False 格式:islower()
print("abc".islower())
#True
print("abc123".islower())
#True
print("ABC".islower())
#False
print("abC".islower())
#False
print("Abc!@#".islower())
#False
print("123".islower())
#False
print("".islower())
#False
print(" ".islower())
#False
istitle()
如果 string 是标题化的(所有单词首字符是大写)则返回 True,否则返回 False 格式:istitle()
print("Username".istitle())
print("User Name".istitle())
print("User_Name".istitle())
print("User.Name".istitle())
print("User+Name".istitle())
print("username".istitle())
print("UserName".istitle())
print("user name".istitle())
print("User name".istitle())