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 只包含空格(\t \n \r)

               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 默认按照(\r \n \t)和空格拆分

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

               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() 修改工作目录 

 

posted @ 2018-12-28 11:34  MyFirstHome  阅读(1318)  评论(0编辑  收藏  举报