python超详细知识点汇总整理

1、注释以及编码格式的声明

  • 单行注释:# (后面放上被注释的内容)
  • 多行注释:字符段落的上下加上三引号 举个例子: ''' ...'''
  • 编码格式的声明:#coding:utf-8 或者是 #coding=utf-8

2、代码编写格式和一些琐碎说明

  • 同一级别的代码块所尽量必须相同 并且不要在行尾加上分号

  • python里面的if等固定的词组叫做保留字 不叫关键字

  • python是一种动态类的语言,变量的类型可以随时变化,随着赋值的内容的变化而变化

  • 内置函数type()可以返回变量类型 直接放print里面打印即可

  • 内置函数id()可以获取变量的内存地址,直接单独放在一行自动打印输出,不同名字的变量赋相同值的话指向的地址也会是一样的

  • str()函数用于将数值转换成字符串 方便输出

  • print只能输出字符串类型的,其他类型变量必须转成字符类型的才能被print出来

  • 字符串中使用单双引号必须在同一行 三引号内的字符序列可以分布在连续的多行上面 并且保留格式

3、输入输出

  • 变量名=数据类型(input("提示文字")),可以直接在屏幕输入
  • 输出print(输出内容) 里面还可以是例如if的表达式 并且一般一条print输出之后会自动换行,如果想要不换行print(a,b) 中间用逗号分开,print(a if a>b else b)
  • 在print()里面 " ,end=" " 双引号里面这部分表示不换行输出,下一条print和此条输出语句在一行一起输出

4、运算符

  • python里面的除法"/"之后 保留的可以是浮点数 要想舍去浮点部分应该用"//"这个除法符号
  • "**" 两个星号 表示幂运算 返回x的y次方
  • 逻辑运算符在这里面不是符号表示了 是"and" "or" "not" 表示

5、条件表达式

  • python里面的if语句的条件判断不需要加上括号,但是在判断语句后面要加上冒号,比如

    if a>b: r=a

  • 还可以放在一行里表示 比如:r=a if a>b else b [C语言里面是a= b>0? b:c]

    中间条件判断为true则返回if语句左边的值 否则返回右边的值

  • 多选一的情况在C里面有if - else if - else,但是在python里面"多选一表达方法":if - elif -else,if和elif都需要表达式判断真假,也就是说后面都要跟着判断表达式,而else不需要判断

6、循环体-for循环

  • for 循环变量 in 对象: 循环体 举个例子:for i in range(101): result+=1

  • range()是一个内置函数,用于生成一系列连续的整数 多用于for循环,格式range(start,end,step)

    • start:用于指定计数的起始值,可以省略,省略的话表示从0开始
    • end:用于指定计数的终止值(但不包括该值),不能省略
    • step:指定两个数之间的间隔,可以省略,省略的话就表示为1

    在使用此内置函数的时候,如果只有一个参数表示的是end,被省略的start表示0,如何有两个参数表示的是start和end,有参个参数的时候,最后一个参数才表示步长

  • 也可以遍历字符串 for ch in string:

  • 注意for语句最后也要加冒号

  • 最后加上end="",可以避免print自动换行,print(str(j),end='')

7、序列

  • 索引可以是正数也可以是负数,正数的所以最左边是0,索引是复数的时候最右面是-1,从右往左是从-1开始到...

  • 切片:

    如果指定了步长,那么就按照该步长遍历序列元素,否则一个个的遍历

    ​ 注意:这块end部分,截至部分是按照总个数来排序的,也就是说如果说是6,那么这个截至的位置就是从第一个元素开始数六次所到的数

  • 求序列长度是len() 别记错了

8、列表

  • 可以使用list()直接将range()函数循环出来的结果转换成列表 list(range(10,20,2)) ---> [10,12,14,16,18]

  • 可以通过del删除列表 用法:del 列表名

  • 使用for循环和enumerate()可以实现同时输出索引值和元素内容 for index item in enumerate(列表名):

  • 添加元素:借助append,用法:列表名.append(添加的对象)

  • 修改元素:直接重新赋值即可

  • 删除元素:借助索引,直接用del 列表名[索引值],也可以用列表对象的remove()方法,列表名.remove(删除内容)

  • 对列表的统计计算:

    • count() 用于获取指定元素在列表中出现的次数 用法:列表名.count(对象内容)
    • index()获取指定元素在列表中首次出现的位置 用法:列表名.index(对象内容)
    • sum(列表名[start,end]) 用于求列表中元素的和,一般默认没参数时是从0到最后
  • 排序:

    • 列表对象的sort()实现 列表名.sort(reverse=True),true表示降序 false表示升序,默认也是升序

    • 内置sorted()函数实现 sorted(reverse=True)升降序表示方法一样 ,只不过这个是直接用,不用列表名调用了

      新列表名=sorted(被排序的列表名,reverse=True)

9、元组

元组用于保存程序中不可修改的内容,元组中的元素不可以单独修改,而列表可以任意修改

  • 创建元组和创建列表类似,创建元组用小括号(),创建列表用中括号[],但是实际上小括号不是必须要加上的,只要用一组值用逗号分开,python就会认为这是个元组,比如:a="你好","2020","这个世界"
  • 注意区分:
python 复制代码
verse = ("一片冰心在玉壶",)  //这是元组
verse = ("一片冰心在玉壶")	   //这是字符串
  • 可以使用tuple(range()直接将range()函数循环出来的结果转换成列表 list(range(10,20,2)) ---> (10,12,14,16,18)

  • 元组不能单独地对元组中某一个值进行更改,但是可以对整个元组进行修改

  • **元组中如果只有一个元素,一定要在最后加上逗号!**不加上的话就会被当成一个字符串了

10、字典

  • 是一个无序的可变序列,并且只能通过键值来读取而不能通过索引来读取,字典名={'键名1':'元素的值','键名2':'值'} 注意:键值必须唯一,字典中的键是不可变的,所以不能用列表作键值

  • 字典的创建还有一种方法:借助已有数据快速创建字典,用dict()方法

    1. 字典名字=dict(zip(list1,list2))

    注释:zip()函数,用于将多个列表或者元组对应位置的元素组合为元组,并返回包含这些的zip对象

    python 复制代码
    >>> keys = ['a', 'b', 'c']
    >>> values = [1, 2, 3]
    >>> dictionary = dict(zip(keys, values))
    >>> print(dictionary)
    {'a': 1, 'b': 2, 'c': 3}
    1. 也可以直接在dict()里面,加入许多块类似 键名='元素的值' 的内容

    2. 或者直接添加dict.fromkeys(list1),只是包含键名的字典,创建值为空的字典

    3. 也可以借助字典和元组创建字典:dict{元组名字:列表名字},这样的话表示一个元组代表一个键

      注释:这时候用的是大括号,并且中间用冒号表示,还有就是键不能用列表表示

  • 字典的打印,一种是直接利用print(字典['键值'])

    要么就是通过get('键值','键值对应为空的时候的返回值')

11、集合

集合最主要的作用就是去重

  • 集合名字={元素1,元素2,...},因为set是无序的,所以每次输出时元素的排列顺序可能与创建时不同

  • 也可以用set()函数创建集合,比如集合名=set(【列表元素1,列表元素2,...】),或者在里面直接放一个字符串,但是他会自动去掉重复元素

  • 表示空集合的时候只能借助set函数实现,不能直接只是用个大括号表示,因为这表示空字典

  • 添加元素是借助add()函数,直接集合名字调用然后在括号里填充添加内容

  • 删除元素,remove(),clear(),pop()

  • 集合间的运算,& 表示交集,| 表示并集,- 表示差集,^ 表示对称差集

12、字符串

  • 通常使用:变量=字符串名字.encode('GBK(或者其他编码格式)'),表示将旧字符串转换成按照新要求的这个编码格式
  • decode('编码格式'),表示解码,在设置解码所用的编码格式时,需要与编码时采用的字符编码一致
  • 使用"+"可以进行字符串之间的拼接,但是不允许字符串直接与其他类型的数据拼接,比如和整性"num=123",可以转换成字符串后进行拼接:比如 +str(num)
  • 要想算字符串的实际长度,应该在len()函数中,放入的是字符串名字.encode('编码格式'),而不是单一的字符串名字
  • spilt('被分割的符号字符','被分割的次数'),被分割的次数不指定表示全部分割,最后切分成字符串列表
  • lower()和upper()用于将字符串中字母的大小写转换

13、函数

  • 需要一个关键字 def 函数名(参数):,然后下面放函数体,别忘了冒号

  • 这里的值传递(形参改变后实参不变化)和引用传递的区分是区别在,形参如果是可变对象 比如列表的时候,就是引用传递,而形参是字符串这样的不可变对象,就是值传递*

  • python里面函数的参数可以设置默认值 比如 def a(height,person='路人'):

    注意:为形参设置默认参数的时候,默认参数指向的一定是不可变对象,比如NONE或者字符串,不能是列表之类的

  • 可变参数:

    1. 形式参数名字:可以让函数接受多个参数,但是注意,如果是多个参数的话实际上是将他们放进了一个元组中,所以,如果想将多个参数都输出,应该借助for循环

      如果将一个前面定义好的列表当实际参数放进函数中去,应该在列表名字前面加上号,比如a(*list)

    2. 形式参数名字:这次不是放在元组了,是放在字典里

  • python在定义全局变量的时候,这个变量只要在函数外面定义的,就是全局变量,在函数体中也可以访问到

    当局部变量(函数体内定义的变量)和全局变量重名时候,对函数体的变量进行赋值后,不影响函数体的变量

  • 在函数体内变量用global关键字修饰后,该变量也变成了为全局变量

  • 匿名函数

    result = lambda [参数] :表达式 ,举个例子:result = lambda r:math.pi×r×r (求圆的面积),打印的时候

    print( result® )

    在使用匿名函数的时候需要定义一个变量,用于调用lambda表达式

14、类

创建类后通常会创建一个_ init _() 方法。类似java中的构造方法,但是这个方法必须包含一个self参数,并且必须是第一个参数

因为该方法调用的时候会自动传递实际参数self,因此当__ init __() 【前后两个双下划线】只有一个参数的时候,在创建类的实例的时候,就不需要指定实际参数了 eg: 实例类名=类名(),括号中不用填放参数

  • 在python中 还可以通过类名动态的为类和对象添加属性,比如:类名.新属性名="这是一个新属性" 之后就可以直接用了

    python 复制代码
    #直接,类名.新属性名="这是一个新属性" 
    Geese.beak = "收拾收拾"
  • 注意:在类中的定义的方法(实例方法),如果这些实例方法想要调用类属性,必须加上类名字 eg:Geese.number

  • 在python中定义私有属性和保护属性不像C++或者java中直接用private等关键字声明属性了,在这里直接借助下划线的数量和不同位置来声明。

    eg:

    1. 在前面加上单下划线:(_foo),表示protect(保护类型),只允许类本身和子类访问,但不能用"from module import" 语句导入

    2. 在前面加上双下划线:(__foo),表示private(私有类型),只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过如下方法访问:

      "类的实例名._类名__xxx"
      

在这里直接借助下划线的数量和不同位置来声明。

eg:

  1. 在前面加上单下划线:(_foo),表示protect(保护类型),只允许类本身和子类访问,但不能用"from module import" 语句导入

  2. 在前面加上双下划线:(__foo),表示private(私有类型),只允许定义该方法的类本身进行访问,而且不能通过类的实例进行访问,但是可以通过如下方法访问:

    "类的实例名._类名__xxx"
    
  • 继承的时候是加一个括号,class 子类名(基类名)
相关推荐
神仙别闹29 分钟前
基于java的改良版超级玛丽小游戏
java
梧桐树042931 分钟前
python常用内建模块:collections
python
Dream_Snowar39 分钟前
速通Python 第三节
开发语言·python
黄油饼卷咖喱鸡就味增汤拌孜然羊肉炒饭1 小时前
SpringBoot如何实现缓存预热?
java·spring boot·spring·缓存·程序员
Data跳动1 小时前
Spark内存都消耗在哪里了?
大数据·分布式·spark
暮湫1 小时前
泛型(2)
java
超爱吃士力架1 小时前
邀请逻辑
java·linux·后端
南宫生1 小时前
力扣-图论-17【算法学习day.67】
java·学习·算法·leetcode·图论
转码的小石1 小时前
12/21java基础
java
李小白662 小时前
Spring MVC(上)
java·spring·mvc