Python 测开28期-Pomelo- 学习笔记-Python

Python基础概念

Python的特点

    1. 简单易学
    1. 面向对象
    1. 跨平台性
    1. 开放源代码
    1. 丰富的库和框架
    1. 可扩展性和嵌入性

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_nameis_selectnameage 等都是符合规则的标识符命名。

  • 不能使用关键字

例如: 例如 ifelsefordef 等。

  • 标识符由英文字母、下划线_和数字组成,但不能以数字开头

例如: hogwarts666 是合法的标识符,而 666hogwarts 则是非法的标识符。

  • 区分大小写

hogwartsHogwarts 是两个不同的标识符。

关键字

  • 查看关键字

#导入内置关键字模块
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)的一个子类,用来描述逻辑关系的正确与否。

布尔类型只有两个值,即 TrueFalse 表示真和假,在 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 中的算术运算符包括加法、减法、乘法、除法、取模和幂运算
image

赋值运算符

赋值运算符是使用 = 做为运算符号,将运算符左侧的数据或表达式的结果,保存到运算符左侧的标识符中。

在使用赋值运算符时,运算符右侧可以是任意类型的数据,但左侧必须是一个变量,否则会报错。

除普通的赋值运算符外,赋值运算符还可以和算术运算符组合成为复合赋值运算符

image

关系运算符

关系运算符也称为比较运算符,用来对参与运算的两个操作数进行比较,确认两个操作数之间的关系,运算结果会返回一个布尔值

image

逻辑运算符

逻辑运算符一般用来解决当有多个关系条件需要判断时使用,用来确定这些条件组合的方式,运算结果为布尔类型值。

image

成员运算符

Python 提供了成员运算符,用于判断实例中是否包含了一系列的成员,包括字符串,列表或元组。

image

身份运算符

Python 中的身份运算符用来判断两个对象的引用是否为同一个,换言之,就是用来比较两个对象的内存地址是否相同。

身份运算符如下表所示:
image

三目运算符

语法格式: [on_true] if [expression] else [on_false]

  • on_true: 条件为真时的结果
  • on_false: 条件为假时的结果
  • expression: 判断条件

运算符优先级

image

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() 返回 strstring 里面出现的次数,如果 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 中,如果 startend 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则抛出一个异常 格式: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 中,如果 startend 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-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())