Python基础学习

Python特点
    完全面向对象,函数、模块、数字、字符串都是对象
    标准库
    第三方模块
常见错误
    SyntaxError,invalid syntax,语法错误
    indentationError,缩进错误
解释器版本
    python,python3 xxx.py
shell:ipython
    交互式方式执行小的python代码
    支持自动补全,Linux下的命令
    ipython3,ipython
PyCharm
    编辑,调试功能
    项目,会新建一个.idea目录,用于保存项目相关信息
    第一次打开项目,耐心等待,
        想运行的话需要右键,然后run(Ctrl shift F10)
        正常一个项目就一个可执行的
    解释器版本设置,File/setting-project...
    项目文件名:小写字母,数字,下划线
代码规范
    复杂的操作,开始前若干行"""若干行"""
    不是一目了然的,2空格#注释
算数运算符
    /除
    //整除
    %取余数
    **乘方
    *可运用于字符串
程序执行原理
    运行之前保存于硬盘
    要执行需要加载到内存
    1.CPU把Python解释器复制到内存中(3.4m)
    2.解释器根据语法规则,从上向下让CPU翻译Python代码
    3.CPU执行翻译完成的代码
变量的使用
    使用前必须赋值,赋值以后才会被创建
    type可以查看一个变量的类型
    3.0版本只有int型
变量间的计算
    True对应数字1,False对应数字0
    字符串变量之间,+用于拼接,*重复
    数字型和字符串之间,* 以外的都不能用
变量的输入输出
    字符串变量 = input("提示信息")
    int(x),float(x)
    格式化输出:
        print("格式化字符串"%变量)
        print("格式化字符串"%(变量1,变量2....))
        %s
        %d,%06d整数位数,不足用0补全
        %f,%.2f小数点后显示两位
        %%,输出%号
变量命名
    区分大小写
    = 左右各保留一个空格
    word1_word2即user_name
if判断语句,tab和空格不要混用
    if(空格)判断条件:
        条件成立时,要做的事情
    elif(空格)判断条件:
        条件成立时,要做的事情
    else:
    and,or,not
随机数
    random.randint(12,20)#生成的随机数n:12<=n<=20,整数
while循环语句
    while(空格)判断条件:
        循环内容
        修改计数器
    i = 0,判断条件,i < n,即循环n次
break与continue
    print不想换行,end=""
    转义字符\
函数
    def 函数名():
        函数封装的代码
    PyCharm调试工具
        F8 stepover 把函数看做一行代码
        F7 stepinto    如果是函数会进入函数内部
    函数的文档注释
        函数定义上方和其他代码保留两个空行
        注释,
            函数定义下方连续三对引号
                选中函数名——小灯泡——Insert d s stub
                -文档说明在三个引号后面,以及针对各个形参的说明
        在函数调用的位置,CTRL+Q可以查看函数的说明信息
    函数的参数和返回值
    函数的嵌套调用
        一个函数调用另一个函数
模块
    每个py结尾的源文件都是一个模块
    import导入这个模块
    模块名.变量/模块名.函数的方式使用
    模块名也是一个标识符
    pyc文件,import导入的文件,生成的字节码
列表
    List,最频繁,即数组
    name_list = ["zz", "aa", "ss"]
    1.取值,0,1,2,name_list[0]
    2.取索引
        .index()#不存在会报错
    3.增加
        .appedn()#末尾增加数据
        .insert(1,"")#指定索引位置,增加参数
        .extend()#把其他列表的完整内容,追加到列表末尾
    4.删除
        .remove("数据")#删除指定数据,会删除第一个出现的数据
        .pop()#默认删除最后一个
        .pop(3)#指定要删除元素的索引
        .clear()#清空列表
        del方法,本质上是把一个变量从内存中删除
            del 列表[1]
            建议使用列表提供的方法
    5.统计
        len(列表变量名)#列表中元素的总数
        .count("查询数据")#查询数据在列表中出现的次数
    6.排序
        .sort()#升序
        .sort(reverse=True)#降序
        .reverse()#逆序,即反转
    7.迭代遍历,顺序的从列表中依次获取数据,
        for my_name in 列表变量:
            循环体
    8.应用场景
        存储同一种类型的数据(当然,列表可以存不同类型数据)
        通过迭代遍历,在循环体内部,针对每一项元素执行相同的操作
元组tuple
    多个元素序列,与列表类似,不过元素不能修改
    一串信息,数据之间用,分隔
    用()定义 
    只包含一个元素的元组,info_tuple = (50,)#数据后跟上一个逗号
    1.取值,使用索引,0,1,2,t_tuple[0]
    2.方法:.count()#统计出现次数
            .index()#取索引,已经知道数据内容,希望知道数据在元组中的索引
    3.统计元组中包含元素个数
        len(eg_tuple)    
    4.循环遍历,针对元组的循环遍历,需求并不是很多
        除非准确的知道其中的数据类型
    5.应用场景
        函数的参数和返回值,接收任意多个参数,一次返回多个数据
        格式字符串,格式化字符串后面的()本质上就是一个元组
            "%s年龄是%d" % info_tuple
        让列表不可以被修改,保护数据安全
            list(元组)#把元组转换成列表,希望对元组进行修改
            tuple(列表)#把列表转换成元组
字典
    除列表以外,最常用的数据类型
    通常用于描述一个物体的相关信息
    列表事有序(序:索引)的对象集合,字典是无序的对象集合
        使用print函数输出字典时,通常输出的顺序和定义的顺序不一致
    用{}定义,键值对(key: value),
        多个键值对用,分隔,键唯一,键常用字符串类型
        定义的时候,最好一个键值对一行,
    1.取值
        eg_dict["key"]
        取值的时候,如果指定的key不存在,程序会报错
    2.增加/修改
        eg_dict["new_key"] = new_value#增加
        eg_dict["exist_key"] = new_value#修改
        如果key不存在,会新增键值对,如果key存在,会修改已存在的键值对
    3.删除 
        .pop("key")
        删除指定键值对的时候,key不存在程序会报错
    4.统计键值对的数量
        len(eg_dict)
    5.合并字典
        .update(temp_dict)
        如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
    6.清空字典
        .clear()
    7.循环遍历,这种需求不多
        K是每次循环中,获取到的键值对的key
        for k in eg_dict:
            eg_dict[k]
    8.字典和列表的应用场景
        用一个字典的多个键值对,来描述一个物体的所有相关信息
        把多个字典放到同一个列表中,通过一个循环遍历,
            在循环体内部,针对每一个字典进行相同的操作
字符串
    用一对双引号定义(单引号也可以),以及转义\
    如果内部需要使用双引号,通常使用单引号定义
    索引,str[索引值]
    也可以使用for循环遍历每一个
        for char in str:
            print(char)
    1.常用操作
        len(字符串)#字符串长度
        .count("little")#统计某一个小字符串出现的次数
        .index("llo")#子字符串出现的位置,不存在程序报错
    2.判断是否只包含数字,常用.isdecimal()只包含数字返回True,
    3.查找和替换
        .startswith(str)#以指定的字符串开始
        .endswith(str)#以指定的字符串结束
        .find(str)#出现的索引位置,不存在返回-1
        .replace("old", "new")#会返回一个新的字符串,不会修改原有字符串的内容
    4.文本对齐
        .center()#注意,中文使用中文空格填充
        .ljust()
        .rjust()
    5.去除空白字符:空格,\r,\n,\t
        前面还有后面的空白字符去掉,只保留中间部分
        .strip()#去除左右
        .lstrip()#去除左侧
        .rstrip()#去除右侧
    6.拆分和连接
        .split()#默认使用空白字符
        .join()# " ".jion()
    7.字符串的切片
        字符串[开始索引:结束索引:步长]    
        包含开始索引的,不包含结束索引的
        截取到起始位置,或者末尾,就不需要指定
        倒数第一个字符索引为-1
        步长为-1,就是向左开始截取
             实现字符串的逆序:num_str[::-1]
容器类型公共方法:列表、元组、字典
    1.Python内置函数
        len(item)#容器中元素的个数
        del(item)#删除变量,关键字方式亦可
        max(item)#容器中元素最大值
        min(item)#容器中元素最小值"0"<"A"<"a"
        cmp(item1, item2)#3.0中被取消
    2.切片
        字典不支持
    3.运算符
        +,拼接,字符串、列表、元组,会生成一个新的列表
            .extend(item)在之前后面追加
            .append(item)item整个当成独立的元素插入
        *,重复,字符串、列表、元组,字典不支持因key唯一
        in成员运算符,字符串、列表、元组,字典判断的是字典的键
        not in
        <等符号,字符串、列表、元组
    4.完整的for循环语法
        for 变量 in 集合:

            循环体代码
        else:
            没有通过break退出循环,循环正常结束之后,会执行代码
变量的引用以及是否可变
    1.引用
        变量记录数据的地址,叫做引用
        数据在内存中,id(XX)查看内存地址
        函数的实参/返回值,是通过引用来传递数据的
    2.可变与不可变类型:内存中的数据能否被修改
        不可变类型:数字类型,字符串,元组
        可变类型:列表、字典
            不再对之前的数据的引用,改为对新赋值的数据引用
            字典中的key,只能使用不可变类型的数据
                因为要对key进行哈希,确保
    3.哈希(hash),hash(参数)
        提取数据的特征码
        接受一个不可变类型的数据作为参数
局部变量和全局变量
    1.函数不能直接修改全局变量的引用,
        如果函数内,定义同全局变量名称相同的变量,就创建一个局部变量,即Python中不允许直接修改全局变量的值
        不推荐使用全局变量
    2.修改全局变量
        global关键字告诉解释器后面的变量是一个全局变量
        global num
        num = 99
    3.全局变量定义的位置
        注意,在开发时,应该把模块中所有全局变量定义在所有函数上方,这样可以保证所有的函数都能够正常访问到每一个全局变量
    4.全局变量命名建议
        变量名前加g_或者加gl_前缀
    5.shift F6,全局修改变量名
代码结构示意图
    shebang#标识用哪一个解释器
    import 模块
    全局变量
    函数定义
    执行代码
函数的返回值和参数进阶
    1.函数返回元组
        让函数一次返回多个值,元组可以包含多个数据,
        return (val1, val2)
        返回的类型是元组,小括号可以省略
        return val1, val2
    2.函数接收元组
        result = func()
        result[0]    
        可以使用多个变量,一次接受函数的返回结果
        注意变量的个数和元组中元素的个数保持一致
        val1, val2 = func()
    3.面试题,交换两个数字
        解法一
            a = a + b
            b = a - b
            a = a - b
        解法二,Python专有
            a, b = (b, a)
            a, b = b, a#等号右边是元组,只不过把小括号省略
    4.函数内部通过方法修改可变参数
        通过列表调用列表的方法
        重要!!!
    5.面试题 += 
        列表变量调用 += 本质上是在执行列表变量的extend方法,不会修改变量的引用
        而 = + 就是先相加,再赋值
    6.缺省参数
        func(val=默认值)
        缺省参数之后不能再定义没有的,即带有默认值的缺省参数在参数列表末尾
        调用函数时,有多个缺省参数,需要指定参数名
    7.多值参数,参数的个数是不确定的
        参数名前增加一个*,可以接受元组,*args
        参数名前增加两个*,可以接受字典,*kwargs
        demo(num, *args, **kwargs)
    8.多值函数案例,计算任意多个数字的和
        def sum_num(*args):

            num = 0
            for n in args:
                num += n

            return n
    9.元组和字典的拆包
        将元组变量传递给*args
        将字典变量传递给 **kwargs
        def demo(*args, **kwargs):
            print()
        demo(元组, 字典)#这样会都传给args
        demo(*元组, **字典)#拆包语法,简化参数的传递
        相当于demo(把元组和字典里的东西全部拿出来)
递归
    1.结构
        循环条件
        递归出口
    2.使用
        在处理不确定的循环条件时格外有用,
            比如遍历整个文件目录的结构

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值