Python 测开28期 - 锋焰 - 学习笔记 - Python

[TOC]

L1

编码规范

  • 包名尽量短小,全小写字母,不推荐使用下划线
  • 模块名尽量短小,全小写字母,可以使用下划线分隔多个字母
  • 类名采用单词首字母大写形式,即 Pascal 风格。
  • 常量命名时全部采用大写字母,可以使用下划线
  • 变量、函数名也是全小写字母,多个字母间用下划线_进行分隔
  • 使用单下划线_开头的模块变量或者函数是受保护的
  • 使用双下划线__开头的实例变量或方法是类私有的

Pycharm 常用快捷键

快捷键 作用
Tab键 跳制表域
Ctrl + / 代码注释
Ctrl + F 查找
Ctrl + R 替换
Alt + Enter 问题修复
Ctrl + Alt + L 代码格式化
Ctrl + D 复制当前光标所在行代码
Ctrl(Alt) + Shift + 上下方向键 上下移动光标所在行代码
Ctrl + G / Command + L 跳转到指定行:列
  • 帮助手册查找路径 菜单-> Help -> Keyboard Shortcuts PDF

基础语法

输入与输出
  • 输入函数:input()

  • 输出函数:print()

    • 指定分隔符

      在输出多个数据时,如果不想使用默认的空格做为分隔符,可以通过 sep 参数指定分隔符。

    • 指定结束符

      print 函数默认一次输出后,都会以换行符结束,下一次输出会重启一个新行输出

      print("Python", end="---")
      
函数定义与调用
  • 函数定义

    def function_name([parameter_list]): 
        ['''注释信息'''] 
        [function_body]
        return [result]
    
    • def: 自定义函数的关键字。
    • function_name: 函数名称,在调用函数时使用,命名需要符合标识符命名规则。
    • () : 函数的特征,用来书写参数列表。
    • parameter_list: 用来接收函数运行时所需的外部数据(此章节不讲解)。
    • ::Python 固定语法。
    • 注释信息:非必须部分,函数的注释内容,通常是说明该函数的功能、要传递的参数的作用等。
    • function_body:函数体,用来实现函数功能的逻辑代码。
    • return [result]: 用来结束函数或将函数运行结果返回
  • 函数调用

    function_name([parameters_value])
    
    • function_name:函数名称,要调用的函数名称,必须是已经创建好的(包括内建的和自定义的)。
    • parameters_value:参数列表,用来提供函数运行时使用的数据,可省略。
    • (): 函数的特征,参数列表可省略,但圆括号不能省略。
标识符

标识符是用来标识变量、函数、类、模块和其他对象的名称。

  • 标识符由英文字母、下划线_和数字组成,但不能以数字开头
  • 不能使用关键字
  • 区分大小写
  • 见名知意
变量

内置函数 id() 可以获取变量的内存地址,也就是这个变量在计算机内存中的唯一标识,通常是用一串数字表示。

数据类型

  • Python3 中标准数据类型有:

    • 基本数据类型

      • Number(数字)

      • String(字符串)

      • bool(布尔类型)

      • 复合数据类型(容器类型)

        • List(列表)
        • Tuple(元组)
        • Dictionary(字典)
        • Set(集合)
    • 空类型

      • None
  • Python3 根据数据的特性可分为:

    • 不可变数据(3 个):Number(数字)、bool(布尔)、String(字符串)、Tuple(元组);

    • 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

  • 数字类型:

    数字类型(Number) 包括整数(int)、浮点(float)数和复数(complex)

  • 布尔类型

    • 布尔类型只有两个值,即 TrueFalse

    • 常见的假值类型:

      • False

      • None

      • 数值中的零,包括 0、0.0、虚数 0。

      • 空序列,包括字符串、空元组、空列表、空字典。

  • 类型转换

    • 自动转换

      自动转换也称为隐式类型转换,程序在执行过程中自动完成,将数据精度低转换为数据精度高的类型。

    • 强制转换

      强制转换也称为显式类型转换,需要在代码中使用类型函数来转换。以下是常见强制转换函数

      • int(x):将 x 转换为整数。如果 x 是一个字符串,那么它必须是一个表示整数的字符串,否则将会抛出异常。

      • float(x):将 x 转换为浮点数。如果 x 是一个字符串,那么它必须是一个表示浮点数的字符串,否则将会抛出异常。

      • complex(x):将 x 转换为复数。如果 x 是一个字符串,那么它必须是一个表示复数的字符串,否则将会抛出异常。

      • bool(x):将 x 转换为布尔值。如果 x 是一个空对象、0、空字符串、空列表、空元组、空字典或者 False,那么将返回 False,否则将返回 True。

      • str(x):将 x 转换为字符串。如果 x 是一个对象,那么将会调用该对象的 str()方法,将其转换为字符串。

      • chr(x): 将一个整数转换为一个字符,虽然结果是一个字符,但其本质依然是一个字符串类型

运算符

运算符是用于进行各种运算操作的符号或关键词。

  • Python 语言常用运算符如下:

    • 算术运算符

    • 比较(关系)运算符

    • 赋值运算符

    • 逻辑运算符

    • 成员运算符

    • 身份运算符

    • 运算符优先级

  • 运算符,根据使用操作数的不同,可分为:

    • 单目运算符

    • 双目运算符

    • 三目运算符

  • 算数运算符

    运算符 描述
    + 加法 : 两个操作数相加
    - 减法 : 两个操作数相减
    * 乘法 : 两个操作数相乘
    / 除法 : 两个操作数相除,结果为浮点数类型
    % 取模 : 也称为求余运算符, 两个操作相除,取余数为计算结果
    ** 幂运算 :返回x的y次幂
    // 整除 : 两个操作数相除,取商,结果为整数类型|
  • 赋值运算符

    运算符 描述 实例
    = 简单的赋值运算符 c = a + b 将 a + b 的运算结果赋值为 c
    += 加法赋值运算符 c += a 等效于 c = c + a
    -= 减法赋值运算符 c -= a 等效于 c = c - a
    *= 乘法赋值运算符 c *= a 等效于 c = c * a
    /= 除法赋值运算符 c /= a 等效于 c = c / a
    %= 取模赋值运算符 c %= a 等效于 c = c % a
    **= 幂赋值运算符 c **= a 等效于 c = c ** a
    //= 取整除赋值运算符 c //= a 等效于 c = c // a
  • 关系运算符
    image

  • 逻辑运算符
    image

  • 成员运算符
    image

  • 身份运算符

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

    Python 对数字和字符串做了一些优化以提高性能和减少内存开销。以下是 Python 对数字和字符串做的一些优化:

    1. 整数池(Integer Pool):Python 会在程序运行时预先创建一些整数对象,并将其保存在整数池中。这样,在创建整数对象时,可以重用已存在的对象,而不是创建新的对象。这在一定程度上减少了内存开销。
    2. 字符串池(String Pool):对于较短的字符串,Python 会使用字符串池进行优化。字符串池是一个缓存区,保存着所有共享相同内容的字符串对象。当创建新的字符串对象时,Python 会首先检查是否已经存在相同内容的字符串对象,如果存在,则直接重用已有的对象,避免重复创建新的对象。

    image

    • is 和 == 的区别:

      • == 运算符: 只比较两个对象的值,相同返回 True,不同返回 False

      • is 运算符: 比较两个对象的id,相同返回 True,不同返回 False

  • 三目运算符

    [on_true] if [expression] else [on_false]
    
    • on_true: 条件为真时的结果
    • on_false: 条件为假时的结果
    • expression: 判断条件
  • 运算符优先级
    image

数据结构

字符串
  • 字符串是由引号包裹的任意字符组成的不可变序列,用于表示文本类型数据。字符串可以通过使用单引号双引号三引号来定义,用于表示文本信息,如姓名、消息等。

  • 转义字符在字符串中用于表示一些特殊字符或序列,以及插入难以直接输入的字符。

    常见的转义字符包括:\n 表示换行符,\t 表示制表符,\" 表示双引号,\' 表示单引号,\\ 表示反斜杠。

  • 下标是指从 0 开始的数字编号,也称为索引。

  • 常用字符串相关函数

    • len() 用来获取参数字符串的字符个数

    • count() 返回 strstring 里面出现的次数,如果 start 或者 end 指定则返回指定范围内 str 出现的次数 格式:count(str, start, end)

    • index() 检测 sub 是否包含在 string 中,如果 startend 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则抛出一个异常 格式:index(sub, start, end)

    • rindex() 作用同 index(),查找子串时从右侧查找,若找不到会抛出一个异常 格式:rindex(sub, start, end)

    • find() 检测 sub 是否包含在 string 中,如果 startend 指定范围,则检查是否包含在指定范围内,如果是返回开始的索引值,否则返回-1 格式:find(sub, start, end)

    • rfind() 作用同 find(),查找子串时从右侧查找,若找不到会抛出一个异常 格式:rfind(sub, start, end)

    • replace() 把 string 中的 old 替换成 new,如果 max 指定,则替换不超过 max 次. 格式:replace(old, new, max)

    • startwith() 检查字符串是否是以 prefix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:startwith(prefix, start, end)

    • endswith() 检查字符串是否是以 suffix 开头,是则返回 True,否则返回 False。如果 start 和 end 指定值,则在指定范围内检查. 格式:endwith(suffix, start, end)

    • isalpha() 如果 string 至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False

    • isdigit() 如果 string 只包含数字则返回 True 否则返回 False.

    • isalnum() 如果 string 至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False

    • isspace() 如果 string 中只包含空格,则返回 True,否则返回 False

    • isupper() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False

    • islower() 如果 string 中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False

    • istitle() 如果 string 是标题化的(所有单词首字符是大写)则返回 True,否则返回 False

    • capitalize() 把字符串的第一个字符大写

    • title() 返回"标题化"的 string,就是说所有单词都是以大写开始,其余字母均为小写

    • upper() 转换 string 中的小写字母为大写

    • lower() 转换 string 中的小写字母为小写

    • center() 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:center(width, fillchar)

    • ljust() 返回一个原字符串左对齐,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:ljust(width, fillchar)

    • rjust() 返回一个原字符串右对齐,并使用空格填充至长度 width 的新字符串,如果指定fillchar参数,则使用指定字符填充,fillchar参数长度只能为1 格式:ljust(width, fillchar)

    • strip() 删除 string 左右两侧的空白字符, 如果指定chars参数,则删除左右两侧指定的字符

    • lstrip() 删除 string 左边的空白字符, 如果指定chars参数,则删除左侧指定的字符 格式:lstrip(chars)

    • rstrip() 删除 string 左边的空白字符, 如果指定chars参数,则删除右侧指定的字符 格式:lstrip(chars)

    • split() 以 sep 为分隔符分割 string,如果指定 maxsplit 参数,则仅分割 maxsplit次 格式:split(sep, maxsplit)

    • splitlines() 使用换行符\n分割 string,如果指定 keepends 参数,则结果中会保留\n符号 格式:splitlines(keepends)

    • partition() 从 sep 出现的第一个位置起,把 string 分成一个3元素的元组 (string_pre_sep,sep,string_post_sep),如果 string 中不包含 sep 则 string_pre_str == string,其余元素为空字符串

    • rpartition() 从右向左 sep 出现的第一个位置起,把 string 分成一个3元素的元组 (string_pre_sep,sep,string_post_sep),如果 string 中不包含 sep 则 string_post_str == string,其余元素为空字符串

    • +号 将两个字符串连接生成一个新字符串, + 号两侧必须都是字符串

    • *号 将字符串重复N次后生成一个新字符串

    • join() 使用 string 连接可迭代对象中的所有元素,可迭代对象参数中的所有元素必须是字符串

    • encode() 使用 encoding 指定的字符集,对 string 进行编码,转换成二进制字符串

    • decode() 使用 encoding 指定的字符集,对 string 进行解码,转换成字符串对象, string必须是二进制字符串

    • 对字符串按指定的范围进行截取,得到一个子字符串,指定范围时,起始下标必须小于结束下标,且子字符串不包含结束下标

      格式:str[start: end: step]

元组