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())
