zoukankan      html  css  js  c++  java
  • python3 基础知识,掌握这些基础就够了

     

    一、软件安装,环境准备

    1. 安装python3运行环境
    2. 安装ipython:
      pip install ipython

      升级pip:  

    python -m pip install --upgrade pip

    1. 安装PyCharm,激活码可选购买

    二、python 基础

    1. 变量

    int:整形

    float:浮点型

    bool:布尔型,True(非0) False(0)

    complex:复数型,用于科学计算

    非数字型:字符串、列表、元组、字典

    1. 运算:

    +(加) 字符串、列表、元组均支持+合并

    –(减)

    *(乘) 字符串、列表、元组均支持*进行重复,字典不可以。

    **(取方)

    /(除)

    //(除取整)

    %(模)

    1. Pycharm快捷键:

    F7、F8 单步执行,

    F9 跑完程序, 

    shift + F9 debug模式运行

    ctrl+/ 注释、取消注释

    1. 常用函数:

    del 关键字删除变量后,变量不可使用。也可以用来删除列表中的数据。

    type()查看变量类型

    print()打印到控制台

    input() 获取输入

            示例:input(“请输入账号:”)

    str() 转换为字符串

    int() 转换为整形

    float() 转换为浮点

    关键字:输出所有关键字

    import keyword

    print(keyword.kwlist)

    pass 关键字:占位符,保证程序正常运行,可以进行占位。

    示例:if 1==1:

                        pass

    id()查看变量在内存中的地址

    1. 计算

    bool在计算时会转为数字 True(1),False(0)

    字符串 * int = 多个字符串重复

    字符串与非字符串之间不能使用其它运算符号

    1. 逻辑操作符

    and 并且

    • or 或者

    not 非

    in 是否在字符串、列表、元组、字典(只判断key)中

    not in 同上,取反

    is 内存地址相同判断

    is not 内存地址不相同判断

    >=

    == 与is的区别在于,比较内存中的值,而不是地址。

    !=

    <=

    1. 变量的格式化输出

    示例:

            yuanzu=(“hello”,19)

    printstr=“%s 的年龄是 %d” % yuanzu

    print(printstr)

    %s 字符串

    %d 有符号十进制整数

    %06d 按指定6位数显示的整数,不足的地方使用0补全

    %f 浮点数

    %.02f表示小数点后只显示2位

    %% 输出%

    示例:print("%s %d %05d %f %.02f %%" % ("哈哈哈",44,44,44.5555,44.555)

              结果:哈哈哈 44 00044 44.555500 44.55 %

    1. 变量函数命名规则:数字、字母、下划线组成,数字不能开头
    2. 关键字:

    import keyword

    print(keyword.kwlist)

    1. 条件判断:if elif else
    2. 三大流程:顺序、分值、循环
    3. 注释

    单行注释:# 单行注释

    多行注释:“”“注释内容”“”

    文档注释:在方法体后第一行

    1. 列表(数组)

    定义:name_list=[数据1,数据2 ]

    长度:len(name_list)

    增加:insert、append、extend(方法内的参数会拆分成单个字符append到列表中)

    删除:remove(如果参数不存在,则报异常)、clear、pop(弹出并删除)、del name_list[0]

    修改:name_list[0]=数据3

    查询:name_list[0]、count、index(如果参数不存在,则报异常)

    遍历:

    for n in name_list:

             print(n)

    排序:sort(正序),reverse(反序)

    删除列表中的空字符串:

     

    1. 元组

    定义:(数据1,)  (数据1,数据2)

    长度:len(name_list)

    方法:append、count、index(如果参数不存在,则报异常)

    修改:name_list[0]=数据3 元组不能修改,但可以修改元组引用内的数据。

    查询:name_list[0]

    遍历:

    for n in name_list:

             print(n)

    应用场景:

    1函数的参数和返回值

    2格式字符串,防止修改

    3让列表数据不被修改,更安全

    1. 元组与list互转

    元组=tuple(列表)

    列表=list(元组)

    1. 字典

    定义:dic={key:value,key:value}

            键必须唯一,且只能为字符串、数字或者元组。无序。

    长度:len(dic),统计键值对数量

    获取所有的键:keys()

    获取所有的值:values()

    获取所有的项:items()

    增加:dic[key3]=value3

    修改:与增加相同

    查询:dic[key](如果key不存在,则报错)

    删除:clear、pop(如果key不存在,则报错)

    合并字典:

            示例:dic2={key:value,key2:value2}

                   dic.update(dic2)

            注意:update方法会将相同的键进行更新,不同的键将进行合并。

    1. 字符串

    定义:’单引号或者双引号’

    长度:len()

    出现次数:count

    出现位置:index

    方法分类:

            判断类型:

    isspace 只包含空格( )

                   isalnum 字母或者数字

                   isalpha 字母

                   isdecimal全角数字,不能判断小数

                   isdigit 全角数字、(1)(unicode字符串)、u00b2,不能判断小数

                   isnumeric isdigit基础上,包含中文数字(示例:一千零一夜),不能判断小数

                   ……

            查找和替换:

                   startswith、endswith

                   find(如果不存在,返回-1)

                   rfind 从右侧开始查找

                   replace

            大小写转换:

                   upper

                   lower

                   swapcase

            文本对齐:

                   ljust 左对齐,并使用空格填充至指定长度

                   rjust 右对齐,并使用空格填充至指定长度

                   center 居中对齐

            去除空白:

                   lstrip

                   rstrip

                   strip

            拆分或者拼接

                   split 默认按照( )和空格拆分

                   splitlines 按照( )分割,返回包含各行的列表

                   join 多个字符串链接

    切片:

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

            倒序索引,从右向左依次递减 -1,-n

    示例:

           num=”0123456789”

           num[2:6:] #截取2-5 2345

           num[2:] #截取2-末尾 23456789

           num[0:6]或者num[:6] #截取开始-5 012345

    num[:] #截取完整字符串 0123456789

    num[::2] #开始-末尾,每隔一个字符截取 02468

    num[1::2] #1-末尾,每隔一个字符截取 13579

    num[-1] #最后一个字符 9

    num[2:-1] #从2开始到倒数第二个 2345678

    num[-2:] 从后往前截取89

    num[-1::-1] #从后往前截,步长为倒叙 9876543210

    1. 公共方法

    内置函数:

    len()

    del或者del()

    max(),如果是字典,则对key进行比较

    min(),同上

    1. for-else:

    for 变量 in 集合:

            循环体

    else:

            没有通过break退出循环,循环结束后会执行的代码

    1. TODO 注释

    # TODO(作者/邮件) 注释内容

    1. 重命名变量:定位光标到变量上,按shift+F6改名
    2. Linux上的shebang符号(#!)

    a.使用which python3获得路径

    b.在启动文件顶部添加:#! python路径

    c.增加可执行权限 chmod +x 文件路径

    1. 函数的调用是传入内存地址,函数的返回是返回内存地址。
    2. 局部变量和全局变量

    python中不允许直接修改全局变量的值,如果赋值,则会在函数内部定义一个局部变量。

    如果要给全局变量赋值,则需要使用global 变量进行显示申明。

    全局变量命名规则,使用g_或者gl_开头进行命名。

    1. 方法:可变参数方法定义,*+参数名为元组参数,**+参数名为字典参数

    def demo(num,*nums,**person):

            print(num)

            print(nums)

            print(person)

    demo(1)

    demo(1,2,3,4)

    demo(1,2,3,4,name=”小米”)

    demo(1,2,3,4,name=”小米”,age=18)//1为第一个参数,2,3,4为第二个参数,后面两个为第三个参数

    元组和字典拆包:上面的demo方法无法直接传入元组和字典,如果直接传入,会被当做元组或者字典的一部分。如果要传入元组,则需要使用拆包的方式。示例代码:

    a=(2,3,4)

    b={ name=”小米”,age=18}

    demo(1,*a,**b)

    三、导入包

    1. 同项目不同包名导入
    2. 不同项目引用导入

    四、面向对象

    1. 类和对象的关系
    2. 类的设计:类(大驼峰命名方法)、属性(小驼峰命名法)、方法(小驼峰命名法)
    3. dir()方法查询类的方法列表
    4. 类的定义与创建对象的语法

    示例:

    class 类名:

            def 方法():

                   pass

    变量=类名()

    1. self:类方法可以使用参数self进行对自身的指代。
    2. _init_方法(对象创建时调用)、_del_方法(对象销毁前调用)、_str_方法(返回对象的描述信息,print方法会自动调用)
    3. None关键字,相当于其它语言中的null
    4. 伪私有属性和私有方法,定义:定义时在前面加上两个下划线。外部一定要访问,则可以使用_类名__方法名。
    5. 继承语法:class 类名(父类名1,父类名2):多继承,父类不要有重名方法,应尽量避免使用多继承。
    6. 重写:

    定义相同方法名进行覆盖。

    方法1:可以使用super()对父类进行指代和方法调用。只能调用方法。

              方法2:使用父类名.方法名进行调用。只能调用方法。

    1. 私有属性和方法,子类对象不能直接访问。
    2. 类属性相当于java中的类全局静态字段。类属性是描述类的特征,不与具体对象相关。在继承中,会有一个向上查找机制,先在子类中查找,若找不到,然后在父类中查找。

    使用对象名.类属性赋值,会创建实例属性。如果使用的子类名,也会创建实例对象。

    1. 类方法,同java中的类静态方法。定义,在方法上面加上 @classmethod,方法参数中加上cls,方法类别可以使用cls来指代当前类。
    2. 静态方法。如果一个方法不需要访问类属性,也不需要访问对象属性,则可以定义为静态方法。

    定义,在方法上面加上@staticmethod

    1. 单例设计模式:

    重写__new__方法

    示例代码:

    instance = None
    
    def __new__(cls, *args, **kwargs):
        if cls.instance is None:
            cls.instance = super().__new__(cls)
            return cls.instance
    1. 异常捕获:

    try:

    exception 异常类型1:

    exception (异常类型2,异常类型3):

    exception Exception as result:

            print(“未知错误:%s” % result)

    1. 主动抛出异常 raise Exception(“异常”)
    2.  

    五、模块

    1. 导入模块 示例:import 文件名 as 别名,使用方式 别名.类名等
    2. 导入部分 示例:from 文件名 import 类名,使用方式 直接使用类名等
    3. 如果从两个不同的模块中导入相同的函数,后面的会覆盖前面导入的函数。
    4. 模块导入顺序,先从当前文件夹进行搜索,如果没有,则会从系统模块中进行导入。所以与系统重名的文件命名会覆盖系统的模块。可以使用 模块名.__file__查看模块的路径。
    5. 文件中的代码被导入时(import 行),如果没有缩进,则会都被执行一遍。
    6. if __name__==”__main__” ,当前文件直接运行,则为true,否则为false。
    7. 包是一个包含多个模块的特殊目录,目录下有一个特使的文件 __init__.py,报名的命名反射和变量名一致,小写字母+_组成。需要在 __init__.py中指定对外界提供的模块列表。

    模块列表示例:from . import 文件名

    外部使用示例:

      import 包名     

           包名.模块名.方法/类名

    1. 发布模块(了解即可)
      1. 创建setup.py文件
      2. 构建模块 python setup.py build
      3. 打包模块 python setup.py sdist
      4. 解压缩模块 tar zxvf 文件名
      5. 安装模块 python setup.py install
      6. 导入包名 imoprt 包名
      7. 安装模块 pip install 模块/包名
      8. 卸载模块 pip uninstall 模块/包名
      9.  
    2. pygame 第三方游戏模块
    pip install pygame

    六、文件操作

    1. open()
    2. read()
    3. write()
    4. close()

    示例代码:

    file = open("hm_class.py")
    print(file.read())
    file.close()
    print("over")
    1. open() 参数说明

        r 以只读方式打开

        w 以只写方式打开,如果文件存在,会覆盖,如果不存在,则创建。

        a 以追加方式打开,文件指针在文件末尾

        r+ 读写方式打开,文件指针在开头,如果文件不存在,则报错

        w+ 读写方式打开,如果文件存在则覆盖,不存在,则创建。

        a+ 读写方式打开,如果文件存在,则指针放在结尾,如果文件不存在,则创建新文件进行写入。

    1. readline 读取一行数据
    2. 小文件复制

    示例代码:

    file_read=open(“”)
    file_write=open(“”,”w”)
    file_write.write(file_read.read())
    file_read.close()
    file_write.close()
    1. 大文件复制

    使用部分读取,部分写入的方式。

             示例代码:

    file = open("","rb")
    file2 = open("hm_class2.py", "wb")
    while 1:
        text = file.read(1024)
        if not text:
            break
        file2.write(text)
    file.close()
    1. 文件或者目录的常用管理操作
      1. 导入os模块,实现对文件或者目录的操作
      2. rename() 重命名
      3. remove() 删除文件
      4. listdir() 返回当前文件夹下所有的文件夹和文件
      5. os.path.isdir(“”)判断是否为文件夹
      6. mkdir() 创建目录
      7. rmdir() 删除目录
      8. getcwd() 获取当前目录
      9. chdir() 修改工作目录 
  • 相关阅读:
    [WPF系列]基础学习(一) WPF是什么?
    [WPF系列]从基础起步学习系列计划
    [WPF系列]Adorner应用-自定义控件ImageHotSpot
    Windows Phone 8 开发必备资源
    WPF:数据和行为
    WPF触发器(Trigger)
    【WPF】Silverlight中的Action与Trigger
    【WPF】 Behavior
    Struts2 拦截器配置及使用
    在新建FileInputStream时使用当前相对路径或者绝对路径作为参数的问题
  • 原文地址:https://www.cnblogs.com/maomao999/p/10189568.html
Copyright © 2011-2022 走看看