• Python基础汇总、


    python的优点

    1. 易于学习:Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
    2. 易于阅读:Python代码定义的更清晰。
    3. 易于维护:Python的成功在于它的源代码是相当容易维护的。
    4. 一个广泛的标准库:Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
    5. 互动模式:互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
    6. 可移植:基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
    7. 可扩展:如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
    8. 数据库:Python提供所有主要的商业数据库的接口。
    9. GUI编程:Python支持GUI可以创建和移植到许多系统调用。
    10. 可嵌入: 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。

    变量

    首先介绍下变量,变量是用于存储数据的标识符。在 Python 中,你可以直接给变量赋值,并且不需要提前声明变量的类型。Python 会根据赋值语句自动推断变量的类型

    1. a=10
    2. b='abc'

    python的最大特点是他与c/c+、java不同,他不需要用户提供变量类型,会自动判断变量类型。但这既是它的优点也是它的缺点,优点为方便性,缺点就是太灵活,不严谨,在项目内容易出错。

    变量的类型有整形(int)、字符串(Str)、列表(List)、元组(Tuple)、字典(Dictionary)、集合(Set)。

    python的类型有自动转换功能,而C/C++ java没有,当变量数据超过了int的取值范围时,如javaint大小为-21亿---21亿,会自动报错,而python会自动转换类型,将int转换为long甚至long long。所以python的类型也称为动态类型,能自动增长,而c/c++,java为静态类型

    运算符

    算术运算符

    +加 - 两个对象相加a + b 输出结果 30
    -减 - 得到负数或是一个数减去另一个数a - b 输出结果 -10
    *乘 - 两个数相乘或是返回一个被重复若干次的字符串a * b 输出结果 200
    /除 - x除以yb / a 输出结果 2
    %取模 - 返回除法的余数b % a 输出结果 0
    **幂 - 返回x的y次幂a**b 为10的20次方, 输出结果 100000000000000000000
    //取整除 - 返回商的整数部分(向下取整
    >>> 9//2
    4
    >>> -9//2
    -5

    比较运算符

    ==等于 - 比较对象是否相等(a == b) 返回 False。
    !=不等于 - 比较两个对象是否不相等(a != b) 返回 True。
    <>不等于 - 比较两个对象是否不相等。python3 已废弃。(a <> b) 返回 True。这个运算符类似 != 。
    >大于 - 返回x是否大于y(a > b) 返回 False。
    <小于 - 返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量 True 和 False 等价。(a < b) 返回 True。
    >=大于等于 - 返回x是否大于等于y。(a >= b) 返回 False。
    <=小于等于 - 返回x是否小于等于y。(a <= b) 返回 True。

    赋值运算符

    =简单的赋值运算符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

    位运算符

    &按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0(a & b) 输出结果 12 ,二进制解释: 0000 1100
    |按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1。(a | b) 输出结果 61 ,二进制解释: 0011 1101
    ^按位异或运算符:当两对应的二进位相异时,结果为1(a ^ b) 输出结果 49 ,二进制解释: 0011 0001
    ~按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1 。~x 类似于 -x-1(~a ) 输出结果 -61 ,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
    <<左移动运算符:运算数的各二进位全部左移若干位,由 << 右边的数字指定了移动的位数,高位丢弃,低位补0。a << 2 输出结果 240 ,二进制解释: 1111 0000
    >>右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数a >> 2 输出结果 15 ,二进制解释: 0000 1111

    逻辑运算符

    andx and y布尔"与" - 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值。(a and b) 返回 20。
    orx or y布尔"或" - 如果 x 是非 0,它返回 x 的计算值,否则它返回 y 的计算值。(a or b) 返回 10。
    notnot x布尔"非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。not(a and b) 返回 False

    成员运算符

    in如果在指定的序列中找到值返回 True,否则返回 False。x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
    not in如果在指定的序列中没有找到值返回 True,否则返回 False。x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

    身份运算符

    isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
    is notis not 是判断两个标识符是不是引用自不同对象x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

    其他:python的整形是可以和布尔类型相加的

    字符串

    字符串是 Python 中最常用的数据类型。我们可以使用引号 ( ' 或 " ) 来创建字符串。

    Python 要求字符串必须使用引号括起来,使用单引号也行,使用双引号也行,只要两边的引号能配对即可

    1. a="abc"
    2. b="abc"

    Python 访问子字符串,可以使用方括号 [] 来截取字符串,字符串的截取的语法格式如下:

    变量[头下标:尾下标]

    索引值以 0 为开始值,-1 为从末尾的开始位置。

    字符串拼接

    Python 使用加号(+)作为字符串的拼接运算符,例如如下代码

    1. a="abc"
    2. b="edf"
    3. c=a+b
    4. print(c)

    列表

    列表(list)用来存储不同的数据类型,使用 [ ]

    a=['ac','bd','re']
    1. print(a[1]输出第二个元素
    2. printf(a[-1])输出最后一个元素
    3. print(a[::-1])倒序输出
    4. print(a * 3)输出三遍
    1. for i in a:
    2. print(a[i])
    3. 循环遍历
    1. a.append('bbb') 在a后添加bbb
    2. a.insert(1,'ccc')在下标为1的元素插入ccc
    3. a.pop() 删除最后一个元素
    4. a.remove('bbb') 删除指定元素
    5. del a 删除列表
    6. a[:2] = ['c','d'] 通过切片给前两个元素重新赋值
    7. a.count('a') 查看出现次数
    8. service.index('a') 最小索引值
    9. service.index('a',1,3) 从1-3中查找【第二个元素和第三个元素之间】【不取上限】
    1. a.sort() 排序
    2. a = list(range(10)) 生成0-9,将其转换为列表形式
    3. print(a)
    4. import random
    5. random.shuffle(a) 随机打乱
    6. print(a)

    元组

    元组是静态,大小固定,不可以对元素进行增加,修改或删除的操作

    1cmp(tuple1, tuple2)
    比较两个元组元素。
    2len(tuple)
    计算元组元素个数。
    3max(tuple)
    返回元组中元素最大值。
    4min(tuple)
    返回元组中元素最小值。
    5tuple(seq)
    将列表转换为元组。

    字典

    格式:变量 = {key1 : value1, key2: value2…}

    字典中键不能重复,是唯一的,但是值可以重复

    字典增加

    • 字典[新的key] = 值
    • 如果key在原字典中已经存在则为修改原key对应的值字典删除
    a['newlee']='abc'

    删除字典

    • del 查找到字典的键所对应的值进行删除
    • clear()清空字典所在数据空间中的多有键值对
    • pop:删除指定键所对应的键值对,会将删除的键值对所对应的值进行返回
    • popitem: 删除随机一个键值对,尝试后发现总是删除最后一个,会将删除的键值对以元组的形式进行返回
    1. del dict1['age'] 删除指定键值对
    2. dict1.clear()清空键值对
    3. print(dict2.pop('name')) 删除指定键值对并返回值
    4. dict2.popitem() 随着删除键值对

    查询字典

    • 使用键查询值:字典[key]
      • 查询的键不存在时则报错
    • get:字典.get(key)
      • 查询的键不存在时,不报错,可以默认返回None,或者手动设置返回内容
    • keys:获取所有的键
    • values:获取所有的值
    • items:获取所有的键值对组成的元组·
    1. a.get('a')
    2. a.kets()
    3. a.valuse()
    4. a.items()

    遍历字典

    1. 使用for循环对字典进行遍历,默认获取的是字典的每一个键
    2. for i in dict1:
    3. print(i)
    1. 获取的是字典的每一个键
    2. for i in dict1.keys():
    3. print(i)
    1. 获取的是字典的每一个值
    2. for i in dict1.values():
    3. print(i)
    1. 获取的是字典中每一个键值对组成的元组
    2. for i in dict1.items():
    3. print(i)
    1. 分别拿到字典的键和值
    2. for key, value in dict1.items():
    3. print(key, value )

    判断语句

    if假如
    elif又或
    else否则
    pass空语句,保持结构完整

    循环语句

    while 循环在给定的判断条件为 true 时执行循环体,否则退出循环体。
    for 循环重复执行语句
    嵌套循环你可以在while循环体中嵌套for循环

    函数

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
    • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
    1. def printme( str ):
    2. print str
    3. return

    • 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
    • 方法:类中定义的函数。
    • 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
    • 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
    • 方法重写:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。
    • 局部变量:定义在方法中的变量,只作用于当前实例的类。
    • 实例变量:在类的声明中,属性是用变量来表示的,这种变量就称为实例变量,实例变量就是一个用 self 修饰的变量。
    • 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个Dog类型的对象派生自Animal类,这是模拟"是一个(is-a)"关系(例图,Dog是一个Animal)。
    • 实例化:创建一个类的实例,类的具体对象。
    • 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
    .类的构造方法__init__()
    1. def __init__(self, realpart, imagpart): #必须要有一个self参数,
    2. self.r = realpart
    3. self.i = imagpart

    在类的内部,使用 def 关键字来定义一个方法,与一般函数定义不同,类方法必须包含参数self, 且为第一个参数,self代表的是类的实例。

    继承

    class [子类]([父类]):

    1. #类定义
    2. class people:
    3. #定义基本属性
    4. name = ''
    5. age = 0
    6. #定义私有属性,私有属性在类外部无法直接进行访问
    7. __weight = 0
    8. #定义构造方法
    9. def __init__(self,n,a,w):
    10. self.name = n
    11. self.age = a
    12. self.__weight = w
    13. def speak(self):
    14. print("%s 说: 我 %d 岁。" %(self.name,self.age))
    15. #单继承示例
    16. class student(people): #student为子类,people为父类
    17. grade = ''
    18. def __init__(self,n,a,w,g):
    19. #调用父类的构函
    20. people.__init__(self,n,a,w)
    21. self.grade = g
    22. #覆写父类的方法
    23. def speak(self):
    24. print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
    25. s = student('ken',10,60,3)
    26. s.speak()
    • _private_attrs:两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。在类内部的方法中使用时 self.__private_attrs。
    • __private_method:两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。self.__private_methods。
  • 相关阅读:
    WPS增加正则处理函数,简直如虎添翼
    MySQL -常用SQL查询语句(创建,更新,查询,删除等)
    电容笔哪个厂家的产品比较好?平价电容笔推荐
    搭建Java开发环境
    大话超越菜鸟C#的实践入门进阶必知点,深入浅出解析 33 算法逻辑入门 抽象现实世界之大佬打一眼看不明白的代码,才是够技术含量的代码类
    【Java】java: 无效的标记: -parameters
    定时任务(干货版)
    正则表达式基础知识
    Unity中Shader实现UI去色功能的实现思路
    JS绘制极坐标颜色渐变
  • 原文地址:https://blog.csdn.net/weixin_57535054/article/details/134086321