python基础学习

特点:

可读性强

简洁

python是由C语言开发的,但是不再有C语言中指针等复杂数据类型,python的简洁性降低了开发难度

面向对象

免费和开源、

可移植性和跨平台

python是通过缩进空格来组织代码的,不能随便添加空格

行连接符 /

变量指向对象的地址

在python中变量也称为对象的引用,变量存储的就是内存的地址

栈存放变量 ,推放对象

声明变量不需要声明类型

如果对象没有被引用就会被垃圾回收

python类型

整型

浮点型

布尔型

字符串型

运算符:

+,-,*,/,//(整数除法),%(模),**(幂)

divmod()除法,获得结果和余数

二进制,八进制,十六进制,10进制

int()  取整

整数可以有多大

int 32位

Long 64位

在python3中整数不做大小限制

获取当前时间

time.time()

逻辑运算符

or and not

is判断是否是同一个对象

is not 判断是不是引用不同对象

整数缓存问题

python仅仅对比较小的树进行缓存([-5,256)),在pycharm或者保存为文件执行时,结果不同范围为[-5,任意正整数)

python字符串是不可变的

没有字符只有字符串

unicode编码

字符换成unicode   ord()

数字转字符   chr()

在末尾添加内容

end=任意字符

print("hahah",end="eee")

name=input("请输入名字:")

str()转为字符串

字符串可以通过数组来进行获取

str = "hello"

str[0],str[-1]负号表示反向搜索

字符串不可变,可以使用replace进行修改

a.replace(要替换的字符,替换后的字符);会对该变量进行全局替换

slice(初始偏移量:终止偏移量:步长)

a.slice(:)不写取所有字符

a.slice(2:)从2到末尾

a.slice(:2)从头开始到2

数字为负反向提取

split()分割

如果不传递参数就默认按照空白字符换行

join()

字符串预留:仅保留一份相同且不可变字符串的方法,不同的值被存放在字符串的驻留池中,python支持字符串驻留机制,对于符合标识符规则的字符串(仅包含下划线,字母和数字)会启用字符串驻留机制

==比较的是值是否相等

is比较的是地址

in、not in:判断某个字符串是否在字符串中

常用查找方法:

len(a)

a.startwith('')

a.endwith()

a.find()第一次出现指定字符串的位置

a.rfind()最后一次出现指定字符串的位置

a.count()指定字符串出现的次数

a.isalnum():所有字符是否全是字母或数字

a.strip()去除字符串首尾指定信息,不传去除空格

字符串排版

center(多少个字符,字符内容)在中间添加

ljust(多少个字符,字符内容)在末尾添加

rjust(多少个字符,字符内容)再头部添加

isalnum()

isalpha()

isdigit()

isupper()

islower()

占位符:  {0}  {1}  %

str.format(占位符要显示的内容)

填充和对齐

^,<,>  居中,左对齐,右对齐

{0:*^8}这个占位符需要用*占位到8位

修改原有字符串

这样声明:

io.StringIO("dddd")

 |:按位或

 &:按位与

 ^:异或操作

 序列:一块用来存放多个值的连续的内存空间

 字符串,列表,元组,字典,集合


 

创建列表:

a = []

list()创建

list(range(10))

range创建整数列表

range(start,end,step)

end结尾数字必选,其他可选,start默认为0,step默认为1

推导式:

a = [x*2 for x in range(5)]

a = [x*2 for x in range(100) if x%9==0]

列表添加

append()  创建新的列表对象

+可以进行列表拼接

extend() 不创建新的列表对象

insert(位置,元素)插入元素

乘法扩展

3*[1,2,3]

列表删除

remove 删除首次出现的指定元素不存在抛出异常

pop 默认删除最后一个元素,返回删除的元素

del 删除指定元素

index(指定元素,开始,结尾)返回指定元素的第一次索引

排序默认正序排列

sort()修改原有的列表顺序

倒序排列

sort(reverse=True)

打乱顺序:

import random

random.shuffle()

sorted()排序不对原列表进行操作,生成一个新的列表

reversed()返回迭代器 不对原数组操作

max()

min()

sum()

元组:不可变序列,不能修改元组中的元素

通过()创建

tube = (1,2,3)

字典:键值对无需可变序列

创建{},dict()

dict = {“name":"array","age":18};

dict = dict(name="array",age=18);

dict = dict([("name","array"),("age",18)])

获取.get(键,不存在时显示什么值)

zip创建

k = ["name","age"]

v = ["array",18]

dict = dict(zip(k,v))

通过fromkeys创建值为空的字典

dict = dict.fromkeys(["name","age"])

a.items()列出所有键值对

dict.keys()

dict.values()

len()

修改字典

dict[key] = 修改的值

字典b覆盖字典a

字典a.update(字典b)

删除

del删除自定键值对

clear删除所有键值对

pop删除钉钉键值对传入key,并返回删除的键值对

popitem()随机删除键值对,并返回删除的键值对

序列解包

x,y,z = (1,2,3)

底层是散列表

空间换时间


 

循环

while 语句:

    xxxx

zip并行迭代

names = {"arr1","arr2"}

ages = {18,19,20}

jobs = {"老师","程序员"}

for name,age,job in zip(names,ages,jobs)

    print("{0}---{1}---{2}".format(name,age,job))

列表推导式

表达式 for x in 列表


 

函数:

def name():

    ****

```  定义多行字符串  ```

global 变量名  声明全局变量

locals()输出局部变量

globals()输出全局变量

在python中参数的传递都是引用传递,对于不可变对象传递的时候也是地址传递,当给参数赋值的时候,会断开初始的引用创建一个新的值,将引用指向新的值

可变对象:字典、列表、集合、自定义的对象等

不可变的对象:数字、字符串、元组、函数

copy()浅拷贝

deepcopy()深拷贝

可变参数:

*param:将多个参数放在param元组中

**param:将多个参数放在param字典中

lambda表达式:是一个匿名函数

格式

lambda arg1,arg2....:表达式

eval函数:可以用来执行一个字符串

嵌套函数:函数内部定义函数

nonlocal 声明外层局部变量

在调用类创建对象时调用了两个方法

__new__() 用于创建对象我们不用显示定义

__init__() 构造方法,我们需要自己定义

dir()可以获取对象所有属性方法

isinstance(s,Student) 前面对象是否是后面类的实例

type 模具类 所有的类都是他的子类

类属性

类方法是从属于类对象的方法,类方法通过装饰器  @classmethod来定义

@classmethod

def 类方法名(cls [形参列表]:

   函数体

__del__  析构方法,用于实现对象被销毁时所需的操作,比如释放对象占用的资源

可调用方法 __call__

python中没有方法重载

装饰器

@property可以将一个方法的调用方式变成属性调用

面向对象

封装

隐藏实现的细节,只对外暴露方法

继承

子类具有父类的特性

多态

同一个方法因为调用对象的不同而产生不同的行为

mro()或者属性__mro__可以输出这个类的继承层次结构

super()代表父类的定义 等于父类的类

组合:

在A类的构造函数中传入B类的实例将实例挂载到self上

has用组合,is用继承

工厂模式:根据不同的参数创建不同的类

单例模式:只有一个实例

模块:一个py文件就是一个模块

使用模块:

import 模块1,模块2.。。。

使用:

模块名.变量、函数、类。。。。。

导入模块的相关数据:

from 模块 import 变量,函数,类

__main__ 可以获取当前模块名称 如果是当前执行模块结果为__main__

from 模块 import *

如果添加了全局变量__all__ *就不再是导入全局的功能会导入__all__中的变量  python3 中不太提倡


 

python中的包:在python中一个文件夹就是一个包,一个文件就是一个模块

文件夹中必须包含__init__.py  初始化模块 导入就会执行

模块发布

1.将模块所在路径,手动加入到sys.path中

2.将自定义模块,发布到系统目录中

1.sys.path.append(绝对路径)

2.

   确定要发布的模块目录结构

   |--setup.pu

   |--package

      |

      --自定义模块

    setup的编辑工作

       setup()

    构建模块

       python setup.py build

    发布模块

       python setup.py sdist

自定义模块的安装

解压,进入文件夹,然后执行命令   python setup.py install

也可指定安装路径  python setup.py install --prefix=安装路径

暴力安装:

直接复制到site-packages

异常

try:

except ***

except ***

except Exception:  最大异常:BaseException

except (Exception,ValueError,ZeroDivisionError) as e:

   print(type(e))


 

try:

  ****

except 异常 as 变量:

else:

    没有异常,执行的代码

finally:

    最终一定要执行的代码

自定义异常

class 异常类(BaseException):

    ***


 

抛出异常类

raise 异常类

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值