【Python】01.Python基础知识点

本文全面介绍了Python编程的基础知识,包括执行方式、语法特点、数据类型、运算符、控制语句、函数与模块、非数字型变量的处理方法以及面向对象编程等内容,适合初学者入门。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.执行方式

1解释器运行python *.py
2交互运行启动解释器如在cmd下启动python,输入python语句,交互执行,要获取已定义变量的值,直接输入变量名即可
3IDE运行(解释器)如PyCharm,要输出已定义变量的值,必须通过print语句来实现

2.语法

在Python中通过缩进替代了其他语言中的大括号{}

代码规范文档:http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

 功能语法说明
注释作用 对代码说明,增强可读性

单行注释

(行注释)

# 说明文字

 

以#开头,一般后面会加一个空格,后面内容为注释信息,不影响程序的执行

一般会将注释放在代码前一行,也可放在代码同一行后面,需要用2空格隔开

多行注释

(块注释)

“““ (''')

注释信息较多

””’”(''')

一对连续的三个引号(单引号和双引号都可以)
算术运算符
运算符描述实例
+

加(数字)

拼接(字符串)

合并(列表,元组)

10 + 20 = 30

“a” + "b" = "ab"

[1, 2] + [3, 4] =》 [1, 2, 3, 4]

-10 - 20 = -10
*

乘(数字)

重复输出(字符串)

10 * 20 = 200

若 * 用于字符串,则指重复输出,如"ab" * 3 = "ababab",支持列表 字符串 元组

/10 / 20 = 0.5
//取整除返回除法的整数部分(商),如 9 // 2 = 4
%取余数返回除法的余数部分,如 9 % 2 = 1
**又叫次方、乘方,如 2 ** 3 = 8

 

优先级:先乘除后加减,可用括号()调节优先级,同级从左至右计算,幂最高,其次是乘除取余取商(* / // %),最后是加减
变量

程序就是用来处理数据的,而变量就是用来存储数据的

变量定义:在python中,变量在使用前必须赋值,赋值以后该变量才会被创建。使用等号=来赋值。变量名 = 值

变量命名:由数字、字母、下划线来命名,不能以数字开头,不能与关键字重名,区分大小写,当名称由多个单词组成,可通过下划线连接(全小写),或驼峰命名

变量类型:定义变量时无需指定变量类型,运行时解释器会根据赋值语句右侧数据确定其类型

常见基本类型有:字符串(str),整型(int),浮点型(float),布尔类型(bool =True/False)等

数字型整型(int)、浮点型(float)、布尔型(bool,真True[非0]/假False[0])、复数型(complex)
非数字型字符串(str)、列表(list)、元组(Tuple)、字典(dict)
获取变量类型type(变量名)通过type函数可查看某个变量的类型
变量的输入

input()

input(提示信息)

等待用户键盘录入信息并获取

根据提示信息等待用户键盘录入信息并获取

类型转换

int(变量名)

float(变量名)

将变量转换为int类型

将变量转换为float类型

输出

print(x)

 print(x,end="")

将变量x输出并换行

输出变量x,不换行,其中end的值时输出末尾输出的内容

判断变量类型isinstance(变量,类型)判断变量的类型是否是指定类型
导入模块import 模块名 as 别名将模块导入,如import random     使用方式为random.randomint(1,3)
导入部分from .. import 导入部分内容,若不同模块导入相同名称的方法,后导入的会覆盖先导入的方法
格式化输出

print("格式化字符串",%变量名)

print("格式化字符串",%(变量名1,变量名2...))

 

如:name = “小明”

print("我的名字叫 %s,请多多关照!" % name)

%被称为格式化操作符,不同类型的数据需要使用不同的格式化字符

格式化字符含义
%s字符串
%d有符号十进制整数,%06d表示输出整数显示6位数,不足使用0不全
%f浮点数,%.2f表示小数点后显示2位
%%输出%
转义字符含义
\t输出制表符,输出文本时,垂直方向对齐

\n

输出换行符
\\输出反斜杠\
\'     \"输出单引号'或输出双引号“

\r

回车
比较运算符
运算符语法描述
==a == b检查两个操作数是否相等,若是,条件成立,返回True
!=a != b检查两个操作数是否不相等,若是,条件成立,返回True,在Python2.x版本中,也可用<>表示不等于
>a > b检查左操作数是否大于右操作数,若是,条件成立,返回True
<a < b检查左操作数是否小于右操作数,若相是,条件成立,返回True
>=a >= b检查左操作数是否大于或等于右操作数,若是,条件成立,返回True
<=a <= b检查左操作数是否小于或等于右操作数,若是,条件成立,返回True
逻辑运算符
运算符语法描述
and条件A and 条件B ...与/并,多个条件同时满足返回True,否则为False
or条件A or 条件B或,多个条件有一个为真则为True否则为False
notnot 条件A非,条件为真则为False
赋值运算符
运算符语法 描述
=c = a + b将a和b的和赋值给c
+=a += b等价于 a = a + b  ,若为列表相当于执行extend方法
-=a -= b等价于 a = a - b
*=a *= b等价于 a = a * b
/=a /= b等价于 a = a / b
//=a //= b等价于 a = a // b
%=a %= b等价于 a = a % b
**=a **= b等价于 a = a ** b
成员运算符
运算符语法 描述
in2 in (1,2,3) ->True元素是否存在 ,支持的数据类型:字符串、列表、元组、字典;对字典操作是,判断的是字典的键
not in4 not in (1, 2, 3) | True元素是否不存在 ,支持的数据类型:字符串、列表、元组、字典
逻辑语句
语句语法说明
判断语句

if 条件 :

     条件成立执行语句

else :

     不成立执行语句

注意缩进要一致,空格和tab不要混用

if语句可嵌套,但注意缩进

if 条件A :

     条件A成立执行语句

elif 条件B :

     条件B成立执行语句

循环语句

初始条件设置 通常是重复执行的计数器

while 条件(即计数器)  :

     条件满足执行语句

     处理条件(计数器 + 1)

判断 计数器是否达到目标次数

可嵌套,注意缩进

break

 

 

示例如下

while 条件(即计数器)  :

     条件满足执行语句1

     if 条件 :

          break

     条件满足执行语句2

     处理条件(计数器 + 1)

专门在循环中使用

某一条件满足时,跳出当前循环,不在执行后续重复的代码

若循环语句为嵌套循环,内部循环中的break只会跳出内部循环

 

 

 

当该条件满足时,退出该循环,循环结束

 

 

 

continue

示例如下

while 条件(即计数器)  :

     处理条件(计数器 + 1)

     条件满足执行语句1

     if 条件 :

          continue

     条件满足执行语句2

专门在循环中使用

某一条件满足时,跳出当前循环的本次循环,继续执行后续循环

 

 

 

当该条件满足时,退出本次循环,继续后续循环

此处需注意,否则可能出现死循环

 

函数与模块函数定义:

def 函数名(参数1,2,...) :

     “”“注释信息”“”

     函数内容

     return 返回内容

若无返回值,无需return语句,调用时通过选中函数名,Ctrl + q查看注释
调用函数、变量

import 函数所在文件名

函数所在文件名.函数名

模块名.变量/模块名.函数

导入函数所在文件

调用函数

说明:若调用函数和函数在同一文件,无需导入

模块 

一般一个python文件(即.py)就是一个模块

在另一个文件中若要使用已有文件中的函数,就需要导入函数所在文件(即模块)

非数字型变量共同点:
  1. 都是一个 序列 sequence,也可以理解为 容器
  2. 取值 []
  3. 遍历 for in
  4. 计算长度最大/最小值比较删除
  5. 链接 + 和 重复 *
  6. 切片 如:列表名[起始位置 : 终止位置]
 
公共方法说明
len(item)计算容器中元素个数
del(item) | del item删除变量 del  有两种方式
max(item)返回容器中元素最大值 | 如果是字典,只针对 key 比较
min(item)返回容器中元素最小值 | 如果是字典,只针对 key 比较
cmp(item1, item2)比较两个值,-1 小于/0 相等/1 大于 | Python 3.x 取消了 cmp 函数
 
 语法说明实例结果
完整的for'循环格

for 变量 in 集合:

     循环执行语句

else:

    循环结束后,会执行的代码

else语句的执行是在循环语句没有通过break退出,集合被完整遍历后执行

for num in [1,2,3]:

     print(num)

else:

     print("结束啦")

print("完了")

1
2
3
结束啦
完了

for 变量 in 集合:

     循环执行语句

     if 条件 :

          break

else:

    循环结束后,会执行的代码

for num in [1,2,3]:

     print(num)

     if num == 2 :

          break

else:

     print("结束啦")

print("完了")

1
2
循环结束啦
 
列表List说明示例
列表定义类似于其他语言中的数组,用[]定义,数据之间用,隔开,索引从0开始alist = ["a","b","c"]
循环遍历for in

for 循环内部变量 in 列表

     针对内部变量的操作

 
列表方法
方法分类说明示例
列表.insert(索引,数据)增加在指定索引位置插入数据 
列表.append(数据)在末尾追加数据 
列表.extend(列表2)将列表2的数据追加到列表中 
列表[索引] = 数据修改修改指定索引的数据 
列表.remove[数据]删除删除第一次出现指定的数据,若不存在,报错 
列表.pop删除末尾数据 
列表.pop[索引]删除指定索引的数据 
del 列表[索引]删除指定索引的数据,本质是从内存中删除,后续不能使用,一般不建议使用 
列表.clear()清空列表 
len(列表名)统计获取列表长度len(alist)  3,索引为0,1,2
列表.count(数据)数据在列表中出现的次数alist.count("a")   1
列表[索引]查询从列表中取索引的值alist[1]   b
列表.index(数据)获取数据在列表中第一次出现的索引,若不存在,会报错alist.index("a")   0

列表.sort()

列表.sort(reverse=True)

排序

升序排序

降序排序

 
列表.reverse()反转,逆序 
应用场景
  • 列表 中可以 存储不同类型的数据
  • 但是在开发中,更多的应用场景是
    1. 列表 存储相同类型的数据
    2. 通过 迭代遍历,在循环体内部,针对列表中的每一项元素,执行相同的操作
 
元组(Tuple)说明示例
元组定义

元组与列表类似,但元组元素不能修改,即定义完成不能修改

表示多个元素组成的序列,通过()小括号定义,逗号(,)分隔

空元祖  tul1 = ()

包含一个元素 tul2 = ("a",)  注意若只包含一个元素后面必须加逗号

常用操作
方法分类说明示例
len(元组名)统计获取元组长度len(tul2)  1
元组.count(数据)数据在元组中出现的次数tul2.count("a")   1
元组[索引]取值从元组中取索引的值tul2[0]   a
元组.index(数据)获取数据在元组中第一次出现的索引,若不存在,会报错tul2.index("a")   0
循环遍历for in一般不建议使用,因为元组中数据类型不同,相同操作无法一致 
应用场景
  • 函数的 参数 和 返回值,一个函数可以接收 任意多个参数,或者 一次返回多个数据
  • 格式字符串,格式化字符串后面的 () 本质上就是一个元组
  • 让列表不可以被修改,以保护数据安全
和列表的转换

列表转元组:tuple(列表)

元组转列表:list(元组)

 
字典(dictionary)说明示例
字典定义通过{}定义,通过键值对存储数据,键值对之间通过逗号(,)分隔,键和值之间通过冒号(:)分隔,键必须唯一,可以是字符串、数字或元组,值可以是任意类型dinfo = {“a”:1,"b":2,"c":3}
与列表的区别

列表是有序的集合

字典是无序的集合

 
常用操作
方法分类说明
字典[key] = value新增或修改若key存在修改数据,若key不存在,新增键值对
字典.setdefault(key,value)若key存在不会修改数据,若key不存在,新增键值对
字典.update(字典2)将字典2的数据合并到字典,若字典2中包含字典中已有的键值对,将覆盖原有键值对
len(字典)统计获取字典的键值对数量
字典.keys()取值字典的所有key列表
字典.values()字典的所有value列表
字典.items()字典的所有(key,value)元组列表
字典[key]从字典中取key对应的值,key不存在会报错
字典.get(key)从字典中取key对应的值,key不存在不会报错
del 字典[key]删除删除指定键值对,key不存在会报错
字典.pop(key)删除指定键值对,key不存在会报错
字典.popitem()随机删除一个键值对
字典.clear()情况字典

 

循环遍历for in

for k in 字典 :

    执行语句

 

注意此处的k是每次循环所得键值对的键

 
应用场景

使用 多个键值对,存储 描述一个 物体 的相关信息 —— 描述更复杂的数据信息

将 多个字典 放在 一个列表 中,再进行遍历,在循环体内部针对每一个字典进行 相同的处理

 
字符串(str)说明示例
定义通过一对双引号("")或一对单引号('')定义 
常用操作
分类方法分类说明
基本操作len(str)统计获取字符串str的长度
str.count(str2)字符串str2在字符串str中出现的次数,若不存在字符串2,则为0
字符串[索引]取值从字符串中取出索引指定的单个字符
字符串.index(字符串2)获取字符串2在字符串中第一次出现的索引,若不存在字符串2,报错
判断类型str.isspace()  判断如果 str 中只包含空格,则返回 True
str.isalnum()如果 str 至少有一个字符并且所有字符都是字母或数字则返回 True
str.isalpha()如果 str 至少有一个字符并且所有字符都是字母则返回 True
str.isdecimal()如果 str 只包含数字则返回 True,全角数字
str.isdigit()如果 str 只包含数字则返回 True,即包含全角数字\u00b2(平方)
str.isnumeric()如果 str 只包含数字则返回 True,全角数字汉字数字
str.istitle()如果 str 是标题化的(每个单词的首字母大写)则返回 True
str.islower()如果 str 中所有字符都是小写,则返回 True
str.isupper()如果 str 中所有字符都是大写,则返回 True
查找和替换str.startswith(str2) 检查字符串是否是以 str2 开头,是则返回 True
str.endswith(str2) 检查字符串是否是以 str2 结束,是则返回 True
str.find(str2, start=0, end=len(string)) 检测 str2是否包含在 str 中,如果 start 和 end 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回 -1 
str.rfind(str2, start=0, end=len(str)) 类似于 find(),不过是从右边开始查找
str.index(str2, start=0, end=len(str)) 跟 find() 方法类似,不过如果 str2 不在 str 会报错
str.rindex(str2, start=0, end=len(str)) 类似于 index(),不过是从右边开始
str.replace(oldstr, newstr, num=str.count(old)) 把 string 中的 oldstr 替换成 newstr,如果 num 指定,则替换不超过 num 次 
大小写转换str.capitalize() 把字符串的第一个字符大写
str.title() 把字符串的每个单词首字母大写
str.lower() 转换 str 中所有大写字符为小写
str.upper() 转换 str 中的小写字母为大写
str.swapcase() 翻转 str 中的大小写
文本对齐str.ljust(width) 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串
str.rjust(width)返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串
str.center(width) 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串

以上三个方法中国,str若为中文默认填充空格为英文gesh,可使用chr(12288)设置填充的内容

chr(12288)表示中文格式的空格

去除空白字符str.lstrip() 截掉 str 左边(开始)的空白字符
str.rstrip() 截掉 str 右边(末尾)的空白字符
str.strip() 截掉 str 左右两边的空白字符
拆分和连接str.partition(str2) 把字符串 str 分成一个 3 元素的元组 (str2前面, str2, str2后面)
str.rpartition(str2) 类似于 partition() 方法,不过是从右边开始查找 
str.split(str2="", num) 以 str2 为分隔符拆分 str,如果 num 有指定值,则仅分隔 num + 1 个子字符串,str2 默认包含 '\r', '\t', '\n' 和空格,返回一个列表
str.splitlines() 按照行('\r', '\n', '\r\n')分隔,返回一个包含各行作为元素的列表
str.join(seq) 以 str 作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
切片

使用索引值来限定范围,从一个大的字符串中切出小的字符串,如str = "python" str[::2] => pto,str[:]=>python

方法适用于字符串,列表,元组,因为其是有序的,能通过索引值获取对应数据

语法说明

str[start : end : step]

字符串[开始索引:结束索引:步长]

1.指定的区间属于左闭右开 型,start <= 范围 < end

2.若从头开始,start可以省略,即str[: end : step]

3.若到末尾结束,end可以省略,即str[start :  : step]

4.step默认为1,可以省略,即str[start : end]

索引说明

顺序索引:即从左到右,从0开始的索引;0,1,2,...

倒序索引:即从右到左,从-1开始依次递减的索引;-1,-2,-3...

高级
 说明
变量传递

变量的传递是传递的引用,

函数传递的实参、返回值传递的也是引用

不可变类型内存中的数据不可被修改;包括:数字类型、字符串、元组
可变类型

内存中的数据可被修改;包括:列表、字典

可变类型的数据变化是通过方法来实现的,若通过赋值运算符则改变了变量的引用,需注意字典的key只能是不可变的类型

在函数内部使用方法修改可变类型的参数,则会改变实参的数据。

全局变量与局部变量

局部变量:函数内部定义的变量

全局变量:函数外部定义,一般在函数的最上方,则其下面的函数都可使用。

在函数内部不可以修改全局变量的引用,

若要修改全局变量的值,需要使用 global 全局变量  的格式声明,然后操作即可修改

函数的返回值

函数的返回值若为多个数据,即返回一个元组,return a,b,c

可以省略括号

如果函数的返回值是一个元组,同时希望单独处理元组中的元素,可以使用多个变量接收函数返回值,如a,b,c = 函数(),需注意返回元祖元素个数与接收的变量个数一致

扩展:交换a,b的值

a,b = (b,a)  或 a,b = b,a

函数的参数

缺省参数:函数定义时参数赋默认值,放在参数列表最后;调用时可不传该参数,若要传该参数,格式为参数名=参数值 方式传递。

多值参数:函数参数个数不定,两种方式

           函数名(*args):         即参数名前加一个*,说明可接收元组

          函数名(**kwargs):    即参数名前加两个*(**),说明可接收 字典

 

递归

在函数内部调用 自己

  1. 函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同
  2. 当 参数满足一个条件 时,函数不再执行
    • 这个非常重要,通常被称为递归的出口,否则 会出现死循环
 id(变量)指的是变量值的内存地址
 hash(o)

哈希函数,接收一个不可变类型的参数o,

其作用是返回一个整数,提取数据的特征码

 

面向对象
 语法格式说明
   
内置函数dir(参数)可传入标识符或数据等,查看对象的属性和方法
 __方法名__

python提供的内置方法或属性

方法名作用
__new__创建对象时,自动调用
__init__对象初始化时,自动调用
__del__对象被从内存中销毁时,自动调用
__str__返回对象的描述信息,类似于Java中的toString方法

 

定义类

class 类名 :

    类属性 = 值

   def 方法名(self,参数..):

类中的方法的第一个参数必须为self,self指的是调用该方法的对象的引用

在方法内可以通过self.属性名 或self.方法名 调用对象的属性或方法

在类的外部,给对象添加属性的方式为对象.属性名 = 属性值,此方式只是给对象临时添加了属性,不影响类,不推荐使用

在初始化方法内部添加属性,格式为self.属性名 = 属性值,此方式是针对类新增属性

对象

创建对象

对象变量 = 类名()

对象变量 = 类名(属性值...)

当使用类名()创建对象时,会执行以下操作:

   1.为对象在内存中分配空间;__new__()

   2.为对象的属性设置初始值--》初始化方法__init__()

若有多个属性,则在__init__()中新增对应个参数

私有属性和私有方法

__属性名

__方法名

在定义时,在属性名或方法名前加__表示私有

对象的某些属性或方法只希望在对象内部使用,不希望被外部访问

其底层实现方式是将私有的前面添加_类名,了解

子类对象可通过父类的公有方法间接访问父类的私有属性和私有方法

类属性 定义类中所有方法外定义的属性,调用通过类名.类属性名
类方法

@classmethod

def 类方法名(cls):

类方法需要通过@classmethod来标志,

类方法的第一个参数为cls,和实例方法的self类似

只能调用类属性或其他类方法,通过cls.类属性或cls.类方法名

通过类名.的方式调用

静态方法

@staticmethod

def 方法名():

一个方法既不需要访问实例属性或实例方法,也不需要访问类属性或调用类方法,则可将该方法定义为静态方法

通过类名.的方式调用

继承

class 类名(父类名):

class 类名(父类名,父类2...):

单继承

多继承

 

方法的重写:包括对父类方法的扩展和覆盖

定义一个和父类方法同名的方法并实现

若要扩展父类方法,在子类中定义同名方法后,在需要调用父类该方法时,通过super().方法名()调用

 

多态  
身份运算符
运算符语法描述
isx is y判断两个标识符是否引用同一个对象,类似于id(x) == id(y),即比较内存地址
is notx is not y判断两个标识符是否引用不同对象,类似于id(x) != id(y)

is :判断两个变量引用对象是否同一个

==:用于判断引用变量的值是否相等

单例设计模式

类创建的对象只有一个,即每次执行类名(),返回的对象的内存地址是相同的

重写__new__方法,一定要return super().__new__(cls)

定义一个类属性,初始值为None

异常

捕获异常

try:

   代码

except:

   出现错误的处理

try:

   代码

except 错误类型1:

   针对错误类型1的处理

except (错误类型2,错误类型3):

   针对错误类型2和3的处理

except Exception as result:

   其他错误的处理

try:

   代码

except 错误类型1:

   针对错误类型1的处理

except (错误类型2,错误类型3):

   针对错误类型2和3的处理

except Exception as result:

   其他错误的处理

else:

   没有异常执行的代码

finally:

   无论是否有异常,都会执行

抛出异常

创建一个Exception对象

raise 异常对象

文件

 

文件操作:打开文件,读写文件,关闭文件

函数语法作用
open

open(文件名)

open(文件名,文件打开方式)

打开文件,并返回文件操作对象,若文件不存在,抛出异常,指针指向文件开始位置,更多参数略
 

文件打开方式

访问方式说明
r以只读方式打开文件,文件的指针会放在文件的开头,默认方式。文件不存在,抛出异常
w以只写方式打开文件,文件存在,覆盖,不存在,新建
a以追加方式打开文件,若文件存在,文件指针会放在文件末尾,若不存在,新建并写入
r+以读写方式打开文件,文件的指针会放在文件的开头,文件不存在,抛出异常
w+以读写方式打开文件,文件存在,覆盖,不存在,新建
a+以读写方式打开文件,若文件存在,文件指针会放在文件末尾,若不存在,新建并写入
read

文件对象.read()

文件对象.readline()

将文件内容读取到内存,读取后指针指向文件结尾位置

读取一行

write文件对象.write(内容)将指定内容写入文件
close文件对象.close()关闭文件
文件或目录管理

要执行对文件和目录的管理,需先导入os模块

 

 方法名说明示例
文件rename重命名文件os.rename(原文件名,目标文件名)
remove删除文件os.rename(文件名)
目录listdir目录列表os.listdir(目录名)
mkdir创建目录os.mkdir(目录名)
rmdir删除目录os.rmdir(目录名)
getcwd获取当前目录os.getcwd()
chdir修改工作目录os.rmdir(目标目录)
path.isdir判断是否是目录os.path.isdir(文件路径)
evaleval(字符串)将字符串当成一个有效的表达式求值并返回结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值